Dernièrement j’ai cherché à automatiser l’installation d’un serveur Openldap avec Puppet et un fichier de préconfiguration d’un package Debian.
L’installation était bloqué et un ps révélait que l’installation était bloquée sur la préconfiguration du package :
22165 ? Ss 0:00 /usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install slapd 22170 ? S 0:00 /bin/sh -c /usr/sbin/dpkg-preconfigure --apt || true 22171 ? R 96:21 /usr/bin/perl -w /usr/sbin/dpkg-preconfigure --apt 22173 ? Z 0:00 [dpkg-preconfigu]22178 ? R 26:27 /bin/sh /tmp/slapd.config.JDMbkD configure
Pour le debug, première étape, préchargeons notre fichier preseed dans debconf :
echo -e "slapd slapd/root_password password ldappwd" | debconf-set-selections echo -e "slapd slapd/root_password_again password ldappwd" | debconf-set-selections echo -e "slapd slapd/internal/adminpw password ldappwd" | debconf-set-selections echo -e "slapd slapd/internal/generated_adminpw password ldappwd" | debconf-set-selections echo -e "slapd slapd/password2 password ldappwd" | debconf-set-selections echo -e "slapd slapd/password1 password ldappwd" | debconf-set-selections echo -e "slapd slapd/domain string 'int.morot.fr'" | debconf-set-selections echo -e "slapd shared/organization string 'int.morot.fr'" | debconf-set-selections echo -e "slapd slapd/backend string MDB" | debconf-set-selections echo -e "slapd slapd/purge_database boolean true" | debconf-set-selections echo -e "slapd slapd/move_old_database boolean true" | debconf-set-selections echo -e "slapd slapd/allow_ldap_v2 boolean false" | debconf-set-selections echo -e "slapd slapd/no_configuration boolean false" | debconf-set-selections
Activons le mode développeur et le fronted sans interaction utilisateur, tel qu’utilisé par Puppet :
export DEBCONF_DEBUG=developer export DEBIAN_FRONTEND='Noninteractive'
Il ne reste plus qu’à lancer l’installation du package et examiner la sortie ou le syslog :
apt install slapd
Pour ma part, j’ai pu voir que les quotes autour des paramètres organization et domain posaient problème et demandaient à être supprimés :
debconf (developer): <-- INPUT medium slapd/domain debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT medium shared/organization debconf (developer): --> 30 question skipped
Profit!