|
|
- #!/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()
|