feat: add playbook for managing LDAP directory contents
This commit is contained in:
parent
66f7293710
commit
0b03640e40
109
playbooks/ldap.yml
Normal file
109
playbooks/ldap.yml
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
---
|
||||||
|
- name: Configure LDAP directory information tree
|
||||||
|
hosts: "{{ ldap_hosts | default('ldap') }}"
|
||||||
|
become: "{{ ldap_become | default(false) }}"
|
||||||
|
gather_facts: "{{ ldap_gather_facts | default(false) }}"
|
||||||
|
vars:
|
||||||
|
_state: "{{ ldap_state | default('present') }}"
|
||||||
|
_ldap_bind_info: &ldap_bind_info
|
||||||
|
server_uri: "{{ ldap_server_uri }}"
|
||||||
|
bind_dn: "{{ ldap_bind_dn }}"
|
||||||
|
bind_pw: "{{ ldap_bind_pw }}"
|
||||||
|
roles:
|
||||||
|
# Ensure all defaults from openldap role are in scope
|
||||||
|
- role: finallycoffee.base.openldap
|
||||||
|
when: false
|
||||||
|
tasks:
|
||||||
|
- name: Ensure org units in '{{ ldap_base_dn }}' are {{ _state }}
|
||||||
|
community.general.ldap_entry:
|
||||||
|
<<: *ldap_bind_info
|
||||||
|
dn: "ou={{ org_unit }},{{ ldap_base_dn }}"
|
||||||
|
objectClass: "organizationalUnit"
|
||||||
|
state: "{{ _state }}"
|
||||||
|
loop: "{{ ldap_org_units | default([], true) }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: org_unit
|
||||||
|
|
||||||
|
- name: Ensure admin user is {{ _state }}
|
||||||
|
community.general.ldap_entry:
|
||||||
|
<<: *ldap_bind_info
|
||||||
|
dn: "uid={{ ldap_admin_user_rdn }},{{ ldap_admin_user_base }}"
|
||||||
|
objectClass: "{{ ldap_admin_user_object_classes }}"
|
||||||
|
attributes: "{{ ldap_admin_user_attributes }}"
|
||||||
|
state: "{{ _state }}"
|
||||||
|
vars:
|
||||||
|
ldap_admin_user_base: >-2
|
||||||
|
{{ ldap_admin_user_base_dn | default(ldap_base_dn, true) }}
|
||||||
|
when: ldap_admin_user_rdn is defined
|
||||||
|
|
||||||
|
- name: Ensure admin user attributes are correct
|
||||||
|
community.general.ldap_attrs:
|
||||||
|
<<: *ldap_bind_info
|
||||||
|
dn: "uid={{ ldap_admin_user_rdn }},{{ ldap_admin_user_base }}"
|
||||||
|
attributes: "{{ ldap_admin_user_attributes }}"
|
||||||
|
state: "{{ _state }}"
|
||||||
|
vars:
|
||||||
|
ldap_admin_user_base: >-2
|
||||||
|
{{ ldap_admin_user_base_dn | default(ldap_base_dn, true) }}
|
||||||
|
when:
|
||||||
|
- ldap_admin_user_rdn is defined
|
||||||
|
- _state == 'present'
|
||||||
|
|
||||||
|
- name: Ensure ldap groups are {{ _state }}
|
||||||
|
community.general.ldap_entry:
|
||||||
|
<<: *ldap_bind_info
|
||||||
|
dn: "{{ _ldap_group_dn }}"
|
||||||
|
objectClass: "{{ _ldap_group_object_classes }}"
|
||||||
|
attributes: "{{ _ldap_group_attributes }}"
|
||||||
|
state: "{{ _state }}"
|
||||||
|
vars:
|
||||||
|
_ldap_group_dn: >-2
|
||||||
|
cn={{ _ldap_group.name }},{{ ldap_group_base_dn }}
|
||||||
|
_ldap_group_object_classes:
|
||||||
|
- "groupOfNames"
|
||||||
|
_ldap_group_attributes:
|
||||||
|
cn: "{{ _ldap_group.name }}"
|
||||||
|
member: >-2
|
||||||
|
{{ _ldap_group.members | default([]) }}
|
||||||
|
loop: "{{ ldap_groups | default([], true) }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: _ldap_group
|
||||||
|
label: "{{ _ldap_group.name }}"
|
||||||
|
when:
|
||||||
|
- ldap_groups is defined
|
||||||
|
- ldap_group_base_dn is defined
|
||||||
|
|
||||||
|
- name: Ensure service accounts are {{ _state }}
|
||||||
|
community.general.ldap_entry:
|
||||||
|
<<: *ldap_bind_info
|
||||||
|
dn: "{{ _ldap_service_account_dn }}"
|
||||||
|
objectClass: "{{ _ldap_service_account_object_classes }}"
|
||||||
|
attributes: "{{ _ldap_service_account_attributes }}"
|
||||||
|
state: "{{ _state }}"
|
||||||
|
loop: &ldap_service_account_loop "{{ ldap_service_accounts | default([]) }}"
|
||||||
|
loop_control: &ldap_service_account_loop_control
|
||||||
|
loop_var: "_ldap_service_account"
|
||||||
|
label: "{{ _ldap_service_account.name }}"
|
||||||
|
vars: &ldap_service_account_vars
|
||||||
|
_ldap_service_account_dn: >-2
|
||||||
|
uid={{ _ldap_service_account.name }},{{ ldap_service_account_base_dn }}
|
||||||
|
_ldap_service_account_object_classes:
|
||||||
|
- "account"
|
||||||
|
- "simpleSecurityObject"
|
||||||
|
_ldap_service_account_attributes:
|
||||||
|
uid: "{{ _ldap_service_account.name }}"
|
||||||
|
userPassword: "{{ _ldap_service_account.password }}"
|
||||||
|
when: &ldap_service_account_when
|
||||||
|
- ldap_service_accounts is defined
|
||||||
|
- ldap_service_account_base_dn is defined
|
||||||
|
|
||||||
|
- name: Ensure service accounts attributes are correct
|
||||||
|
community.general.ldap_attrs:
|
||||||
|
<<: *ldap_bind_info
|
||||||
|
dn: "{{ _ldap_service_account_dn }}"
|
||||||
|
attributes: "{{ _ldap_service_account_attributes }}"
|
||||||
|
state: exact
|
||||||
|
loop: *ldap_service_account_loop
|
||||||
|
loop_control: *ldap_service_account_loop_control
|
||||||
|
vars: *ldap_service_account_vars
|
||||||
|
when: *ldap_service_account_when
|
Loading…
x
Reference in New Issue
Block a user