tuto | Installez et configurez rundeck (ordonnanceur opensource)
Article publié le 14 Août 2017
Article mis à jour le 17 Janvier 2018
J’ai eu l’occasion de tester pas mal d’ordonnanceur et j’ai remarqué que la plupart du temps les solutions du marché sont onéreuses, difficile à mettre en place et dur à maîtriser.
C’est pour ces raisons que j’ai été impressionné par la solution Rundeck.
Cet ordonnanceur open-source est extrêmement simple à mettre en place et à administrer. De plus énormément de plugins sont disponible ce qui permet de bénéficier d’un paquet de fonctionnalités supplémentaire (intégration d’Ansible, etc…)
1) Installation
Sous Debian/Ubuntu:
Installez Java:
apt-get install openjdk-8-jdk
Télécharger le paquet DEB sur le site officiel de Rundeck et installez le.
dpkg -i <nom du paquet>
Sous RedHat/Centos:
Installez Java:
yum install java-1.8.0-openjdk
Installez Rundeck
rpm -Uvh http://repo.rundeck.org/latest.rpm
yum install rundeck
Une fois l’installation terminée, démarrez le service rundeck:
service rundeckd start
Pour accéder à l’interface d’administration, connectez vous àl’URL suivante: <IP ou nom de la machine>:4440
Login et mot de passe par défaut: admin/admin
Si vous avez des difficultés à vous authentifiez (erreur 404 après avoir saisi les identifiants), lisez la suite de ce tutoriel.
2) Configuration
2.1) Paramétrage de la base de donnée
Par défaut, Rundeck utilise une base de donnée SqlLite. Il est préférable d’utiliser une base de donnée MySQL afin d’éviter de futures problèmes de performances:
# Sous Debian/Ubuntu
apt-get install mysql-server*
# Sous RedHat/Centos
yum install mysql
Authentifiez vous sur votre base mysql en root
mysql -uroot -p<votre password>
Créons ensuite la base de données rundeck:
CREATE database rundeck;
CREATE USER ‘rundeck’@’localhost’ IDENTIFIED BY ‘rundeck’;
GRANT ALL PRIVILEGES ON rundeck.* TO ‘rundeck’@’localhost’;
FLUSH PRIVILEGES;
Utilisez un mot plus sécurisé bien évidemment 😉
Éditez ensuite le fichier /etc/rundeck/rundeck-config.properties et modifiez les lignes suivantes:
grails.serverURL=http://<IP ou DNS de votre machine>:4440
dataSource.dbCreate = update
dataSource.url = jdbc:mysql://localhost/rundeck?autoReconnect=true
dataSource.username = rundeck
dataSource.password = rundeck
dataSource.driverClassName=com.mysql.jdbc.Driver
Redémarrez ensuite rundeck:
service rundeckd restart
2.2) Génération clés SSH
Afin de lancer un job sur une machine spécifique rundeck le protocole SSH.
Il est donc nécessaire de générer une clé privée via la commande « ssh-keygen » et de la coller dans le répertoire /var/lib/rundeck/.ssh
ssh-keygen
mkdir /var/lib/rundeck/.ssh
cp id_rsa /var/lib/rundeck/.ssh
chown -R rundeck:rundeck /var/lib/rundeck/.ssh
La clé publique (le fichier avec l’extension « .pub » généré par la commande ssh-keygen) sera a coller sur chaque machine cible dans le fichier authorized_keys du user système qui exécutera le job.
2.3 Création de votre premier job
Connectez-vous sur l’interface WEB de rundeck (<IP ou nom de la machine>:4440) et authentifiez vous (admin/admin par défaut).
Cliquez sur le bouton new projet afin de créer votre premier projet.
Renseignez le nom de votre projet et cliquez sur le bouton « create » en laissant tous les autres paramètres par défaut:
Cliquez ensuite sur le bouton « create a new job »:
Indiquez tout en haut de la page le nom de votre job et positionnez vous ensuite sur l’encadré « add a step ».
C’est à ce niveau que tout se joue!
Vous pouvez lancer une commande ou exécutez un script sur une machine distante comme l’exemple ci-dessous.
La partie matched nodes correspond aux machines sur lequelles vous voulez exécutez vos jobs/workflow. Par défaut seul localhost est paramétré. Pour rajouter une machine vous devez éditer le fichier
/var/rundeck/projects/<nom de votre projet>/etc/resources.xml et ajoutez vos machines en respectant la synthaxe XML suivante:
<project>
<node name= »nom de votre machine 1″ description= »votre description » tags= » » hostname= »<adresse ou ip de votre machine » osArch= »amd64″ osFamily= »unix » osName= »Linux » osVersion= »votre distrib » username= »user qui execute votre job sur votre machine »/>
<node name= »nom de votre machine 2″ description= »votre description » tags= » » hostname= »<adresse ou ip de votre deuxième machine » osArch= »amd64″ osFamily= »unix » osName= »Linux » osVersion= »votre distrib » username= »user qui execute votre job sur votre machine »/>
</project>
Enregistrez vos modifications et normalement de nouveaux nodes devraient apparaître (Si ce n’est pas le cas rafraîchissez la page).
Vous avez désormais les bases pour vous lancer. Rundeck est un ordonnanceur très complet et il me serait impossible de vous expliquer chaque fonctionnalité. L’interface étant très intuitive, il vous sera très facile de trouver les fonctions dont vous avez besoin.
3) Sauvegardes/restaurations
4) Supervisez vos jobs Rundeck
5) Purger les logs d’exécutions Rundeck