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 :qui sont clairement liée au paramètre "innodb_default_row_format".
- "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."
É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 :-)