debops.nslcd default variables
Sections
APT packages
- nslcd__base_packages
List of APT packages required for LDAP lookups via NSS and PAM.
nslcd__base_packages: - [ 'libpam-ldapd', 'libnss-ldapd', 'nslcd', 'openssl', 'ca-certificates' ] - '{{ "nslcd-utils" if (ansible_local | d() and ansible_local.python | d() and (ansible_local.python.installed2 | d()) | bool) else [] }}'
- nslcd__packages
List of additional APT packages to install with nslcd package.
nslcd__packages: []
UNIX environment
- nslcd__user
Name of the UNIX system account which will be used to perform LDAP lookups via the nslcd service.
nslcd__user: 'nslcd'
- nslcd__group
Name of the UNIX system group which will be used to perform LDAP lookups via the nslcd service.
nslcd__group: 'nslcd'
- nslcd__mkhomedir_umask
Default umask for new home directories created by the
pam_mkhomedirPAM module.nslcd__mkhomedir_umask: '{{ ansible_local.core.homedir_umask | d("0027") }}'
LDAP environment
- nslcd__ldap_enabled
Enable or disable integration with the LDAP directory. The integration is enabled automatically when the debops.ldap environment is configured on the host.
nslcd__ldap_enabled: '{{ ansible_local.ldap.enabled if (ansible_local | d() and ansible_local.ldap | d() and ansible_local.ldap.enabled is defined) else False }}'
- nslcd__ldap_base_dn
The base Distinguished Name which should be used to create Distinguished Names of the LDAP directory objects, defined as a YAML list. If this variable is empty,
/etc/nslcd.confconfiguration file will not be generated.nslcd__ldap_base_dn: '{{ ansible_local.ldap.base_dn | d([]) }}'
- nslcd__ldap_device_dn
The Distinguished Name of the current host LDAP object, defined as a YAML list. It will be used as a base for the nslcd service account LDAP object. If the list is empty, the role will not create the account LDAP object automatically.
nslcd__ldap_device_dn: '{{ ansible_local.ldap.device_dn | d([]) }}'
- nslcd__ldap_self_rdn
The Relative Distinguished Name of the account LDAP object used by the nslcd service to access the LDAP directory.
nslcd__ldap_self_rdn: '{{ "uid=" + nslcd__user }}'
- nslcd__ldap_self_object_classes
List of the LDAP object classes which will be used to create the LDAP object used by the nslcd service to access the LDAP directory.
nslcd__ldap_self_object_classes: [ 'account', 'simpleSecurityObject' ]
- nslcd__ldap_self_attributes
YAML dictionary that defines the attributes of the LDAP object used by the nslcd service to access the LDAP directory.
nslcd__ldap_self_attributes: uid: '{{ nslcd__ldap_self_rdn.split("=")[1] }}' userPassword: '{{ nslcd__ldap_bindpw }}' host: '{{ [ansible_fqdn, ansible_hostname] | unique }}' description: 'Account used by the "nslcd" service to access the LDAP directory'
- nslcd__ldap_binddn
The Distinguished Name of the account LDAP object used by the nslcd service to bind to the LDAP directory.
nslcd__ldap_binddn: '{{ ([nslcd__ldap_self_rdn] + nslcd__ldap_device_dn) | join(",") }}'
- nslcd__ldap_bindpw
The password stored in the account LDAP object used by the nslcd service to bind to the LDAP directory.
nslcd__ldap_bindpw: '{{ (lookup("password", secret + "/ldap/credentials/" + nslcd__ldap_binddn | to_uuid + ".password length=32")) if nslcd__ldap_enabled | bool else "" }}'
- nslcd__ldap_posix_urns
List of LDAP search filters which are derived from URN-like patterns defined for a given host in the debops.ldap role. See Host-based access control for more details.
nslcd__ldap_posix_urns: '{{ (ansible_local.ldap.urn_patterns if (ansible_local.ldap.urn_patterns | d()) else []) | map("regex_replace", "^(.*)$", "(host=posix:urn:\1)") | list }}'
- nslcd__ldap_host_filter
The LDAP filter used in
passwd,shadowandgroupfilters to control the access to UNIX environment on specific hosts or domains. See thefilter_passwd_groupparameter in nslcd configuration for its default usage.nslcd__ldap_host_filter: '(| (host=posix:all) (host=posix:{{ ansible_fqdn }}) (host=posix:\2a.{{ ansible_domain }}) {{ nslcd__ldap_posix_urns | join(" ") }} )'
Service configuration
These variables define the contents of the /etc/nslcd.conf
configuration file. See nslcd__configuration for more details, and
nslcd.conf(5) for possible configuration parameters.
- nslcd__idle_timelimit
The idle timelimit for connections with the LDAP server. This must be lower than the server's olcIdleTimeout, otherwise nslcd will log error messages like "ldap_result() failed: Can't contact LDAP server".
nslcd__idle_timelimit: '600'
- nslcd__default_configuration
The default nslcd configuration options defined by the role.
nslcd__default_configuration: - name: 'uid' comment: 'The user and group nslcd should run as.' value: '{{ nslcd__user }}' - name: 'gid' value: '{{ nslcd__group }}' - name: 'uri' comment: 'The location at which the LDAP server(s) should be reachable.' value: '{{ ansible_local.ldap.uri | d("") }}' - name: 'idle_timelimit' comment: 'The idle timelimit for connections with the LDAP server.' value: '{{ nslcd__idle_timelimit }}' - name: 'base' comment: 'The search base that will be used for all queries.' value: '{{ nslcd__ldap_base_dn | join(",") }}' - name: 'ldap_version' comment: 'The LDAP protocol version to use.' value: '3' state: 'comment' - name: 'binddn' comment: 'The DN to bind with for normal lookups.' value: '{{ nslcd__ldap_binddn }}' - name: 'bindpw' value: '{{ nslcd__ldap_bindpw }}' - name: 'rootpwmoddn' comment: 'The DN used for password modifications by root.' value: 'cn=admin,dc=example,dc=com' state: 'comment' - name: 'ssl' comment: 'SSL options' value: '{{ "start_tls" if (ansible_local | d() and ansible_local.ldap | d() and (ansible_local.ldap.start_tls | d()) | bool) else "on" }}' - name: 'tls_reqcert' value: 'demand' - name: 'tls_cacertfile' value: '/etc/ssl/certs/ca-certificates.crt' - name: 'scope' comment: 'The search scope.' value: 'sub' state: 'comment' - name: 'nss_min_uid' comment: | First valid UID/GID number expected to be in the LDAP directory. UIDs/GIDs lower than this value will be ignored. value: '{{ ansible_local.ldap.uid_gid_min | d("10000") }}' - name: 'map_group_id' comment: | Use the 'gid' attribute instead of 'cn' as the POSIX group name. option: 'map' map: 'group' value: 'cn gid' - name: 'filter_passwd_group' raw: | filter passwd (& (objectClass=posixAccount) {{ nslcd__ldap_host_filter }} ) filter group (& (objectClass=posixGroupId) {{ nslcd__ldap_host_filter }} ) filter shadow (& (objectClass=shadowAccount) {{ nslcd__ldap_host_filter }} ) comment: 'Limit which UNIX accounts and groups are present on a host'
- nslcd__configuration
The nslcd configuration options defined on all hosts in the Ansible inventory.
nslcd__configuration: []
- nslcd__group_configuration
The nslcd configuration options defined on hosts in a specific Ansible inventory group.
nslcd__group_configuration: []
- nslcd__host_configuration
The nslcd configuration options defined on specific hosts in the Ansible inventory.
nslcd__host_configuration: []
- nslcd__combined_configuration
The variable that combines other nslcd configuration options and is used in the role template.
nslcd__combined_configuration: '{{ nslcd__default_configuration + nslcd__configuration + nslcd__group_configuration + nslcd__host_configuration }}'
Configuration for other Ansible roles
- nslcd__ldap__dependent_tasks
Configuration for the debops.ldap Ansible role.
nslcd__ldap__dependent_tasks: - name: 'Create nslcd account for {{ nslcd__ldap_device_dn | join(",") }}' dn: '{{ nslcd__ldap_binddn }}' objectClass: '{{ nslcd__ldap_self_object_classes }}' attributes: '{{ nslcd__ldap_self_attributes }}' no_log: '{{ debops__no_log | d(True) }}' state: '{{ "present" if ((ansible_local.ldap.posix_enabled | d()) | bool and nslcd__ldap_device_dn | d()) else "ignore" }}'
- nslcd__nsswitch__dependent_services
Configuration for the debops.nsswitch Ansible role.
nslcd__nsswitch__dependent_services: [ 'ldap' ]