from __future__ import (absolute_import, division, print_function) __metaclass__ = type import json import sys from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.facts.utils import ( get_file_content, get_file_lines, get_mount_size, ) def main(): module = AnsibleModule( argument_spec=dict( test=dict(type='str', default='strip'), touch_file=dict(type='str', default='/dev/null'), line_sep_file=dict(type='str', default='/dev/null'), line_sep_sep=dict(type='str', default='\n'), ) ) test = module.params['test'] facts = {} if test == 'strip': etc_passwd = get_file_content('/etc/passwd') etc_passwd_unstripped = get_file_content('/etc/passwd', strip=False) facts['etc_passwd_newlines'] = etc_passwd.count('\n') facts['etc_passwd_newlines_unstripped'] = etc_passwd_unstripped.count('\n') elif test == 'default': path = module.params['touch_file'] facts['touch_default'] = get_file_content(path, default='i am a default') elif test == 'line_sep': path = module.params['line_sep_file'] sep = module.params['line_sep_sep'] facts['line_sep'] = get_file_lines(path, line_sep=sep) elif test == 'invalid_mountpoint': facts['invalid_mountpoint'] = get_mount_size('/doesnotexist') result = { 'changed': False, 'ansible_facts': facts, } module.exit_json(**result) main()