Bonjour à tous,
Aujourd'hui, je vais vous parler, d'un petit utilitaire bien pratique, debconf. Si j'ai décidé de faire un article sur ce sujet, c'est que j'ai dû faire des recherches pour automatiser des installations, il y a maintenant assez longtemps, et je n'avais trouvé aucune ressource Française et de très rares ressources anglophones.
Tout le monde ne se sentira pas concerné par le sujet de cet article. Seront intéressés par cet article ceux qui veulent automatiser des installations sous GNU/Linux ou qui utilisent des serveurs. Il est à noter que ces informations ne sont valables que sur un système basé sur GNU/Linux.
Pour finir ce petit avertissement, je dois bien l'avouer, l'article sera assez ardu pour le profane. Mais pas de soucis, posez vos questions en commentaire et je ferais mon possible pour y répondre.
Dans certains cas, nous souhaitons mettre en place une installation pour un serveur dédié à une utilisation particulière et cela peut être assez complexe sans compter toute la partie configuration, donc on automatise tout grâce à un script (Bash/Shell ou autre). Mais lorsqu'on installe certains logiciels, par exemple MySQL on tombe sur ça :
et là "-y" après apt-get n'est pas très efficace. C'est pourquoi, pour automatiser, on a besoin que ce soit "non interactif". Parce que bon, que ce soit lors de phase de test de script d'installation ou de déploiement, configurer 40 fois postfix ou MySQL, ou même accepter les mêmes licences à l'infini, c'est assez insupportable. En plus, cela multiplie facilement par x10 le temps d'installation. Sans compter que vous devez rester devant le terminal au lieu de vous contenter des logs d'erreurs et que vous pourriez faire quelque chose de bien plus utile/agréable. C'est là qu'intervient debconf
Mais qu'est-ce que debconf ?
Nous allons suivre le vieil adage qui nous dit "RTFM" (Read The Fucking Manual) [1], [2]. Bon, ce n'est pas super limpide. Je vais essayer de rendre ça un peu plus concret, avec des exemples. Debconf permet de répondre à toutes les questions que les paquets pourraient vous poser dans le terminal. Cela implique quand même d'avoir prévu les réponses. Cela peut même aller assez loin, car il est possible de configurer de manière spécifique et sur plusieurs niveaux une installation, c'est à dire orienter l'installation d'un paquet.
Déjà, nous allons commencer par installer debconf :
apt-get install -y debconf-utils
La commande debconf-get-selections permet de nous donner la liste des questions auquel debconf répond et la syntaxe que nous devons utiliser pour y répondre :
gspohu@MyOwnLinux:~$ debconf-get-selections | grep MySQL
# Mot de passe de connexion MySQL pour :
dbconfig-common dbconfig-common/mysql/app-pass password
# Confirmation du mot de passe du superutilisateur de MySQL :
mysql-server mysql-server/root_password_again password
mysql-server-5.7 mysql-server/root_password_again password
# Confirmation du mot de passe :
dbconfig-common dbconfig-common/app-password-confirm password
# Nouveau mot de passe du superutilisateur de MySQL :
mysql-server mysql-server/root_password password
mysql-server-5.7 mysql-server/root_password password
En fonction de votre compte utilisateur et de votre configuration, vous aurez peut-être besoin de passer en sudo
Pour éviter tout problème et avoir une chance de pouvoir revenir en arrière en cas de mauvaise manipulation, nous allons faire une petite sauvegarde de la "base de données".
debconf-get-selections > debconf-db-sauvegarde
Alors, entrons dans le vif du sujet. Pour automatiser l'installation de MySQL à l'aide d'un script Bash :
#!/bin/bash
echo "mysql-server mysql-server/root_password password $adminPass" | debconf-set-selections
echo "mysql-server mysql-server/root_password_again password $adminPass" | debconf-set-selections
apt-get -y install mysql-server
- $adminPass étant la variable Bash contenant le mot de passe administrateur
- | ou "pipe" permet de donner à debconf-set-selections ce qui se trouve à sa gauche
- Le -y est là pour répondre oui a toute les questions posées par l'Advanced Packaging Tool (apt-get)
- L'installation doit bien sûr être exécutée en tant que root, donc il est important de bien comprendre ce que l'on fait avant de lancer le script
Le principe est d'ajouter les réponses aux questions dans la "base de données" de debconf, il pourra ainsi y répondre à votre place.
C'est tout de même assez simple, non ? Alors oui, c'est sûr que si on ne vient pas de ce milieu là, ce n'est pas simple du tout (:
Voilà, maintenant vous êtes paré pour automatiser l'installation de ce genre de programme.
D'autres exemples avec postfix et phpmyadmin :
postfix
#!/bin/bash
echo "postfix postfix/mailname string $domainName" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
apt-get -y install postfix postfix-mysql postfix-policyd-spf-python
phpmyadmin
#!/bin/bash
echo "phpmyadmin phpmyadmin/dbconfig-install boolean true" | debconf-set-selections
echo "phpmyadmin phpmyadmin/app-password-confirm password $adminPass" | debconf-set-selections
echo "phpmyadmin phpmyadmin/mysql/admin-pass password $otherPass" | debconf-set-selections
echo "phpmyadmin phpmyadmin/mysql/app-pass password $adminPass" | debconf-set-selections
echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2" | debconf-set-selections
apt-get -y install phpmyadmin
L'installation n'est bien entendu pas complète ici, il faut encore configurer quelques petites choses, mais ce n'est pas le sujet de cet article.
Il existe d'autres manières d'agencer votre ligne de commande, comme cette variante pour postfix :
#!/bin/bash
debconf-set-selections postfix <<< "postfix/mailname string $domainName"
debconf-set-selections postfix <<< "postfix/main_mailer_type string 'Internet Site'"
apt-get -y install postfix postfix-mysql postfix-policyd-spf-python
À vous de choisir ce qui convient le mieux.
Debconf-utils contient plein d'autres choses assez utiles et permet d'aller plus loin, donc il ne faut pas hésiter à regarder de ce côté là.
➤ Si j'ai fait une erreur ou que vous pensez pouvoir améliorer les commandes montrées ici, n'hésitez pas à le dire en commentaire, je les prendrais en compte avec grand plaisir !
➤ Et vous, comment automatisez vous vos installations ?
Sources :
[1] https://manpages.debian.org/jessie/debconf-utils/debconf-get-selections.1.fr.html
[2] https://manpages.debian.org/jessie/debconf-i18n/debconf-set-selections.1.fr.html
http://www.microhowto.info/howto/perform_an_unattended_installation_of_a_debian_package.html
Première image, CC0 Public Domain
Capture d'écran de l'installation de MySQL, par Pohu Valentin CC0 Public Domain
Article sous licence CC-BY-SA
Un très bon outil qui ravira à coup sur les sysadmin ! Upvoté à 100% !
Bon post! J'aurais poster un article comme celui la sur Utopian, ils recompose les contributeur, verifie si tu peux encore.
Utopian Discord
Il me semble que sur Utopian, il faut poster en anglais et le but de cet article était de proposer une ressource française sur ce sujet. Mais merci quand même du conseil.