diff --git a/changelogs/fragments/puppet_debugging_options.yaml b/changelogs/fragments/puppet_debugging_options.yaml new file mode 100644 index 00000000000..6aab6c54337 --- /dev/null +++ b/changelogs/fragments/puppet_debugging_options.yaml @@ -0,0 +1,5 @@ +--- +minor_changes: + - puppet - Add support for --debug, --verbose, --summarize + https://github.com/ansible/ansible/issues/37986 + - puppet - Add support for setting logdest to both stdout and syslog via 'all' diff --git a/lib/ansible/modules/system/puppet.py b/lib/ansible/modules/system/puppet.py index a54c65f06d1..ddd0dd7c4cb 100644 --- a/lib/ansible/modules/system/puppet.py +++ b/lib/ansible/modules/system/puppet.py @@ -43,9 +43,10 @@ options: description: - Puppet environment to be used. logdest: - description: - - Where the puppet logs should go, if puppet apply is being used. - choices: [ stdout, syslog ] + description: | + Where the puppet logs should go, if puppet apply is being used. C(all) + will go to both C(stdout) and C(syslog). + choices: [ stdout, syslog, all ] default: stdout version_added: "2.1" certname: @@ -61,6 +62,18 @@ options: - Execute a specific piece of Puppet code. - It has no effect with a puppetmaster. version_added: "2.1" + summarize: + description: + - Whether to print a transaction summary + version_added: "2.7" + verbose: + description: + - Print extra information + version_added: "2.7" + debug: + description: + - Enable full debugging + version_added: "2.7" requirements: - puppet author: @@ -90,6 +103,12 @@ EXAMPLES = ''' - name: Run puppet using a specific tags puppet: tags: update,nginx + +- name: Run a manifest with debug, log to both syslog and stdout, specify module path + puppet: + modulepath: /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules + logdest: all + manifest: /var/lib/example/puppet_step_config.pp ''' import json @@ -129,7 +148,9 @@ def main(): puppetmaster=dict(type='str'), modulepath=dict(type='str'), manifest=dict(type='str'), - logdest=dict(type='str', default='stdout', choices=['stdout', 'syslog']), + logdest=dict(type='str', default='stdout', choices=['stdout', + 'syslog', + 'all']), # internal code to work with --diff, do not use show_diff=dict(type='bool', default=False, aliases=['show-diff']), facts=dict(type='dict'), @@ -138,6 +159,9 @@ def main(): certname=dict(type='str'), tags=dict(type='list'), execute=dict(type='str'), + summarize=dict(type='bool', default=False), + debug=dict(type='bool', default=False), + verbose=dict(type='bool', default=False), ), supports_check_mode=True, mutually_exclusive=[ @@ -212,6 +236,8 @@ def main(): cmd = "%s apply --detailed-exitcodes " % base_cmd if p['logdest'] == 'syslog': cmd += "--logdest syslog " + if p['logdest'] == 'all': + cmd += " --logdest syslog --logdest stdout" if p['modulepath']: cmd += "--modulepath='%s'" % p['modulepath'] if p['environment']: @@ -228,6 +254,12 @@ def main(): cmd += " --execute '%s'" % p['execute'] else: cmd += pipes.quote(p['manifest']) + if p['summarize']: + cmd += " --summarize" + if p['debug']: + cmd += " --debug" + if p['verbose']: + cmd += " --verbose" rc, stdout, stderr = module.run_command(cmd) if rc == 0: