Apply puppet in non-controller script in step.

We want to apply a puppet manifest for the non-controller role, but we
need to apply it in stages.  By loading the proper hieradata we get the
needed step configuration.

Change-Id: I07bfeee7b7d9a9b8c2c20e5d5c9ed735d0bfc842
Closes-Bug: #1664304
This commit is contained in:
Sofer Athlan-Guyot 2017-02-14 14:20:23 +01:00
parent 093949dc5d
commit 237cd2004a
3 changed files with 36 additions and 3 deletions

27
extraconfig/tasks/run_puppet.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
function run_puppet {
set -eux
local manifest="$1"
local role="$2"
local step="$3"
local rc=0
export FACTER_deploy_config_name="${role}Deployment_Step${step}"
if [ -e "/etc/puppet/hieradata/heat_config_${FACTER_deploy_config_name}.json" ]; then
set +e
puppet apply --detailed-exitcodes "${manifest}"
rc=$?
echo "puppet apply exited with exit code $rc"
else
echo "Step${step} doesn't exist for ${role}"
fi
set -e
if [ $rc -eq 2 -o $rc -eq 0 ]; then
set +xu
return 0
fi
set +xu
return $rc
}

View File

@ -44,9 +44,14 @@ if [[ -n \$NOVA_COMPUTE ]]; then
systemctl restart openstack-ceilometer-compute
fi
# Apply puppet manifest to converge just right after the \$ROLE upgrade
puppet apply /root/${ROLE}_puppet_config.pp
# Apply puppet manifest to converge just right after the ${ROLE} upgrade
$(declare -f run_puppet)
for step in 1 2 3 4 5 6; do
if ! run_puppet /root/${ROLE}_puppet_config.pp ${ROLE} \${step}; then
echo "Puppet failure at step \${step}"
exit 1
fi
done
ENDOFCAT
# ensure the permissions are OK

View File

@ -79,6 +79,7 @@ resources:
AUTH_URL: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix]}
ROLE_NAME: {{role.name}}
- get_file: ../extraconfig/tasks/pacemaker_common_functions.sh
- get_file: ../extraconfig/tasks/run_puppet.sh
- get_file: ../extraconfig/tasks/tripleo_upgrade_node.sh
{{role.name}}DeliverUpgradeScriptDeployment: