Skip to content

Commit 91d47fb

Browse files
committed
Stop using end_play as we will want the later vault_jwt task as well in unsealVault
1 parent 64e8004 commit 91d47fb

1 file changed

Lines changed: 49 additions & 11 deletions

File tree

roles/vault_utils/tasks/vault_spokes_init.yaml

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
resources: "{{ managed_clusters['resources'] }}"
1111

1212
- name: Do nothing when no managed clusters are found
13-
ansible.builtin.meta: end_play
13+
ansible.builtin.set_fact:
14+
have_managed_clusters: false
1415
when: resources | length == 0 or managed_clusters.failed or not managed_clusters.api_found
1516

1617
# These three loops are not done in one pass because sometimes the managedCluster is not fully
@@ -21,14 +22,18 @@
2122
{'caBundle': item.spec.managedClusterClientConfigs[0].caBundle | b64decode,
2223
'name': item.metadata.name}}) }}"
2324
loop: "{{ resources }}"
24-
when: item.spec.managedClusterClientConfigs[0].caBundle is defined
25+
when:
26+
- have_managed_clusters
27+
- item.spec.managedClusterClientConfigs[0].caBundle is defined
2528
loop_control:
2629
label: "{{ item.metadata.name }}"
2730

2831
- name: Extract ClusterGroup
2932
ansible.builtin.set_fact:
3033
clusters: "{{ clusters | default({}) | combine({item.metadata.name: {'clusterGroup': item.metadata.labels.clusterGroup}}, recursive=True) }}"
31-
when: "'clusterGroup' in item.metadata.labels"
34+
when:
35+
- have_managed_clusters
36+
- "'clusterGroup' in item.metadata.labels"
3237
loop: "{{ resources }}"
3338
loop_control:
3439
label: "{{ item.metadata.name }}"
@@ -43,7 +48,9 @@
4348
_cluster_fqdn: "{{ item.status.clusterClaims | selectattr('name', 'equalto', 'consoleurl.cluster.open-cluster-management.io')
4449
| map(attribute='value')
4550
| first | ansible.builtin.urlsplit('hostname') | regex_replace('console-openshift-console\\.apps\\.', '') }}"
46-
when: item.spec.managedClusterClientConfigs[0].url is defined
51+
when:
52+
- have_managed_clusters
53+
- item.spec.managedClusterClientConfigs[0].url is defined
4754
loop_control:
4855
label: "{{ item.metadata.name }}"
4956

@@ -55,6 +62,8 @@
5562
loop: "{{ clusters | dict2items }}"
5663
loop_control:
5764
label: "{{ item.key }}"
65+
when:
66+
- have_managed_clusters
5867

5968
# These three steps will only work on ACM 2.12 which uses these secrets to connect to the spokes
6069
- name: Fetch all ACM secrets
@@ -63,21 +72,28 @@
6372
label_selectors:
6473
- "apps.open-cluster-management.io/secret-type=acm-cluster"
6574
register: acm_secrets_raw
75+
when:
76+
- have_managed_clusters
6677

6778
- name: Set acm secrets fact
6879
ansible.builtin.set_fact:
6980
acm_secrets: "{{ acm_secrets_raw.resources }}"
81+
when:
82+
- have_managed_clusters
7083

7184
- name: Set cleaned_acm_secrets fact
7285
ansible.builtin.set_fact:
7386
cleaned_acm_secrets: "{{ acm_secrets | rhvp.cluster_utils.parse_acm_secrets }}"
74-
when: acm_secrets | length > 0
87+
when:
88+
- have_managed_clusters
89+
- acm_secrets | length > 0
7590

