2016-10-28 11:26:53 +00:00
|
|
|
---
|
|
|
|
- name: Determine whether we need to get keytab
|
|
|
|
stat: path={{kt_location}}
|
|
|
|
register: keytab_status
|
2016-12-05 17:53:13 +00:00
|
|
|
check_mode: no
|
2016-12-05 17:58:55 +00:00
|
|
|
changed_when: "1 != 1"
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
|
2020-08-20 15:11:11 +02:00
|
|
|
- name: Create host entry
|
|
|
|
include_role:
|
|
|
|
name: ipa/host
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2020-08-20 15:11:11 +02:00
|
|
|
when: not keytab_status.stat.exists and service == "host"
|
2016-10-28 11:26:53 +00:00
|
|
|
|
2020-08-20 15:11:11 +02:00
|
|
|
- name: Create service entry
|
|
|
|
include_role:
|
|
|
|
name: ipa/service
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2020-08-20 15:11:11 +02:00
|
|
|
when: not keytab_status.stat.exists and service != "host"
|
2016-10-28 11:26:53 +00:00
|
|
|
|
2020-08-20 15:11:11 +02:00
|
|
|
- name: Get admin ticket
|
2016-10-28 11:26:53 +00:00
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-19 16:42:30 +10:00
|
|
|
ansible.builtin.shell: echo "{{ipa_admin_password}}" | kinit admin
|
2016-12-05 17:53:13 +00:00
|
|
|
check_mode: no
|
2020-08-20 15:11:11 +02:00
|
|
|
changed_when: "1 != 1"
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2020-08-20 15:11:11 +02:00
|
|
|
when: not keytab_status.stat.exists
|
2016-10-28 11:26:53 +00:00
|
|
|
|
2020-09-01 22:55:30 +02:00
|
|
|
- name: Grant host and admin access to keytab
|
2016-10-28 11:26:53 +00:00
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-19 11:22:24 +10:00
|
|
|
ansible.builtin.command: ipa host-allow-retrieve-keytab {{host}} --hosts={{inventory_hostname}} --users=admin
|
2020-09-01 22:42:56 +02:00
|
|
|
register: perm_add_result
|
2016-12-05 17:53:13 +00:00
|
|
|
check_mode: no
|
2020-09-01 22:55:30 +02:00
|
|
|
changed_when: "'members added 1' in perm_add_result.stdout or 'members added 2' in perm_add_result.stdout"
|
2020-09-01 22:42:56 +02:00
|
|
|
failed_when: "not ('members added' in perm_add_result.stdout)"
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2020-09-01 22:55:30 +02:00
|
|
|
when: not keytab_status.stat.exists and service == "host"
|
2016-10-28 11:26:53 +00:00
|
|
|
|
2020-09-01 22:55:30 +02:00
|
|
|
- name: Grant host and admin access to keytab
|
2016-10-28 11:26:53 +00:00
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-19 11:22:24 +10:00
|
|
|
ansible.builtin.command: ipa service-allow-retrieve-keytab {{service}}/{{host}} --hosts={{inventory_hostname}} --users=admin
|
2020-09-01 22:42:56 +02:00
|
|
|
register: perm_add_result
|
2016-12-05 17:53:13 +00:00
|
|
|
check_mode: no
|
2020-09-01 22:55:30 +02:00
|
|
|
changed_when: "'members added 1' in perm_add_result.stdout or 'members added 2' in perm_add_result.stdout"
|
2020-09-01 22:42:56 +02:00
|
|
|
failed_when: "not ('members added' in perm_add_result.stdout)"
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2020-09-01 22:55:30 +02:00
|
|
|
when: not keytab_status.stat.exists and service != "host"
|
2016-10-28 11:26:53 +00:00
|
|
|
|
2016-11-03 13:16:03 +00:00
|
|
|
- name: Retrieve keytab
|
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-19 11:22:24 +10:00
|
|
|
ansible.builtin.command: ipa-getkeytab --retrieve --server {{ipa_server}} --keytab /tmp/{{service}}_{{host}}.kt --principal {{service}}/{{host}}
|
2016-11-03 13:16:03 +00:00
|
|
|
register: retrieve_result
|
2016-12-05 17:53:13 +00:00
|
|
|
check_mode: no
|
|
|
|
changed_when: "1 != 1"
|
2016-11-03 13:16:03 +00:00
|
|
|
failed_when: "not ('Keytab successfully retrieved' in retrieve_result.stderr or 'krbPrincipalKey not found' in retrieve_result.stderr)"
|
2016-10-28 11:47:57 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
when: not keytab_status.stat.exists
|
|
|
|
|
2016-11-03 13:16:03 +00:00
|
|
|
- name: Create keytab if it did not exist
|
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-19 11:22:24 +10:00
|
|
|
ansible.builtin.command: ipa-getkeytab --server {{ipa_server}} --keytab /tmp/{{service}}_{{host}}.kt --principal {{service}}/{{host}}
|
2016-11-03 13:16:03 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
when: not keytab_status.stat.exists and 'krbPrincipalKey not found' in retrieve_result.stderr
|
|
|
|
|
|
|
|
- name: Destroy admin ticket
|
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-19 11:22:24 +10:00
|
|
|
ansible.builtin.command: kdestroy -A
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
when: not keytab_status.stat.exists
|
|
|
|
|
2016-11-03 13:16:03 +00:00
|
|
|
- name: Get keytab
|
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-19 11:22:24 +10:00
|
|
|
ansible.builtin.command: base64 /tmp/{{service}}_{{host}}.kt
|
2016-11-03 13:16:03 +00:00
|
|
|
register: keytab
|
2016-12-05 17:53:13 +00:00
|
|
|
check_mode: no
|
2016-10-28 11:58:16 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2016-11-03 13:16:03 +00:00
|
|
|
when: not keytab_status.stat.exists
|
2016-10-28 11:58:16 +00:00
|
|
|
|
2016-11-03 13:16:03 +00:00
|
|
|
- name: Destroy stored keytab
|
|
|
|
delegate_to: "{{ ipa_server }}"
|
2024-12-17 15:31:55 +10:00
|
|
|
ansible.builtin.file: path=/tmp/{{service}}_{{host}}.kt state=absent
|
2016-10-28 11:58:16 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2016-11-03 13:16:03 +00:00
|
|
|
when: not keytab_status.stat.exists
|
2016-10-28 11:58:16 +00:00
|
|
|
|
2016-11-03 13:16:03 +00:00
|
|
|
- name: Deploy base64 keytab
|
2024-12-18 08:23:28 +10:00
|
|
|
ansible.builtin.copy: dest={{kt_location}}.b64
|
2016-11-03 13:16:03 +00:00
|
|
|
content={{keytab.stdout}}
|
|
|
|
owner={{owner_user}} group={{owner_group}} mode=0600
|
2016-10-28 11:47:57 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
when: not keytab_status.stat.exists
|
|
|
|
|
2016-11-03 13:19:45 +00:00
|
|
|
- name: Base64-decode keytab
|
2024-12-19 16:42:30 +10:00
|
|
|
ansible.builtin.shell: "umask 077 && base64 -d {{kt_location}}.b64 >{{kt_location}}"
|
2016-11-03 13:19:45 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
when: not keytab_status.stat.exists
|
|
|
|
|
|
|
|
- name: Destroy encoded keytab
|
2024-12-17 15:31:55 +10:00
|
|
|
ansible.builtin.file: path={{kt_location}}.b64 state=absent
|
2016-11-03 13:19:45 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
|
2016-10-28 11:26:53 +00:00
|
|
|
- name: Set keytab permissions
|
2024-12-17 15:31:55 +10:00
|
|
|
ansible.builtin.file: path={{kt_location}} owner={{owner_user}} group={{owner_group}} mode=0640 state=file
|
2016-10-28 11:26:53 +00:00
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
2018-11-08 19:03:03 +00:00
|
|
|
|
|
|
|
- name: Set keytab ACL
|
|
|
|
acl: name={{kt_location}} entity={{extra_acl_user}} etype=user permissions=r state=present
|
|
|
|
tags:
|
|
|
|
- keytab
|
|
|
|
- config
|
|
|
|
- krb5
|
|
|
|
when: extra_acl_user is defined
|