Guillaume Coré
2020-03-11 1d970fbaa4bd88c9d094d9587db59fdf9cd0239a
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
---
- name: Setup krb5.conf file
  copy:
    dest: "{{ output_dir }}/krb5.conf"
    content: |
      [libdefaults]
      default_realm = {{ kerberos_realm }}
      dns_lookup_realm = true
      dns_lookup_kdc = true
      rdns = false
      dns_canonicalize_hostname = false
      ticket_lifetime = 24h
      forwardable = true
      udp_preference_limit = 0
      default_ccache_name = KEYRING:persistent:%{uid}
 
- environment:
    KRB5CCNAME: /tmp/krb_cache_{{ account_name }}
    KRB5_CONFIG: "{{ output_dir }}/krb5.conf"
  tags:
    - nuke
    - ipa
  when: nuke_sandbox | bool
  block:
    - when: kerberos_keytab is defined
      name: Login kerberos
      command: >-
        kinit -kt "{{ kerberos_keytab }}" {{ kerberos_user }}
 
    - when: kerberos_password is defined
      name: Login kerberos
      command: >-
        kinit {{ kerberos_user }}
      args:
        stdin: "{{ kerberos_password }}"
 
    - name: Fetch all NS records for this sandbox
      shell: >-
        host -t ns -W 60 -R 10 {{ account_name }}.{{ ipa_domain }}
        | awk '{ print $4 }'
        | perl -pe 's/\.$//'
      register: _recordfind
 
    - set_fact:
        ipa_ns_records: "{{ _recordfind.stdout.split('\n') }}"
 
    - name: Delete all NS records that are not needed anymore
      command: >-
        ipa dnsrecord-del {{ ipa_domain }}. {{ account_name }} --ns-rec={{ _z }}.
      loop_control:
        loop_var: _z
      loop: "{{ ipa_ns_records | difference(ns_records) }}"
      when: _z != ''
 
    - name: Add NS records to IPA
      when: >-
        ipa_ns_records | length == 0
        or ipa_ns_records | difference(ns_records) | length != 0
        or  ns_records | difference(ipa_ns_records) | length != 0
      command: >-
        ipa dnsrecord-add {{ ipa_domain }}. {{ account_name }} --ns-rec={{ _z }}.
      loop: "{{ ns_records }}"
      loop_control:
        loop_var: _z
      register: _ipacommand
      failed_when:
        - _ipacommand.rc != 0
        - '"ERROR: no modifications to be performed" not in _ipacommand.stderr'
      changed_when: >-
        "ERROR: no modifications to be performed"
        not in _ipacommand.stderr
 
  always:
    - name: Destroy kerberos ticket
      command: kdestroy