Installer Rundeck avec MySQL

Rundeck est un logiciel libre permettant l'automatisation d'administration de serveurs (GNU/Linux, Mac OS X et Windows) via la création de jobs ou tâches.
Source : Wikipedia

Dans cet article nous allons voir de façon sommaire comment installer Rundeck sous Debian 9 (Stretch) et comment configurer son backend avec MySQL.

1) Installation de Rundeck

Pour installer Rundeck on va commencer par vérifier un minimum de prérequis :

  • 4 GB RAM
  • 20 GB hard disk
  • Database Mysql, Mariadb, Postgres, Oracle.

Pour plus de détails sur les prérequis RTFM (Read the fucking manual).

Nous aurons aussi besoin de Java 8, donc sous Debian exécuter la commande :

apt-get install openjdk-8-jdk-headless

Ensuite on va ajouter la source qui va bien :

echo "deb https://rundeck.bintray.com/rundeck-deb /" | tee -a /etc/apt/sources.list.d/rundeck.list
curl 'https://bintray.com/user/downloadSubjectPublicKey?username=bintray' | apt-key -

Évidemment, on n'oublie pas d'installer :

apt-get update
apt-get install rundeck

Maintenant on va éditer ce fichier de configuration :

vi /etc/rundeck/rundeck-config.properties

Et adapter cette ligne :

grails.serverURL=http://localhost:4440

Même si ce n'est pas obligatoire, je vous conseille de modifier également ce fichier :

vi /etc/rundeck/framework.properties

On va modifier ces lignes et les adapter à notre machine :

framework.server.name = localhost
framework.server.hostname = localhost
framework.server.port = 4440
framework.server.url = http://localhost:4440

Enfin on peut démarrer le service :

systemctl start rundeckd.service

Rundeck met un certain temps à démarrer, donc on va scruter le log du service :

tail -f /var/log/rundeck/service.log

Et attendre patiemment le message suivant :

Grails application running at http://localhost:4440 in environment: production

Il ne vous aura pas échappé que nous avons modifié le paramètre "grails.serverURL", pourtant la modification n'est pas visible dans ce log :-( rassurez-vous, c'est normal mais je n'entrerais pas plus dans le détail ici.

Voilà, l'installation de base est terminée. Pour un environnement de test c'est suffisant, mais si l'on souhaite mettre Rundeck en production, il va falloir paramétrer une vraie base de données pour le backend. Comme nous l'avons vu dans les prérequis nous avons le choix des armes, mais dans cet article je ne parlerais que de la configuration de MySQL et plus précisément de MariaDB puisque je suis sous Debian 9 (Stretch).

2) Installation et paramétrage de MySQL

Si vous n'avez pas de base MySQL, il suffit de l'installer :

apt-get install default-mysql-server

Ensuite on n'oublie pas de sécuriser un minimum :

mysql_secure_installation

A ce stade, on va vérifier le paramétrage de la section [mysqld] de notre serveur :

vi /etc/mysql/mariadb.conf.d/50-server.cnf

Si les paramètres suivants ne sont pas présents on les ajoute :

#
# * InnoDB
#
innodb_large_prefix=ON
innodb_file_per_table=ON
innodb_file_format=Barracuda
innodb_default_row_format=DYNAMIC

#
# * Character sets
#
character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci
NOTE : Le paramètre "innodb_default_row_format" n'est pas spécifié dans la documentation officielle de Rundeck. La documentation nous parle uniquement de table spécifique que je n'ai pas trouvée dans mon installation toute neuve. Pourtant j'ai rencontré ces deux erreurs :
  • "Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes"
  • "Caused by: java.sql.SQLException: Index column size too large. The maximum column size is 767 bytes."
qui sont clairement liée au paramètre "innodb_default_row_format".

Évidemment on redémarre le service :

systemctl restart mysqld.service

On crée notre utilisateur pour l'utilisation de la base :

CREATE USER 'rundeckuser'@'localhost' IDENTIFIED BY 'rundeckpassword';

On crée la base :

CREATE DATABASE IF NOT EXISTS rundeck;

On attribue les droits à l'utilisateur :

GRANT ALL PRIVILEGES ON rundeck.* TO 'rundeckuser'@'localhost';
FLUSH PRIVILEGES;

Le serveur MySQL est prêt

3) Paramétrage de Rundeck pour MySQL

Maintenant on va paramétrer Rundeck, mais avant on va arrêter le service :

systemctl stop rundeckd.service

Puis on édite le fichier de configuration :

vi /etc/rundeck/rundeck-config.properties

Ici on va modifier la ligne "dataSource.url" et ajouter trois directives :

dataSource.url = jdbc:mysql://localhost/rundeck?autoReconnect=true
dataSource.username=rundeck
dataSource.password=MotDePasse
dataSource.driverClassName=com.mysql.jdbc.Driver

Pour finir on redémarre le service :

systemctl start rundeckd.service

Et on attend enfin le Graal :

tail -f /var/log/rundeck/service.log
Grails application running at http://localhost:4440 in environment: production

Enjoy :-)

Haut de page