#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function from ansible.module_utils.basic import * DOCUMENTATION = ''' --- module: container_file_exists author: Edoardo Putti short_description: Return whether a file is present in the container description: - Check if the given path exists on the given container options: name: required: true description: - Name of the container path: required: true description: - path of the file to check ''' def check_file_in_container(path): import os import json result = dict( exists = False, failed = False, path = path, ) if os.path.exists(path): result['exists'] = True else: result['exists'] = True print(json.dumps(result)) return 0 def main(): module = AnsibleModule( argument_spec = dict( name = dict( required = True, type = 'str', ), path = dict( required = True, type = 'str', ), ), ) 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') result = {} result['name'] = container_name result['path'] = file_path if container_name in lxc.list_containers(): container = lxc.Container(container_name) file_exists = container.attach_wait( check_file_in_container, file_path, 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()