Ordonnanceur centralisé Rundeck

Objectifs

installer un serveur d’ordonnancement Rundeck ;
créer un premier projet et une tâche simple.

Rundeck est un ordonnanceur centralisé open source (licence Apache) écrit en Java.

Depuis l’interface de Rundeck, il est possible de gérer les différents travaux (commandes ou scripts) à exécuter sur les serveurs distants.

Fonctionnalités :

  • Ordonnancement des tâches selon un scénario ;

  • Exécution de scripts/tâches distantes à la demande ou de manière planifiée ;

  • Notifications ;

  • Interface CLI (ligne de commande) et API.

Rundeck peut être intégré aux autres outils de gestion de configuration comme Puppet, Ansible et d’intégration continue comme Jenkins, etc.

La connexion avec les hôtes clients est gérée en SSH.

Installation

Rundeck utilisant le protocle SSH pour se connecter aux systèmes distants, un compte avec les droits sudo est nécessaire sur chacun des stations clientes.

  • sur Debian 8 (Jessie) :

Rundeck étant écrit en Java, l’installation du JDK est nécessaire :

# apt-get install openjdk-7-jdk

Rundeck peut être téléchargé puis installé :

# wget http://dl.bintray.com/rundeck/rundeck-deb/rundeck-2.6.7-1-GA.deb
# dpkg -i ./rundeck-2.6.7-1-GA.deb
  • Sur CentOS 7 :

Rundeck étant écrit en Java, l’installation du JDK est nécessaire :

# yum install java-1.8.0

Rundeck peut être téléchargé puis installé :

# rpm -Uvh http://repo.rundeck.org/latest.rpm
# yum install rundeck

Configuration

Par défaut, Rundeck n’est configuré en écoute que sur l’adresse de boucle interne (localhost).

Si vous ne souhaitez pas mettre en place un proxy inverse (Apache, Nginx ou HAProxy), éditez les fichiers /etc/rundeck/framework.properties et /etc/rundeck/rundeck-config.properties et remplacer localhost par l’adresse IP du serveur, pour mettre en écoute Rundeck sur son interface réseau :

Modification du fichier /etc/rundeck/framework.properties
framework.server.url = http://xxx.xxx.xxx.xxx:4440
Modification du fichier /etc/rundeck/rundeck-config.properties
grails.serverURL=http://xxx.xxx.xxx.xxx:4440

Remplacer xxx.xxx.xxx.xxx par l’adresse IP publique du serveur.

Rundeck est ensuite lancé par systemctl :

# systemctl start rundeckd
# systemctl enable rundeckd

L’interface d’administration de Rundeck est accessible depuis un navigateur internet à l’adresse http://your_server:4440.

Utiliser RunDeck

Le compte par défaut pour se connecter à l’interface web est admin (mot de passe : admin). Pensez à changer le mot de passe le plus rapidement possible.

DEVOPS 030 001 welcome
Figure 1. La page d’accueil de RunDeck

Créer un projet

Un nouveau projet peut être ajouté en cliquant sur le lien Nouveau projet.

DEVOPS 030 002 create projet
Figure 2. L’assistant de création de nouveau projet Rundeck

Vous devez fournir au minimum un nom de projet.

Dans la section Resource Model Source, cliquer sur le bouton Edit et choisir Require File Exists `, puis cliquer sur `Save.

Dans la section Default Node Executor, choisir password pour l’authentification par SSH (pour une meilleure gestion de la sécurité, l’utilisation d’une clef SSH est recommandée).

Cliquer sur Create pour créer le projet.

Créer une tâche

Le serveur est prêt à recevoir une première tâche. Cette tâche consiste en une connection SSH pour lancer une commande distante.

  • Cliquer sur Create a new job et saisir un nom pour la tâche.

DEVOPS 030 003 new job
Figure 3. L’assistant de création de tâche de RunDeck

Il va falloir fournir à RunDeck le mot de passe de l’utilisateur distant permettant de se connecter au serveur ainsi que le mot de passe sudo pour lancer la commande. Pour cela :

  • Ajouter une option

Cliquer sur Add New Option.

DEVOPS 030 004 new option

Donner un nom pour l’option (par exemple sshPassword) et une valeur par défaut qui correspond à votre mot de passe.

Dans le champ Input Type, choisir Secure Remote Authentication et mettre Required à Yes.

Répéter l’opération avec l’option sudoPassword.

Dans la section Add a Step, choisir Command. Fournir la commande dans le champ Command. Par exemple :

sudo "top -b -n 1 | head -n 5"

Cliquer sur Save puis Create pour finaliser la nouvelle tâche.

Pour appliquer cette tâche à un système distant (appelé noeud), éditer le fichier de configuration du noeud :

vi /var/rundeck/projects/your_project_name/etc/resources.xml

Ajouter à la ligne commençant par localhost : ssh-authentication="password" ssh-password-option="option.sshPassword" sudo-command-enabled="true" sudo-password-option="option.sudoPassword", pour activer l’authentification par SSH et fournir les valeurs des options pour l’authentification.

Retourner dans l’interface web est executer la tâche.

Le serveur RunDeck est prêt à recevoir vos projets d’ordonnancement.