summaryrefslogtreecommitdiffstats
path: root/roles/common-LDAP/tasks/main.yml
blob: 3ef02e872e3e5a80da4a0a8c169f75f44b65f70b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# XXX If #742056 gets fixed, we should preseed slapd to use peercreds as
# RootDN once the fix enters stable.
- name: Install OpenLDAP
  apt: pkg={{ item }}
  with_items:
    - slapd
    - ldap-utils
    - ldapvi
    - db-util
    - python-ldap

- name: Configure slapd
  template: src=etc/default/slapd.j2
            dest=/etc/default/slapd
            owner=root group=root
            mode=0644
  register: r1
  notify:
    - Restart slapd

# Upon install slapd create and populate a database under /var/lib/ldap.
# We clear it up and create a children directory to get finer-grain
# control.
- name: Clear empty /var/lib/ldap
  # Don't remove the database (and fail) if it contains something else
  # than its suffix or cn=admin,...
  openldap: dbdirectory=/var/lib/ldap ignoredn=cn=admin
            state=absent

- name: Create directory /var/lib/ldap/fripost
  file: path=/var/lib/ldap/fripost
        state=directory
        owner=openldap group=openldap
        mode=0700

- name: Copy /var/lib/ldap/fripost/DB_CONFIG
  copy: src=var/lib/ldap/fripost/DB_CONFIG
        dest=/var/lib/ldap/fripost/DB_CONFIG
        owner=openldap group=openldap
        mode=0600
  register: r2
  notify:
    # Not sure if required
    - Restart slapd

- name: Create directory /etc/ldap/fripost
  file: path=/etc/ldap/fripost
        state=directory
        owner=root group=root
        mode=0755

- name: Copy fripost database definition
  template: src=etc/ldap/database.ldif.j2
            dest=/etc/ldap/fripost/database.ldif
            owner=root group=root
            mode=0600

- name: Copy fripost & amavis' schema
  copy: src=etc/ldap/schema/{{ item }}
        dest=/etc/ldap/schema/{{ item }}
        owner=root group=root
        mode=0644
  # It'd certainly be nicer if we didn't have to deploy amavis' schema
  # everywhere, but we need the 'objectClass' in our replicates, hence
  # they need to be aware of the 'amavisAccount' class.
  with_items:
    - fripost.ldif
    - amavis.schema
  tags:
    - amavis

- name: Load fripost's schema and configure the database
  openldap: target=/etc/ldap/{{ item }} state=present
  with_items:
    - schema/fripost.ldif
    - fripost/database.ldif

- name: Load amavis' schema
  openldap: target=/etc/ldap/schema/amavis.schema state=present
            format=slapd.conf name=amavis
  tags:
    - ldap

- name: Start slapd
  service: name=slapd state=started
  when: not (r1.changed or r2.changed)

- meta: flush_handlers