1+ ---
2+ - name : Check vault auth configuration
3+ kubernetes.core.k8s_exec :
4+ namespace : " {{ vault_ns }}"
5+ pod : " {{ vault_pod }}"
6+ command : vault auth list -format=json
7+ register : vault_auth_json
8+ until : " 'rc' in vault_auth_json"
9+ retries : 20
10+ delay : 45
11+ changed_when : false
12+ failed_when : " 'stdout_lines' not in vault_auth_json"
13+
14+ - name : Set vault auth output json fact
15+ ansible.builtin.set_fact :
16+ vault_auth : " {{ vault_auth_json.stdout | from_json }}"
17+ when : vault_auth_json.stdout_lines | length > 0
18+
19+ - name : Set vault auth jwt fact
20+ ansible.builtin.set_fact :
21+ vault_auth_jwt : " {{ true if 'jwt/' in vault_auth else false }}"
22+ when : vault_auth | length > 0
23+
24+ - name : Enable jwt auth
25+ kubernetes.core.k8s_exec :
26+ namespace : " {{ vault_ns }}"
27+ pod : " {{ vault_pod }}"
28+ command : vault auth enable jwt
29+ when : not vault_auth_jwt
30+
31+ - name : Get router CA certificate
32+ kubernetes.core.k8s_info :
33+ kind : Secret
34+ namespace : openshift-ingress-operator
35+ name : router-ca
36+ api_version : v1
37+ register : router_ca_cert
38+ when : not vault_auth_jwt
39+
40+ - name : Copy router CA certificate to vault
41+ kubernetes.core.k8s_cp :
42+ namespace : " {{ vault_ns }}"
43+ pod : " {{ vault_pod }}"
44+ content : " {{ router_ca_cert.resources[0].data['tls.crt'] | b64decode }}"
45+ remote_path : /tmp/router-ca.crt
46+ when : not vault_auth_jwt
47+
48+ - name : Write JWT configuration
49+ kubernetes.core.k8s_exec :
50+ namespace : " {{ vault_ns }}"
51+ pod : " {{ vault_pod }}"
52+ command : >
53+ vault write auth/jwt/config
54+ oidc_discovery_url={{ oidc_discovery_url }}
55+ default_role={{ default_role | default('default') }}
56+ oidc_discovery_ca_pem=@/tmp/router-ca.crt
57+ when : not vault_auth_jwt
58+
59+ - name : Write JWT role
60+ kubernetes.core.k8s_exec :
61+ namespace : " {{ vault_ns }}"
62+ pod : " {{ vault_pod }}"
63+ command : >
64+ vault write auth/jwt/role/{{ default_role | default('default') }}
65+ role_type=jwt
66+ user_claim=sub
67+ bound_audiences={{ spiffe_audience }}
68+ bound_subject={{ spiffe_subject }}
69+ token_ttl={{ token_ttl | default('24h') }}
70+ token_policies={{ vault_global_policy }}-secret
71+ when : not vault_auth_jwt
72+
73+ - name : Delete router CA certificate
74+ kubernetes.core.k8s_exec :
75+ namespace : " {{ vault_ns }}"
76+ pod : " {{ vault_pod }}"
77+ command : rm -f /tmp/router-ca.crt
78+ when : not vault_auth_jwt
0 commit comments