Skip to content

Commit 3757e09

Browse files
committed
add extra check for missing keytab file (to avoid failing klist | grep)
1 parent 6ba859a commit 3757e09

2 files changed

Lines changed: 19 additions & 6 deletions

File tree

tasks/add_princ_and_kt.yml

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
## Include tasks to idempotently create a host principal and its keytab
33
## Include parameters:
44
## - "_principal": the principal without the realm
5+
## - "_keytab": the keytab file
56

67
- name: Create kdc principal {{ _principal }}
78
command: |
8-
{{ kerberos_server_kadmin_cmd }} -q "addprinc -randkey host/{{ _principal }}@{{ kerberos_server_realm_name|upper() }}"
9+
{{ kerberos_server_kadmin_cmd }} -q "addprinc -randkey {{ _principal }}@{{ kerberos_server_realm_name|upper() }}"
910
register: addprinc_result
1011
changed_when: addprinc_result.stderr and not (addprinc_result.stderr is search("Principal or policy already exists while creating") )
1112

@@ -17,14 +18,25 @@
1718
or not (addprinc_result.stdout is search("Principal .* created")
1819
or addprinc_result.stderr is search("Principal or policy already exists while creating"))
1920
20-
- name: Check if keytab exists
21+
- name: Check if keytab file exists
22+
stat:
23+
path: "{{ _keytab }}"
24+
register: keytab
25+
26+
- name: Check if principal exists in the keytab
2127
shell: |
22-
set -o pipefail
23-
klist -kte | grep -E "{{ _principal }}"
28+
set -o pipefail;
29+
klist -kte {{ _keytab }} | grep -E "{{ _principal }}"
30+
args:
31+
executable: /bin/bash
2432
register: klist_kte_result
2533
changed_when: false
34+
failed_when: klist_kte_result.rc not in [0,1]
35+
when: keytab.stat.exists
2636

2737
- name: Create keytab with the kdcs
2838
command: |
29-
{{ kerberos_server_kadmin_cmd }} -q "ktadd -k /etc/krb5.keytab {{ _principal }}@{{ kerberos_server_realm_name|upper() }}"
30-
when: klist_kte_result.rc != 0
39+
{{ kerberos_server_kadmin_cmd }} -q "ktadd -k {{ _keytab }} {{ _principal }}@{{ kerberos_server_realm_name|upper() }}"
40+
when: >
41+
not keytab.stat.exists
42+
or klist_kte_result.rc != 0

tasks/kprop_replication.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
include_tasks: add_princ_and_kt.yml
44
vars:
55
_principal: "host/{{ item }}"
6+
_keytab: "/etc/krb5.keytab"
67
loop: "{{ kerberos_server_kdcs }}"
78
when: is_master_host
89

0 commit comments

Comments
 (0)