#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function from ansible.module_utils.basic import * DOCUMENTATION = ''' --- module: container_file_write author: Edoardo Putti short_description: Write to a file in a container description: - Write the content to a file options: name: required: true description: - Name of the container path: required: true description: - path of the file to check text: required: true description: - content to write append: required: false default: false description: - append instead of overwrite ''' def write_file_in_container(args): (path, text) = args with open(path, 'w') as out: out.write(text) return 0 def append_file_in_container(path, text): with open(path, 'a') as out: out.write(text) return 0 def main(): module = AnsibleModule( argument_spec = dict( name = dict( required = True, type = 'str', ), path = dict( required = True, type = 'str', ), text = dict( required = True, type = 'str', ), append = dict( default = False, required = False, type = 'bool', ), ), ) try: import lxc except ImportError: module.fail_json( changed = False, failed = True, msg = 'Error importing lxc, is python-lxc installed?', ) container_name = module.params.get('name') file_path = module.params.get('path') text = module.params.get('text') append = module.params.get('append') result = {} result['name'] = container_name result['path'] = file_path if container_name in lxc.list_containers(): container = lxc.Container(container_name) if append: writing_function = append_file_in_container else: writing_function = write_file_in_container file_exists = container.attach_wait( writing_function, (file_path, text,), env_policy = lxc.LXC_ATTACH_CLEAR_ENV, ) else: result['changed'] = False result['failed'] = True result['msg'] = "Target container does not exists" module.exit_json(**result) if __name__ == '__main__': main()