Installation de Rundeck
Pour ceux qui ne connaissent pas Rundeck, Rundeck est un logiciel libre permettant l’automatisation de l’administration de serveurs appelés nodes. Cette automatisation se fait sur des projets via des taches qui sont composées de jobs.
Ces taches sont composées de workflows permettant de gérer les conditions d’exécution et les erreurs. Les jobs Rundeck peuvent être exécuté sur les nodes via une connection SSH ou WinRM. Les jobs peuvent être des scripts, des programmes écrits dans le langage de votre choix, mais aussi des playbooks Ansible. C’est donc une alternative à Ansible Tower ou AWX. La gestion d’Ansible est native, mais il faut tout de même l’installer, ainsi que toutes les collections.
Rundeck permet une gestion très fine des droits de chacun des
utilisateurs via un système RBAC
et peut être connecté à un AD/LDAP.
Démarche d’automatisation de l’installation de Rundeck
Toujours le même principe. Je pars d’une feuille vierge avec comme objectifs :
- gestion des upgrades/downgrades facilement
- Utiliser une simple base H2
- Ajouter de la persistance sur les données via un simple partage Nfs.
- Pas d’installation via Docker.
Pour écrire le playbook Ansible, j’ai tout simplement transposé la procédure
d’installation disponible sur le site de la documentation de
Rundeck ↗.
J’ai fait le choix d’utiliser les packages war
pour le déploiement pour sa
simplicité de mise en oeuvre.
Ecriture du Vagrantfile
Du classique :
Ecriture du playbook
On est très proche de celui utilisé que j’ai utilisé pour
Nexus. Le versioning est géré
par un lien symbolique rundeck
pointant sur le déploiement d’une version
spécifique. Cela permet de gérer l’upgrade et le rollback facilement. Le
package est au format war, qui est en fait un fichier zip pris en
charge par java.
Si l’installation s’est mal passée vous pouvez la relancer en mettant
force_install à true
. Ne pas oublier de le remettre à false par la suite.
Installation sur une machine du home Lab avec Terraform
La aussi nous sommes très proches de ce que j’ai utilisé pour nexus. Mis à part le nom de la vm, la mac address le nombre de cpu et de mémoire. Changez-les en fonction de votre besoin.
Nouveauté : j’ai trouvé la solution pour récupérer l’adresse IP. Il faut
ajouter qemu_agent = true
dans la déclaration de la machine.
Pour obtenir l’adresse IP, il faut pour le moment relancer la commande
terraform refresh
.
Démarrage de la VM
Le playbook se lance directement depuis terraform :
Il faudra attendre quelques minutes (une dizaine). Mais tout devrait être configuré ! Pour éviter d’attendre j’ai écris ce billet sur le temps de perdu en build
Ouvrez votre navigateur sur l’adresse que vous avez défini : https://rundeck.robert.local ↗. Les identifiants de connexion sont admin/admin.
Plus loin
Le code source de l’ensemble est disponible sur gitlab ↗
Reste à faire :
- Installation des collections Ansible
- Créer les inventaires et les playbooks Ansible dans le répertoire /data/ansible (à créer)
Je documenterai dans les prochains temps comment utiliser rundeck avec Ansible et voir aussi comment l’intégrer dans un CI gitlab. Ca semble être faisable, il y a la gestion des webhooks et une CLI est disponible.
Pour les impatients je vous laisse parcourir la documentation ↗ qui est plutôt complète.