Introduce content argument
Copy module can take content argument, I think we should introduce this feature to config_template. It brings the possibility to use lookups for inline passing of content to template. Example, we could use: config_template: content: "{{ lookup('file',<file>) }}" to replace current behavior or: config_template: content: "{{ lookup('url','<url>',wantlist=True) | join ('\n') }}" to bring inline templating of external sources. Change-Id: Id5b2743d309f0313603afbbf84279ce0b1e49cfb Signed-off-by: Jean-Philippe Evrard <jean-philippe.evrard@rackspace.co.uk>
This commit is contained in:
parent
3d5f848a07
commit
1f404d7f97
@ -427,11 +427,25 @@ class ActionModule(ActionBase):
|
|||||||
file_path = self._loader.get_basedir()
|
file_path = self._loader.get_basedir()
|
||||||
|
|
||||||
user_source = self._task.args.get('src')
|
user_source = self._task.args.get('src')
|
||||||
|
user_content = self._task.args.get('content')
|
||||||
if not user_source:
|
if not user_source:
|
||||||
|
if not user_content:
|
||||||
return False, dict(
|
return False, dict(
|
||||||
failed=True,
|
failed=True,
|
||||||
msg="No user provided [ src ] was provided"
|
msg="No user [ src ] or [ content ] was provided"
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
tmp_content = None
|
||||||
|
try:
|
||||||
|
remote_user = task_vars.get('ansible_user') or self._play_context.remote_user
|
||||||
|
if not tmp_content:
|
||||||
|
tmp_content = self._make_tmp_path(remote_user) + 'content'
|
||||||
|
except TypeError:
|
||||||
|
if not tmp_content:
|
||||||
|
tmp_content = self._make_tmp_path() + 'content'
|
||||||
|
with open(tmp_content, 'w') as f:
|
||||||
|
f.writelines(user_content)
|
||||||
|
user_source = tmp_content
|
||||||
source = self._loader.path_dwim_relative(
|
source = self._loader.path_dwim_relative(
|
||||||
file_path,
|
file_path,
|
||||||
'templates',
|
'templates',
|
||||||
|
@ -38,6 +38,26 @@
|
|||||||
- "(lookup('ini', 'new_key section=DEFAULT file=/tmp/test.ini')) == 'new_value'"
|
- "(lookup('ini', 'new_key section=DEFAULT file=/tmp/test.ini')) == 'new_value'"
|
||||||
- "(lookup('ini', 'baz section=foo file=/tmp/test.ini')) == 'bar'"
|
- "(lookup('ini', 'baz section=foo file=/tmp/test.ini')) == 'bar'"
|
||||||
|
|
||||||
|
# Test basic function of config_template with content instead of src
|
||||||
|
- name: Template test INI template
|
||||||
|
config_template:
|
||||||
|
content: "{{ lookup('file', playbook_dir + '/templates/test.ini') }}"
|
||||||
|
dest: "/tmp/test_with_content.ini"
|
||||||
|
config_overrides: "{{ test_config_ini_overrides }}"
|
||||||
|
config_type: "ini"
|
||||||
|
|
||||||
|
- name: Read test.ini
|
||||||
|
slurp:
|
||||||
|
src: /tmp/test_with_content.ini
|
||||||
|
register: ini_file_with_content
|
||||||
|
- debug:
|
||||||
|
msg: "ini - {{ ini_file_with_content.content | b64decode }}"
|
||||||
|
- name: Validate output
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "(lookup('ini', 'new_key section=DEFAULT file=/tmp/test_with_content.ini')) == 'new_value'"
|
||||||
|
- "(lookup('ini', 'baz section=foo file=/tmp/test_with_content.ini')) == 'bar'"
|
||||||
|
|
||||||
# Test list additions in config_template
|
# Test list additions in config_template
|
||||||
- name: Template test YML template
|
- name: Template test YML template
|
||||||
config_template:
|
config_template:
|
||||||
|
Loading…
Reference in New Issue
Block a user