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
Bonjour Vincent,
Très bon tuto. Bref et précis.
Merci.
Petite question sur l’historisation des exécutions de Job dans RunDeck. As-tu exploré cette fonctionnalité ?
Plus précisément, sais-tu d’il est possible de customiser l’ihm de reporting des exécutions de jobs?
Par exemple, je voudrai pouvoir avoir une historisation des exécutions pour un job de déploiement qui exécute un playbook ansible avec des paramètres en entrée sur :
– l’inventory utilisé
– la version de l’application à déployer
– …
L’idée est d’avoir par exemple un reporting qui s’affiche comme un tableau avec :
– colonne pour la date/heure
– colonne pour user ayant lancé l’exécution
– colonne pour le status de l’exécution
– colonne pour le nom du job
– colonne pour l’environnement déployé
– colonne pour version déployée (c’est une des données passées en paramètres lors du lancement du job Rundeck)
Dans tous les cas, si tu as une idée de comment faire ça m’intéresse.
Merci,
John
Bonjour John,
Je n’ai pas vraiment exploré cette fonctionnalité. Pour consulter l’historique de mes jobs, la fonction « activities » me suffit.
Je pense que ton besoin est très spécifique par rapport aux fonctionnalités proposées par Rundeck.
Dans ton cas, un petit DEV s’impose. L’API de Rundeck est très bien conçu.
Cdlt
Merci pour ta réponse.
Je vais explorer l’API pour voir les possibilités
Bonjour Vincent !
Votre tutoriel est génial (comme tous et vos commentaires aussi)
Vous faites la fierté de la communauté openSource!
C’est grâce à des personnes comme vous que l’open est vraiment un univers super à arpenter. Moi qui m’initie depuis quelques temps, c’est toujours un réel plaisir de trouver ce genre de site.
Bonne continuation!!!
Merci pour votre message encourageant
Bonjour,
Et merci pour ces différents Tuto.
Voila, je suis admin novice et je me lance dans quelques tests avec Rundeck.
Une chose simple à réaliser (dans l’idée) me bloque pourtant. Je tente d’exécuter une commande « sudo ».
Pour le moment, je tente un commande « sudo ls /home » mais point moyen d’y arriver.
Et pas moyen de trouver une réponse simple sur le net. Savez-vous comment puis-je y parvenir ?
Merci et bonne journée,
Cédric
Il faut être sudoer
Et permettre de lancer une commande sudo sans mot de passe. Pour cela, avec visudo, utiliser NOPASSWORD
Bonjour
je suis novice avec rundeck déja installé et fonctionnel
Les jobs semblent se lancer mais rien ne se passe et ils sont killés au bout d’un temps. La seule erreur que j’ai trouvé c’est dans « Acess Control » qui dit ACLPolicy format validation failed
par avance merci pour votre aide