7691
- name: Merge the two dicts together
7792
ansible.builtin.set_fact:
7893
clusters_info: "{{ clusters | default({}) | combine(cleaned_acm_secrets, recursive=True) }}"
79-
when: acm_secrets | length > 0
80-
94+
when:
95+
- have_managed_clusters
96+
- acm_secrets | length > 0
8197
# These steps will only work on ACM >= 2.13 which uses managed service accounts to connect to remote spokes
8298
# ACM creates a namespace named like the remote cluster and we loop those
8399
- name: Get the ACM secrets when on ACM >=2.13
@@ -87,7 +103,9 @@
87103
name: application-manager
88104
register: msa_secrets
89105
loop: "{{ resources }}"
90-
when: acm_secrets | length == 0
106+
when:
107+
- have_managed_clusters
108+
- acm_secrets | length == 0
91109
loop_control:
92110
label: "{{ item.metadata.name }}"
93111

@@ -98,6 +116,7 @@
98116
clusters: "{{ clusters | default({}) | combine({item.item.metadata.name: {'bearerToken': item.resources[0].data.token | b64decode}}, recursive=True) }}"
99117
loop: "{{ msa_secrets.results }}"
100118
when:
119+
- have_managed_clusters
101120
- acm_secrets | length == 0
102121
- msa_secrets.results | length > 0
103122
loop_control:
@@ -106,15 +125,19 @@
106125
- name: Set cluster_info fact
107126
ansible.builtin.set_fact:
108127
clusters_info: "{{ clusters }}"
109-
when: acm_secrets | length == 0
128+
when:
129+
- have_managed_clusters
130+
- acm_secrets | length == 0
110131

111132
- name: Write out CAs
112133
ansible.builtin.copy:
113134
content: "{{ item.value['caBundle'] }}"
114135
dest: "/tmp/{{ item.key }}.ca"
115136
mode: "0640"
116137
loop: "{{ clusters_info | dict2items }}"
117-
when: item.value['caBundle'] is defined
138+
when:
139+
- have_managed_clusters
140+
- item.value['caBundle'] is defined
118141
loop_control:
119142
label: "{{ item.key }}"
120143

@@ -124,6 +147,8 @@
124147
- name: If we are using letsencrypt on the API endpoints we cannot use the validate_certs later
125148
ansible.builtin.set_fact:
126149
validate_certs_api_endpoint: "{{ not letsencrypt.api_endpoint | default(True) | bool }}"
150+
when:
151+
- have_managed_clusters
127152

128153
- name: Fetch remote external secrets from remote cluster
129154
kubernetes.core.k8s_info:
@@ -147,6 +172,7 @@
147172
# https://serverfault.com/questions/1059530/how-to-not-print-items-in-an-ansible-loop-error-without-no-log)
148173
no_log: '{{ hide_sensitive_output | default(true) }}'
149174
when:
175+
- have_managed_clusters
150176
- clusters_info[item.key]['bearerToken'] is defined
151177
- clusters_info[item.key]['server_api'] is defined
152178
- clusters_info[item.key]['caBundle'] is defined
@@ -176,6 +202,7 @@
176202
# https://serverfault.com/questions/1059530/how-to-not-print-items-in-an-ansible-loop-error-without-no-log)
177203
no_log: '{{ hide_sensitive_output | default(true) }}'
178204
when:
205+
- have_managed_clusters
179206
- clusters_info[item.key]['bearerToken'] is defined
180207
- clusters_info[item.key]['server_api'] is defined
181208
- clusters_info[item.key]['caBundle'] is defined
@@ -189,7 +216,9 @@
189216
ansible.builtin.set_fact:
190217
clusters_info: "{{ clusters_info | default({}) | combine({item['item']['key']: {'esoToken': item['resources'][0]['data']['token'] | b64decode, 'activeExternalSecretsNs': external_secrets_ns, 'activeExternalSecretsSa': external_secrets_sa}}, recursive=True) }}"
191218
loop: "{{ remote_external_secrets_sa.results }}"
192-
when: item['resources'][0]['data']['token'] is defined
219+
when:
220+
- have_managed_clusters
221+
- item['resources'][0]['data']['token'] is defined
193222
loop_control:
194223
label: "{{ item['item']['key'] }}"
195224

