Add prefixing and suffixing fuctionality to assemble
This commit is contained in:
parent
304a33a42b
commit
4c386dba56
1 changed files with 33 additions and 3 deletions
|
@ -62,6 +62,18 @@ options:
|
||||||
version_added: "1.4"
|
version_added: "1.4"
|
||||||
required: false
|
required: false
|
||||||
default: null
|
default: null
|
||||||
|
header:
|
||||||
|
description:
|
||||||
|
- A line to insert before the fragments
|
||||||
|
version_added: "2.2"
|
||||||
|
required: false
|
||||||
|
default: null
|
||||||
|
footer:
|
||||||
|
description:
|
||||||
|
- A line to insert after the fragments
|
||||||
|
version_added: "2.2"
|
||||||
|
required: false
|
||||||
|
default: null
|
||||||
remote_src:
|
remote_src:
|
||||||
description:
|
description:
|
||||||
- If False, it will search for src at originating/master machine, if True it will
|
- If False, it will search for src at originating/master machine, if True it will
|
||||||
|
@ -106,18 +118,26 @@ EXAMPLES = '''
|
||||||
|
|
||||||
# Copy a new "sshd_config" file into place, after passing validation with sshd
|
# Copy a new "sshd_config" file into place, after passing validation with sshd
|
||||||
- assemble: src=/etc/ssh/conf.d/ dest=/etc/ssh/sshd_config validate='/usr/sbin/sshd -t -f %s'
|
- assemble: src=/etc/ssh/conf.d/ dest=/etc/ssh/sshd_config validate='/usr/sbin/sshd -t -f %s'
|
||||||
|
|
||||||
|
# Create a PHP configuration file with opening and closing PHP tags
|
||||||
|
- assemble: src=/etc/someapp/fragments dest=/etc/someapp/someapp.php header='<?php' footer='?>'
|
||||||
'''
|
'''
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# Support method
|
# Support method
|
||||||
|
|
||||||
def assemble_from_fragments(src_path, delimiter=None, compiled_regexp=None, ignore_hidden=False):
|
def assemble_from_fragments(src_path, delimiter=None, compiled_regexp=None, ignore_hidden=False, header=None, footer=None):
|
||||||
''' assemble a file from a directory of fragments '''
|
''' assemble a file from a directory of fragments '''
|
||||||
tmpfd, temp_path = tempfile.mkstemp()
|
tmpfd, temp_path = tempfile.mkstemp()
|
||||||
tmp = os.fdopen(tmpfd,'w')
|
tmp = os.fdopen(tmpfd,'w')
|
||||||
delimit_me = False
|
delimit_me = False
|
||||||
add_newline = False
|
add_newline = False
|
||||||
|
|
||||||
|
if header is not None:
|
||||||
|
if not header.endswith('\n'):
|
||||||
|
header += '\n'
|
||||||
|
tmp.write(header)
|
||||||
|
|
||||||
for f in sorted(os.listdir(src_path)):
|
for f in sorted(os.listdir(src_path)):
|
||||||
if compiled_regexp and not compiled_regexp.search(f):
|
if compiled_regexp and not compiled_regexp.search(f):
|
||||||
continue
|
continue
|
||||||
|
@ -148,6 +168,13 @@ def assemble_from_fragments(src_path, delimiter=None, compiled_regexp=None, igno
|
||||||
else:
|
else:
|
||||||
add_newline = True
|
add_newline = True
|
||||||
|
|
||||||
|
if footer is not None:
|
||||||
|
if add_newline: # last fragment did not end with \n
|
||||||
|
footer = '\n' + footer
|
||||||
|
if not footer.endswith('\n'):
|
||||||
|
footer += '\n'
|
||||||
|
tmp.write(footer)
|
||||||
|
|
||||||
tmp.close()
|
tmp.close()
|
||||||
return temp_path
|
return temp_path
|
||||||
|
|
||||||
|
@ -171,6 +198,8 @@ def main():
|
||||||
argument_spec = dict(
|
argument_spec = dict(
|
||||||
src = dict(required=True),
|
src = dict(required=True),
|
||||||
delimiter = dict(required=False),
|
delimiter = dict(required=False),
|
||||||
|
header = dict(required=False),
|
||||||
|
footer = dict(required=False),
|
||||||
dest = dict(required=True),
|
dest = dict(required=True),
|
||||||
backup=dict(default=False, type='bool'),
|
backup=dict(default=False, type='bool'),
|
||||||
remote_src=dict(default=False, type='bool'),
|
remote_src=dict(default=False, type='bool'),
|
||||||
|
@ -188,6 +217,8 @@ def main():
|
||||||
dest = os.path.expanduser(module.params['dest'])
|
dest = os.path.expanduser(module.params['dest'])
|
||||||
backup = module.params['backup']
|
backup = module.params['backup']
|
||||||
delimiter = module.params['delimiter']
|
delimiter = module.params['delimiter']
|
||||||
|
header = module.params['header']
|
||||||
|
footer = module.params['footer']
|
||||||
regexp = module.params['regexp']
|
regexp = module.params['regexp']
|
||||||
compiled_regexp = None
|
compiled_regexp = None
|
||||||
ignore_hidden = module.params['ignore_hidden']
|
ignore_hidden = module.params['ignore_hidden']
|
||||||
|
@ -209,7 +240,7 @@ def main():
|
||||||
if validate and "%s" not in validate:
|
if validate and "%s" not in validate:
|
||||||
module.fail_json(msg="validate must contain %%s: %s" % validate)
|
module.fail_json(msg="validate must contain %%s: %s" % validate)
|
||||||
|
|
||||||
path = assemble_from_fragments(src, delimiter, compiled_regexp, ignore_hidden)
|
path = assemble_from_fragments(src, delimiter, compiled_regexp, ignore_hidden, header, footer)
|
||||||
path_hash = module.sha1(path)
|
path_hash = module.sha1(path)
|
||||||
result['checksum'] = path_hash
|
result['checksum'] = path_hash
|
||||||
|
|
||||||
|
@ -251,4 +282,3 @@ def main():
|
||||||
from ansible.module_utils.basic import *
|
from ansible.module_utils.basic import *
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue