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.
 
 
 
 

90 lines
2.0 KiB

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