@@ -200,6 +229,7 @@
200229
clusters_info: "{{ clusters_info | default({}) | combine({item['item']['key']: {'esoToken': item['resources'][0]['data']['token'] | b64decode, 'activeExternalSecretsNs': legacy_external_secrets_ns, 'activeExternalSecretsSa': legacy_external_secrets_sa}}, recursive=True) }}"
201230
loop: "{{ remote_legacy_external_secrets_sa.results }}"
202231
when:
232+
- have_managed_clusters
203233
- item['resources'][0]['data']['token'] is defined
204234
- clusters_info[item['item']['key']]['esoToken'] is not defined
205235
loop_control:
@@ -223,6 +253,7 @@
223253
command: bash -e -c "echo '{{ item.value['caBundle'] }}' > /tmp/{{ item.value['vault_path'] }}.ca"
224254
loop: "{{ clusters_info | dict2items }}"
225255
when:
256+
- have_managed_clusters
226257
- item.value['esoToken'] is defined
227258
- item.key != "local-cluster"
228259
loop_control:
@@ -238,6 +269,7 @@
238269
vault auth enable -path='{{ item.value['vault_path'] }}' kubernetes; fi"
239270
loop: "{{ clusters_info | dict2items }}"
240271
when:
272+
- have_managed_clusters
241273
- item.value['esoToken'] is defined
242274
- item.key != "local-cluster"
243275
loop_control:
@@ -254,6 +286,7 @@
254286
kubernetes_ca_cert=@/tmp/{{ item.value['vault_path'] }}.ca"
255287
loop: "{{ clusters_info | dict2items }}"
256288
when:
289+
- have_managed_clusters
257290
- item.value['esoToken'] is defined
258291
- item.key != "local-cluster"
259292
loop_control:
@@ -268,6 +301,7 @@
268301
capabilities = {{ vault_spoke_capabilities }} }\" > /tmp/policy-{{ item.value['vault_path'] }}.hcl"
269302
loop: "{{ clusters_info | dict2items }}"
270303
when:
304+
- have_managed_clusters
271305
- item.value['esoToken'] is defined
272306
- item.key != "local-cluster"
273307
loop_control:
@@ -282,6 +316,7 @@
282316
capabilities = {{ vault_pushsecrets_capabilities }} }\" >> /tmp/policy-{{ item.value['vault_path'] }}.hcl"
283317
loop: "{{ clusters_info | dict2items }}"
284318
when:
319+
- have_managed_clusters
285320
- item.value['esoToken'] is defined
286321
- item.key != "local-cluster"
287322
loop_control:
@@ -296,6 +331,7 @@
296331
capabilities = {{ vault_pushsecrets_capabilities }} }\" >> /tmp/policy-{{ item.value['vault_path'] }}.hcl"
297332
loop: "{{ clusters_info | dict2items }}"
298333
when:
334+
- have_managed_clusters
299335
- item.value['esoToken'] is defined
300336
- item.key != "local-cluster"
301337
loop_control:
@@ -308,6 +344,7 @@
308344
command: "vault policy write {{ item.value['vault_path'] }}-secret /tmp/policy-{{ item.value['vault_path'] }}.hcl"
309345
loop: "{{ clusters_info | dict2items }}"
310346
when:
347+
- have_managed_clusters
311348
- item.value['esoToken'] is defined
312349
- item.key != "local-cluster"
313350
loop_control:
@@ -324,6 +361,7 @@
324361
policies="default,{{ vault_global_policy }}-secret,{{ vault_pushsecrets_policy }}-secret,{{ item.value['vault_path'] }}-secret" ttl="{{ vault_spoke_ttl }}"
325362
loop: "{{ clusters_info | dict2items }}"
326363
when:
364+
- have_managed_clusters
327365
- item.value['esoToken'] is defined
328366
- item.key != "local-cluster"
329367
loop_control:

0 commit comments

Comments
 (0)