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 :
Je vais vous montrer comment mettre en place ce logiciel sous Debian.
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
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
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, 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 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
ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded
. /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';
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, la doc est claire et bien faite
Il y a aussi la possibilité de mettre en place des ACL, la documentation rundeck est plutôt bien faite
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.
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
::
<VirtualHost *:80> 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] <proxy "*"> Order deny,allow Allow from all </proxy> LogLevel warn ErrorLog ${APACHE_LOG_DIR}/rundeck.bilendi.net-error.log CustomLog ${APACHE_LOG_DIR}/rundeck.bilendi.net-access.log combined </VirtualHost>
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
:
<VirtualHost *:443> Servername rundeck.ksh-linux.info ProxyRequests Off proxyPreserveHost On ProxyPass / http://127.0.0.1:4440/ ProxyPassReverse / http://127.0.0.1:4440/ <proxy "*"> Order deny,allow Allow from all </proxy> 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 </VirtualHost>
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