@@ -82,13 +82,36 @@ function decrypt_file() {
82
82
ansible-vault decrypt --vault-password-file ~ /vault.password $file
83
83
}
84
84
85
+ function workaround_ansible_rc13_bug() {
86
+ # Call this function in between long-running Ansible executions to attempt to
87
+ # work around an Ansible race condition.
88
+
89
+ # There is a race condition in Ansible that can result in this failure:
90
+ # msg: |-
91
+ # MODULE FAILURE
92
+ # See stdout/stderr for the exact error
93
+ # rc: -13
94
+ # See https://github.com/ansible/ansible/issues/78344 and
95
+ # https://github.com/ansible/ansible/issues/81777.
96
+ # In https://github.com/stackhpc/stackhpc-kayobe-config/pull/1108 we applied
97
+ # a workaround to increase the ControlPersist timeout to 1 hour, but this
98
+ # does not always work.
99
+ # Try another workaround of removing the ControlPersist sockets.
100
+ rm -f ~ /.ansible/cp/*
101
+ }
102
+
103
+ function run_kayobe() {
104
+ workaround_ansible_rc13_bug
105
+ kayobe $*
106
+ }
107
+
85
108
function deploy_seed() {
86
- kayobe seed host configure
109
+ run_kayobe seed host configure
87
110
}
88
111
89
112
function deploy_seed_vault() {
90
113
# Deploy hashicorp vault to the seed
91
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-seed.yml
114
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-seed.yml
92
115
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /vault/OS-TLS-INT.pem
93
116
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /vault/seed-vault-keys.json
94
117
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /vault/* .key
@@ -97,8 +120,8 @@ function deploy_seed_vault() {
97
120
function get_seed_ssh() {
98
121
# NOTE: Bash clears the -e option in subshells when not in Posix mode.
99
122
set -e
100
- ssh_user=$( kayobe configuration dump --host seed[0] --var-name ansible_user | tr -d ' "' )
101
- seed_addr=$( kayobe configuration dump --host seed[0] --var-name ansible_host | tr -d ' "' )
123
+ ssh_user=$( run_kayobe configuration dump --host seed[0] --var-name ansible_user | tr -d ' "' )
124
+ seed_addr=$( run_kayobe configuration dump --host seed[0] --var-name ansible_host | tr -d ' "' )
102
125
echo " ${ssh_user} @${seed_addr} "
103
126
}
104
127
@@ -117,37 +140,37 @@ function copy_ca_to_seed() {
117
140
}
118
141
119
142
function deploy_ceph() {
120
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/cephadm-deploy.yml
143
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/cephadm-deploy.yml
121
144
sleep 30
122
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/cephadm.yml
123
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/cephadm-gather-keys.yml
145
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/cephadm.yml
146
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/cephadm-gather-keys.yml
124
147
}
125
148
126
149
function deploy_overcloud_vault() {
127
150
# NOTE: Previously it was necessary to first deploy HAProxy with TLS disabled.
128
151
if [[ -f $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/globals-tls-config.yml ]]; then
129
152
# Skip os_capacity deployment since it requires admin-openrc.sh which doesn't exist yet.
130
- kayobe overcloud service deploy --skip-tags os_capacity -kt haproxy
153
+ run_kayobe overcloud service deploy --skip-tags os_capacity -kt haproxy
131
154
fi
132
155
133
156
# Deploy hashicorp vault to the controllers
134
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-overcloud.yml
157
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-overcloud.yml
135
158
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /vault/overcloud-vault-keys.json
136
159
}
137
160
138
161
function generate_overcloud_certs() {
139
162
# Generate external tls certificates
140
163
if [[ -f $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml ]]; then
141
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml
164
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml
142
165
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/certificates/haproxy.pem
143
166
fi
144
167
145
168
# Generate internal tls certificates
146
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-internal-tls.yml
169
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-internal-tls.yml
147
170
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/certificates/haproxy-internal.pem
148
171
149
172
# Generate backend tls certificates
150
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-backend-tls.yml
173
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-backend-tls.yml
151
174
for cert in $( ls -1 $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/certificates/* -key.pem) ; do
152
175
encrypt_file $cert
153
176
done
@@ -164,15 +187,15 @@ function generate_barbican_secrets() {
164
187
decrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
165
188
sed -i " s/secret_id:.*/secret_id: $( uuidgen) /g" $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
166
189
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
167
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-barbican.yml
190
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-barbican.yml
168
191
decrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
169
192
sed -i " s/role_id:.*/role_id: $( cat /tmp/barbican-role-id) /g" $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
170
193
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
171
194
rm /tmp/barbican-role-id
172
195
}
173
196
174
197
function deploy_overcloud() {
175
- kayobe overcloud host configure
198
+ run_kayobe overcloud host configure
176
199
177
200
deploy_ceph
178
201
@@ -185,19 +208,19 @@ function deploy_overcloud() {
185
208
generate_barbican_secrets
186
209
187
210
# Deploy all services
188
- kayobe overcloud service deploy
211
+ run_kayobe overcloud service deploy
189
212
190
213
copy_ca_to_seed
191
214
}
192
215
193
216
function deploy_wazuh() {
194
- kayobe infra vm host configure
217
+ run_kayobe infra vm host configure
195
218
196
219
# Deploy Wazuh
197
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-secrets.yml
220
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-secrets.yml
198
221
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /wazuh-secrets.yml
199
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-manager.yml
200
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-agent.yml
222
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-manager.yml
223
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-agent.yml
201
224
}
202
225
203
226
function create_resources() {
@@ -317,7 +340,7 @@ function deploy_full() {
317
340
318
341
deploy_seed
319
342
deploy_overcloud
320
- if kayobe configuration dump --host wazuh-manager --var-name group_names | grep wazuh-manager & > /dev/null; then
343
+ if run_kayobe configuration dump --host wazuh-manager --var-name group_names | grep wazuh-manager & > /dev/null; then
321
344
deploy_wazuh
322
345
fi
323
346
create_resources
@@ -327,13 +350,13 @@ function deploy_full() {
327
350
function upgrade_overcloud() {
328
351
# Generate external tls certificates if it was previously disabled.
329
352
if [[ -f $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml ]] && [[ ! -f $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/certificates/haproxy.pem ]]; then
330
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml
353
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml
331
354
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/certificates/haproxy.pem
332
355
fi
333
356
334
- kayobe overcloud host upgrade
335
- kayobe overcloud host configure
336
- kayobe overcloud service upgrade
357
+ run_kayobe overcloud host upgrade
358
+ run_kayobe overcloud host configure
359
+ run_kayobe overcloud service upgrade
337
360
}
338
361
339
362
function usage() {
0 commit comments