diff --git a/changelogs/fragments/768-facter.yml b/changelogs/fragments/768-facter.yml new file mode 100644 index 0000000000..d169427a81 --- /dev/null +++ b/changelogs/fragments/768-facter.yml @@ -0,0 +1,2 @@ +minor_changes: + - facter - added option for ``arguments`` (https://github.com/ansible-collections/community.general/pull/768). diff --git a/plugins/modules/system/facter.py b/plugins/modules/system/facter.py index 92c0501ea2..abd2ebc3a7 100644 --- a/plugins/modules/system/facter.py +++ b/plugins/modules/system/facter.py @@ -12,20 +12,37 @@ DOCUMENTATION = ''' module: facter short_description: Runs the discovery program I(facter) on the remote system description: -- Runs the I(facter) discovery program - (U(https://github.com/puppetlabs/facter)) on the remote system, returning - JSON data that can be useful for inventory purposes. + - Runs the C(facter) discovery program + (U(https://github.com/puppetlabs/facter)) on the remote system, returning + JSON data that can be useful for inventory purposes. +options: + arguments: + description: + - Specifies arguments for facter. + type: list + elements: str requirements: -- facter -- ruby-json + - facter + - ruby-json author: -- Ansible Core Team -- Michael DeHaan + - Ansible Core Team + - Michael DeHaan ''' EXAMPLES = ''' # Example command-line invocation -ansible www.example.net -m facter +# ansible www.example.net -m facter + +- name: Execute facter no arguments + community.general.facter: + +- name: Execute facter with arguments + community.general.facter: + arguments: + - -p + - system_uptime + - timezone + - is_virtual ''' import json @@ -34,12 +51,18 @@ from ansible.module_utils.basic import AnsibleModule def main(): module = AnsibleModule( - argument_spec=dict() + argument_spec=dict( + arguments=dict(required=False, type='list', elements='str') + ) ) - facter_path = module.get_bin_path('facter', opt_dirs=['/opt/puppetlabs/bin']) + facter_path = module.get_bin_path( + 'facter', + opt_dirs=['/opt/puppetlabs/bin']) cmd = [facter_path, "--json"] + if module.params['arguments']: + cmd += module.params['arguments'] rc, out, err = module.run_command(cmd, check_rc=True) module.exit_json(**json.loads(out))