@@ -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 disabling pipelining.
100
+ export ANSIBLE_PIPELINING=False
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
@@ -169,15 +192,15 @@ function generate_barbican_secrets() {
169
192
decrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
170
193
sed -i " s/secret_id:.*/secret_id: $( uuidgen) /g" $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
171
194
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
172
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-barbican.yml
195
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-deploy-barbican.yml
173
196
decrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
174
197
sed -i " s/role_id:.*/role_id: $( cat /tmp/barbican-role-id) /g" $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
175
198
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /secrets.yml
176
199
rm /tmp/barbican-role-id
177
200
}
178
201
179
202
function deploy_overcloud() {
180
- kayobe overcloud host configure
203
+ run_kayobe overcloud host configure
181
204
182
205
deploy_ceph
183
206
@@ -190,19 +213,19 @@ function deploy_overcloud() {
190
213
generate_barbican_secrets
191
214
192
215
# Deploy all services
193
- kayobe overcloud service deploy
216
+ run_kayobe overcloud service deploy
194
217
195
218
copy_ca_to_seed
196
219
}
197
220
198
221
function deploy_wazuh() {
199
- kayobe infra vm host configure
222
+ run_kayobe infra vm host configure
200
223
201
224
# Deploy Wazuh
202
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-secrets.yml
225
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-secrets.yml
203
226
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /wazuh-secrets.yml
204
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-manager.yml
205
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-agent.yml
227
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-manager.yml
228
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/wazuh-agent.yml
206
229
}
207
230
208
231
function create_resources() {
@@ -322,7 +345,7 @@ function deploy_full() {
322
345
323
346
deploy_seed
324
347
deploy_overcloud
325
- if kayobe configuration dump --host wazuh-manager --var-name group_names | grep wazuh-manager & > /dev/null; then
348
+ if run_kayobe configuration dump --host wazuh-manager --var-name group_names | grep wazuh-manager & > /dev/null; then
326
349
deploy_wazuh
327
350
fi
328
351
create_resources
@@ -332,13 +355,13 @@ function deploy_full() {
332
355
function upgrade_overcloud() {
333
356
# Generate external tls certificates if it was previously disabled.
334
357
if [[ -f $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml ]] && [[ ! -f $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/certificates/haproxy.pem ]]; then
335
- kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml
358
+ run_kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/vault-generate-test-external-tls.yml
336
359
encrypt_file $KAYOBE_CONFIG_PATH /environments/$KAYOBE_ENVIRONMENT /kolla/certificates/haproxy.pem
337
360
fi
338
361
339
- kayobe overcloud host upgrade
340
- kayobe overcloud host configure
341
- kayobe overcloud service upgrade
362
+ run_kayobe overcloud host upgrade
363
+ run_kayobe overcloud host configure
364
+ run_kayobe overcloud service upgrade
342
365
}
343
366
344
367
function usage() {
0 commit comments