Merge "Add --detailed-exitcodes when running puppet via ansible"

This commit is contained in:
Zuul 2017-11-01 02:17:07 +00:00 committed by Gerrit Code Review
commit 1c0909939b
2 changed files with 14 additions and 5 deletions

View File

@ -15,9 +15,10 @@
command: >-
puppet apply {{ host_puppet_config_debug|default('') }}
--modulepath=/etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
--detailed-exitcodes
--logdest syslog --logdest console --color=false
/var/lib/tripleo-config/puppet_step_config.pp
changed_when: false
changed_when: outputs.rc == 2
check_mode: no
register: outputs
failed_when: false
@ -25,7 +26,7 @@
become: true
- debug: var=(outputs.stderr|default('')).split('\n')|union(outputs.stdout_lines|default([]))
when: outputs is defined
failed_when: outputs|failed
failed_when: outputs.rc not in [0, 2]
######################################
# Generate config via docker-puppet.py
######################################

View File

@ -223,8 +223,14 @@ def mp_puppet_config((config_volume, puppet_tags, manifest, config_image, volume
touch /tmp/the_origin_of_time
sync
set +e
FACTER_hostname=$HOSTNAME FACTER_uuid=docker /usr/bin/puppet apply \
--color=false --logdest syslog --logdest console $TAGS /etc/config.pp
--detailed-exitcodes --color=false --logdest syslog --logdest console $TAGS /etc/config.pp
rc=$?
set -e
if [ $rc -ne 2 -a $rc -ne 0 ]; then
exit $rc
fi
# Disables archiving
if [ -z "$NO_ARCHIVE" ]; then
@ -304,7 +310,9 @@ def mp_puppet_config((config_volume, puppet_tags, manifest, config_image, volume
subproc = subprocess.Popen(dcmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, env=env)
cmd_stdout, cmd_stderr = subproc.communicate()
if subproc.returncode != 0:
# puppet with --detailed-exitcodes will return 0 for success and no changes
# and 2 for success and resource changes. Other numbers are failures
if subproc.returncode not in [0, 2]:
log.error('Failed running docker-puppet.py for %s' % config_volume)
if cmd_stdout:
log.error(cmd_stdout)
@ -354,7 +362,7 @@ returncodes = list(p.map(mp_puppet_config, process_map))
config_volumes = [pm[0] for pm in process_map]
success = True
for returncode, config_volume in zip(returncodes, config_volumes):
if returncode != 0:
if returncode not in [0, 2]:
log.error('ERROR configuring %s' % config_volume)
success = False