===== Installation d'un logiciel d'automatisation de tâche serveurs Rundeck =====
{{:systeme:rundeck:rundeck.jpg?nolink&150 |}}Un outils que beaucoup de gens connaissent c'est ''crond'', il vous permet d'automatiser des tâches sous Linux , mais vous pouvez rencontrer certain problème le suivit de vos tâches par exemple. \\
En effet, il est facile de suivre un serveur, mais quand vous devez suivre plus 300 tâches sur une multitude de serveurs, cela peut être un travail fastidieux. \\
RunDeck est un outil d’automatisation de tâches open source, livré avec un cli et une interface web qui vous simplifie la gestion de tâches serveur. \\
Voici, les caractéristique du logiciel Rundeck : \\
* Une API Web, permettant de demander l’exécution de tâches via d’autres outils
* Exécution de commande distribuée ou de script
* La connexion aux serveurs se fait par SSH par défaut (par clé)
* Possibilité d'organiser un workflows en plusieurs étapes
* Exécution de tâches planifiées (syntaxe crond)
* Une console web
* Stratégie de contrôle d'accès basée sur les rôles avec prise en charge de LDAP/ActiveDirectory
* Historiques et journaux d'audit
* Des plugins qui lui permette de s'intégrer avec des services externes (nexus repository, Saltstack, ansible, kerberos, redmine, puppet, jenkins, amazon EC2, ...)
* Outils d'interface de ligne de commande
* Open-Source sous licence Apache et auto-hébergé
Je vais vous montrer comment mettre en place ce logiciel sous Debian. \\
~~READMORE~~
==== Installation des dépendances ====
Comme Rundeck est développer en java, il vous faudra forcement l'environnement Java. \\
La dernière version 2.10 étant compatible avec java 8, il vous faudra installer cette version. \\
Pour debian 9 "strecth", pas de problème :
apt-get install openjdk-8-jdk
Pour ceux qui n'auraient pas upgrade et qui seraient toujours en debian 8 "jessie", il vous faudra activer les backports:\\
Éditer votre fichier "sources.list" :
vim /etc/apt/sources.list
Puis, ajoutez la ligne suivante:
deb http://ftp.fr.debian.org/debian jessie-backports main
Mettre à jours les dépôts de votre serveur :
apt-get update
Vous pouvez installer l'environnement java 8:
apt-get install open-jdk-8-jdk
==== Installation de rundeck ====
Nous allons ajouter le dépôt dans notre serveur :
apt-get install dirmngr
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 379CE192D401AB61
echo "deb http://rundeck.bintray.com/rundeck-deb /" > /etc/apt/sources.list.d/pkg_rundeck.list
Mettre à jours les dépôts de votre serveur :
apt-get update
Puis l’installation de Rundeck:
apt-get install rundeck rundeck-cli
Il faut savoir que Rundeck est fourni avec une base embarquée, mais je vous recommande d'installer un gestionnaire de base de données, cela simplifiera vos sauvegarde, réplique de données, etc. \\
Dans cette article, j'ai choisis MariaDB/MySQL, vous pouvez choisir un autre SGBD, [[http://rundeck.org/docs/administration/setting-up-an-rdb-datasource.html|rundeck fournit une documentation pour ceux qui utiliserai un autre SGBD (comme par exemple postgresql)]]. \\
Il y a une particularité pour MariaDB il vous faudra la version [[https://downloads.mariadb.org/mariadb/repositories/#mirror=babylon-fr&distro=Debian&distro_release=stretch--stretch&version=10.2| 10.2]]. \\
Voici, l'installation avec Debian 9, sur le lien vous pourrez retrouver une documentation sur d'ancienne version de debian ou autres d'ailleurs.\\
Prérequis, mise en place du dépôts :
apt-get install software-properties-common dirmngr
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64] http://fr.mirror.babylon.network/mariadb/repo/10.2/debian stretch main'
Mettez à jours vos dépôts :
apt-get update
Maintenant, l'installation :
apt-get install mariadb-server
Si vous obtenez cette erreur ''ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded''. \\
J'ai obtenu cette erreur suite à une migration partielle de la base MariaDB.\\
Voici, comment je l'ai résolu: \\
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot
Restauration d'une méthode de mot de passe normal et fonctionnel :
update user set plugin="mysql_native_password";
Puis, sortez de MariaDB:
quit;
Et redémarrez MariaDB :
/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start
Puis, dans MariaDB, nous allons créer la base :
mysql -u root -p
MariaDB [(none)]> create database rundeck;
Nous allons accorder l'accès à un nouveau login et spécifier le nom d'hôte à partir duquel le serveur (dans mon cas localhost) Rundeck se connectera.
grant ALL on rundeck.* to 'rundeckuser'@'localhost' identified by 'PASSWORD';
==== Configuration de Rundeck ====
Vous devez maintenant configurer Rundeck pour vous connecter à cette base de données, comme décrit précédemment. \\
Mettez à jour le fichier ''rundeck-config.properties'' :
dataSource.url = jdbc:mysql://localhost/rundeck?autoReconnect=true
dataSource.username=rundeckuser
dataSource.password=PASSWORD
dataSource.driverClassName=com.mysql.jdbc.Driver
Vous pouvez modifier l'option ''grails.serverURL'' du fichier ''rundeck-config.properties'' pour que l'interface web réponde :
grails.serverURL=http://rundeck.ksh-linux.info:4440
Mettez le service rundeckd au démarrage de votre distribution:
update-rc.d rundeckd defaults
Connectez-vous sur le lien renseigné dans l'option ''grails.serverURL'' et voila ça devrai fonctionné, dans mon cas http://rundeck.ksh-linux.info:4440 \\
Pour le login/mot de passe c'est admin, pour changer, voir ajouter des utilisateurs. \\
Regarder le fichier ''realm.properties''.\\
Vous avez le choix vous pouvez laisser en claire le mot de passe dans le ficheir ou faire ce qui suit pour avec un hash : \\
Génération du hash:
java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password admin PASSWORD
Voici, le résultat :
PASSWORD
OBF:1iff1i7i1l6r1mrf1mrn1l6j1i8g1ier
MD5:319f4d26e3c536b5dd871bb2c52e3178
CRYPT:adagMaydjUEBg
Choisissez un des hashs et ajoutez le dans le fichier ''realm.properties'' comme cela :
admin: MD5:319f4d26e3c536b5dd871bb2c52e3178,user,admin,architect,deploy,build
Nous venons de changer le mot de passe du login admin.\\
Vous pouvez interfacer rundeck avec un annuaire LDAP/Active directory, [[http://rundeck.org/docs/administration/authenticating-users.html| la doc est claire et bien faite]]
Il y a aussi la possibilité de mettre en place des ACL, [[http://rundeck.org/2.9.1/administration/access-control-policy.html|la documentation rundeck est plutôt bien faite]]
==== Comment améliorer cela ====
**Il est possible d'activer la partie SSL de rundeck, j'ai préférer décharger le traitement de la connexion SSL en utilisant un proxy SSL apache2. ** \\
=== Configuration de rundeck ===
Modifiez le fichier ''rundeck-config.properties'' :
grails.serverURL=http://127.0.0.1:4440
Modifiez le fichier ''profile'' en particulier la ligne commençant par ''RDECK_JVM'', il faut que ça ressemble à cela **(surtout la fin)** :
RDECK_JVM="-Djava.security.auth.login.config=$JAAS_CONF \
-Dloginmodule.name=$LOGIN_MODULE \
-Drdeck.config=$RDECK_CONFIG \
-Drundeck.server.configDir=$RDECK_SERVER_CONFIG \
-Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \
-Drundeck.server.serverDir=$RDECK_INSTALL \
-Drdeck.projects=$RDECK_PROJECTS \
-Drdeck.runlogs=$RUNDECK_LOGDIR \
-Drundeck.config.location=$RDECK_CONFIG_FILE \
-Djava.io.tmpdir=$RUNDECK_TEMPDIR \
-Drundeck.server.workDir=$RUNDECK_WORKDIR \
-Dserver.http.port=$RDECK_HTTP_PORT \
-Dserver.http.host=127.0.0.1"
Installation du serveur web:
apt-get install apache2 openssl
Activation des modules ''proxy'', ''proxy_http'', ''rewrite'' et ''ssl'' :
a2enmod proxy
a2enmod proxy_http
a2enmod ssl
a2enmod rewrite
Il vous faudra créer votre hôte virtuel, pour cela nous allons éditer un fichier de configuration dans le répertoire ''/etc/apache2/sites-available'', je l'appel ''rundeck.conf'' ::
Servername rundeck.ksh-linux.info
ProxyRequests Off
proxyPreserveHost On
ProxyPass / http://127.0.0.1:4440/
ProxyPassReverse / http://127.0.0.1:4440/
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}/ [END,QSA,R=301]
Order deny,allow
Allow from all
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/rundeck.bilendi.net-error.log
CustomLog ${APACHE_LOG_DIR}/rundeck.bilendi.net-access.log combined
Puis, la partie SSL: \\
Je donne l'étape de création d'un certificat auto-signé, mais vous pouvez utiliser aussi let's encrypt :
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
Il faudra créer un nouvel hôte virtuel dans ''/etc/apache2/sites-available'', je l'appel ''rundeck-ssl.conf'' :
Servername rundeck.ksh-linux.info
ProxyRequests Off
proxyPreserveHost On
ProxyPass / http://127.0.0.1:4440/
ProxyPassReverse / http://127.0.0.1:4440/
Order deny,allow
Allow from all
SSLEngine on
SSLCertificateFile /chemin/vers/votre/cacert.pem
SSLCertificateKeyFile /chemin/vers/votre/privkey.pem
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/rundeck.bilendi.net-error.log
CustomLog ${APACHE_LOG_DIR}/rundeck.bilendi.net-access.log combined
Activez vos hôtes virtuels :
a2ensite rundeck.conf
a2ensite rundeck-ssl.conf
Redémarrer les services:
/etc/init.d/rundeckd restart
/etc/init.d/apache2 restart
Et voila vous pouvez vous connecter à votre rundeck, dans mon cas https://rundeck.ksh-linux.info
Des questions/commentaires n’hésite pas