--- # file: roles/ad-auth/tasks/sssd.yml - name: ensure sssd is installed apt: name: - sssd - libpam-sss - libnss-sss - sssd-tools - realmd # yamllint disable rule:line-length - policykit-1 # this is required for realm to discover realms... - adcli # this is required for realm to join realms... - packagekit # this is required for realm to i don't know and don't even care anymore... # yamllint enable rule:line-length - cracklib-runtime state: present install_recommends: false notify: - clear sssd cache tags: - sssd - name: check if our realm is configured shell: realm list | grep "{{ domain }}" register: current_realms changed_when: "current_realms.rc != 0" failed_when: "current_realms.rc != 0 and current_realms.rc != 1" tags: - sssd - block: - name: discover our realm command: realm discover -v "{{ domain }}" tags: - sssd - name: get a kerberos ticket # yamllint disable-line rule:line-length shell: echo "{{ lookup('passwordstore', ad_admin_password) }}" | kinit Administrator when: debian_version == "jessie" no_log: true tags: - sssd - name: ensure pexpect is installed apt: name: python-pexpect state: present when: debian_version == "stretch" tags: - sssd - name: get a kerberos ticket expect: command: kinit Administrator responses: # yamllint disable-line rule:line-length "Passwor(d|t) for Administrator.*": "{{ lookup('passwordstore', ad_admin_password) }}" when: debian_version == "stretch" no_log: true tags: - sssd - name: leave any other realm command: realm leave register: result until: "result.rc != 0" retries: 9001 delay: 0 failed_when: "result.rc != 0 and result.rc != 1" tags: - sssd - name: join our realm command: realm join -v "{{ domain }}" notify: - clear sssd cache - restart sssd tags: - sssd - name: destroy kerberos ticket command: kdestroy tags: - sssd when: "current_realms.rc != 0" - name: ensure sssd is configured template: src: sssd.conf.j2 dest: /etc/sssd/sssd.conf owner: root group: root mode: '0600' notify: - restart sssd - clear sssd cache tags: - sssd # taken out of Debian's post install hooks - name: ensure sssd is configured in nsswitch.conf shell: "sed -i --regexp-extended '/^(passwd|group|shadow|netgroup|services):/ { /\\bsss\\b/! s/$/ sss/ } ' /etc/nsswitch.conf" args: warn: false tags: - sssd - name: ensure sssd is enabled and running service: name: sssd state: started enabled: true tags: - sssd - name: ensure we have a cronjob which renews krb credenitials once a day template: src: templates/renew_krb5.j2 dest: /etc/cron.daily/renew_krb5 mode: '0755' owner: root group: root tags: - sssd