Playbooks to a new Lilik
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

109 lines
2.6 KiB

#!/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(path, text):
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()