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.
 
 
 
 

89 lines
2.1 KiB

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
from ansible.module_utils.basic import *
DOCUMENTATION = '''
---
module: container_file_content
author: Edoardo Putti
short_description: Return the content of a file
description:
- Retrieve the content for the given path on the given container
options:
name:
required: true
description:
- Name of the container
path:
required: true
description:
- path of the file to check
'''
def read_file_in_container(args):
(path, module) = args
try:
with open(path, 'r') as lines:
module.exit_json(
path = path,
text = lines.read().strip('\n'),
)
except IOError as e:
module.exit_json(
msg = e,
path = path,
)
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,
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(
read_file_in_container,
(file_path, module),
env_policy = lxc.LXC_ATTACH_CLEAR_ENV,
)
else:
module.fail_json(
available_container = lxc.list_containers(),
msg = 'Target container does not exists',
name = container_name,
path = file_path,
)
if __name__ == '__main__':
main()