If you install slapd from the commandline you’ll be prompted with a bunch of questions. If you install via some automation tool however, the story becomes a little different. There’s no prompt to input stuff the stuff setup needs, and you really don’t want to be prompted anyways. So… Let’s find all options available for this package.
debconf-get-selections | grep slapd
slapd slapd/password1 password slapd slapd/internal/generated_adminpw password slapd slapd/password2 password slapd slapd/internal/adminpw password # Potentially unsafe slapd access control configuration slapd slapd/unsafe_selfwrite_acl note slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION slapd slapd/move_old_database boolean true slapd slapd/domain string slapd slapd/invalid_config boolean true slapd slapd/no_configuration boolean false slapd slapd/password_mismatch note # Do you want the database to be removed when slapd is purged? slapd slapd/purge_database boolean false slapd slapd/allow_ldap_v2 boolean false slapd slapd/backend select MDB slapd slapd/dump_database select when needed slapd slapd/upgrade_slapcat_failure error slapd shared/organization string
All these “zany” options. Which ones are needed?
DEBCONF_DEBUG=developer dpkg-reconfigure --frontend=noninteractive slapd 2>/tmp/debug.log
DEBCONF_DEBUG=developer dumps debug code to stderr, which we cleverly dump to /tmp/debug.log. Scanning through that log we see
debconf (developer): <-- INPUT medium slapd/no_configuration debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT medium slapd/domain debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT medium shared/organization debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT high slapd/password1 debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT high slapd/password2 debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT low slapd/backend debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT low slapd/purge_database debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT low slapd/move_old_database debconf (developer): --> 30 question skipped debconf (developer): <-- INPUT medium slapd/allow_ldap_v2 debconf (developer): --> 30 question skipped
Set these options before you install slapd.
Ansible example
- name: set slapd install options
shell: "echo \"{{ item }}\" | debconf-set-selections"
with_items:
- slapd slapd/no_configuration boolean false
- slapd slapd/domain string slipsprogrammor.no
- slapd shared/organization string Slips AS
- slapd slapd/password1 password adminpass
- slapd slapd/password2 password adminpass
- slapd slapd/backend select MDB
- slapd slapd/purge_database boolean false
- slapd slapd/move_old_database boolean true
- slapd slapd/allow_ldap_v2 boolean false
- name: install packages
package:
name: "{{ item }}"
with_items:
- slapd
- ldap-utils