PostHeaderIcon 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

 

tuto | sauvegardez vos instances rundeck

 

 

4) Supervisez vos jobs Rundeck

Monitoring | Superviser vos jobs rundeck

 

5) Purger les logs d’exécutions Rundeck

Script | Purger les logs d’exécution Rundeck

 

 

image_print

8 réponses à to “tuto | Installez et configurez rundeck (ordonnanceur opensource)”

  • John says:

    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

  • Vincent says:

    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

  • Madao says:

    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!!!

  • Cédric H says:

    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

  • DECOUVREUR says:

    Il faut être sudoer

    Et permettre de lancer une commande sudo sans mot de passe. Pour cela, avec visudo, utiliser NOPASSWORD

  • alain R says:

    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

Laisser une réponse à Vincent