aboutsummaryrefslogtreecommitdiffstats
path: root/playbooks/populate_domain.yml
blob: acb1ec7fc1856bc9355b25dea2e236234706118e (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
89
90
91
92
93
94
95
96
97
98
99
- name: populate freeipa domain
  hosts: freeipa_master
  vars:
    default_user_password: ChangeMe123!
  tasks:
    - name: create users
      ipauser:
        ipaadmin_principal: '{{ ipa_user }}'
        ipaadmin_password: '{{ ipa_pass }}'
        name: '{{ item.name }}'
        givenname: '{{ item.givenname }}'
        sn: '{{ item.sn }}'
        email: '{{ [item.mail] if item.mail is defined else omit }}'
        loginshell: '{{ item.loginshell | default(omit) }}'
        password: '{{ item.password | default(default_user_password) }}'
        update_password: on_create
        state: present
      loop: '{{ freeipa_users | default([]) }}'
      tags: users

    - name: add custom attributes
      ldap_attrs:
        dn: 'uid={{ item.name }},{{ freeipa_user_basedn }}'
        attributes:
          mailAlternateAddress: '{{ item.mail_aliases | default([]) }}'
          jid: '{{ item.jid | default([]) }}'
        bind_dn: uid={{ ipa_user }},{{ freeipa_user_basedn }}
        bind_pw: '{{ ipa_pass }}'
        server_uri: ldaps://{{ ipa_host }}
        state: exact
      loop: "{{ freeipa_users | default([]) }}"
      tags: users

    - name: create groups
      ipagroup:
        ipaadmin_principal: '{{ ipa_user }}'
        ipaadmin_password: '{{ ipa_pass }}'
        name: '{{ item.name }}'
        description: '{{ item.description | default(omit) }}'
        user: '{{ item.user | default(omit) }}'
        group: '{{ item.group | default(omit) }}'
        nonposix: '{{ item.nonposix | default(omit) }}'
        action: '{{ "member" if (item.append | default(false)) else "group" }}'
        state: present
      loop: '{{ freeipa_groups | default([]) }}'
      tags: groups

    - name: add group email addresses
      ldap_attrs:
        dn: 'cn={{ item.name }},{{ freeipa_group_basedn }}'
        attributes:
          mail: '{{ item.mail | default([]) }}'
          mailAlternateAddress: '{{ item.mail_aliases | default([]) }}'
        bind_dn: uid={{ ipa_user }},{{ freeipa_user_basedn }}
        bind_pw: '{{ ipa_pass }}'
        server_uri: ldaps://{{ ipa_host }}
        state: exact
      loop: "{{ freeipa_groups | default([]) }}"
      tags: groups

    - name: create sudo rules
      ipasudorule:
        ipaadmin_principal: '{{ ipa_user }}'
        ipaadmin_password: '{{ ipa_pass }}'
        name: '{{ item.name }}'
        description: '{{ item.description | default(omit) }}'
        allow_sudocmd: '{{ item.cmd | default(omit) }}'
        cmdcategory: '{{ item.cmdcategory | default(omit) }}'
        allow_sudocmdgroup: '{{ item.cmdgroup | default(omit) }}'
        host: '{{ item.host | default(omit) }}'
        hostcategory: '{{ item.hostcategory | default(omit) }}'
        hostgroup: '{{ item.hostgroup | default(omit) }}'
        runasusercategory: '{{ item.runasusercategory | default(omit) }}'
        runasgroupcategory: '{{ item.runasgroupcategory | default(omit) }}'
        user: '{{ item.user | default(omit) }}'
        usercategory: '{{ item.usercategory | default(omit) }}'
        group: '{{ item.usergroup | default(omit) }}'
        state: present
      loop: '{{ freeipa_sudo_rules | default([]) }}'
      tags: sudo

    - name: create hbac rules
      ipahbacrule:
        ipaadmin_principal: '{{ ipa_user }}'
        ipaadmin_password: '{{ ipa_pass }}'
        name: '{{ item.name }}'
        description: '{{ item.description | default(omit) }}'
        host: '{{ item.host | default(omit) }}'
        hostcategory: '{{ item.hostcategory | default(omit) }}'
        hostgroup: '{{ item.hostgroup | default(omit) }}'
        hbacsvc: '{{ item.service | default(omit) }}'
        servicecategory: '{{ item.servicecategory | default(omit) }}'
        hbacsvcgroup: '{{ item.servicegroup | default(omit) }}'
        user: '{{ item.user | default(omit) }}'
        usercategory: '{{ item.usercategory | default(omit) }}'
        group: '{{ item.usergroup | default(omit) }}'
        state: present
      loop: '{{ freeipa_hbac_rules | default([]) }}'
      tags: hbac