register: fail when invalid var name is specified (#56456)

This commit is contained in:
Martin Krizek 2019-05-17 11:02:03 +02:00 committed by GitHub
parent 11c63d6c1e
commit c6b40f4d40
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 12 deletions

View file

@ -30,7 +30,7 @@ from ansible.utils.listify import listify_lookup_plugin_terms
from ansible.utils.unsafe_proxy import UnsafeProxy, wrap_var from ansible.utils.unsafe_proxy import UnsafeProxy, wrap_var
from ansible.vars.clean import namespace_facts, clean_facts from ansible.vars.clean import namespace_facts, clean_facts
from ansible.utils.display import Display from ansible.utils.display import Display
from ansible.utils.vars import combine_vars from ansible.utils.vars import combine_vars, isidentifier
display = Display() display = Display()
@ -647,6 +647,9 @@ class TaskExecutor:
# update the local copy of vars with the registered value, if specified, # update the local copy of vars with the registered value, if specified,
# or any facts which may have been generated by the module execution # or any facts which may have been generated by the module execution
if self._task.register: if self._task.register:
if not isidentifier(self._task.register):
raise AnsibleError("Invalid variable name in 'register' specified: '%s'" % self._task.register)
vars_copy[self._task.register] = wrap_var(result) vars_copy[self._task.register] = wrap_var(result)
if self._task.async_val > 0: if self._task.async_val > 0:

View file

@ -3,5 +3,4 @@
set -eux set -eux
ansible-playbook test_templating_settings.yml -i ../../inventory -v "$@" ansible-playbook test_templating_settings.yml -i ../../inventory -v "$@"
ansible-playbook warn_on_register.yml -i ../../inventory -v "$@" 2>&1| grep 'is not templatable, but we found'
[ "$(ansible-playbook dont_warn_register.yml -i ../../inventory -v "$@" 2>&1| grep -c 'is not templatable, but we found')" == "0" ] [ "$(ansible-playbook dont_warn_register.yml -i ../../inventory -v "$@" 2>&1| grep -c 'is not templatable, but we found')" == "0" ]

View file

@ -1,8 +0,0 @@
- hosts: testhost
gather_facts: false
vars:
thisshouldwarn: noreally
tasks:
- name: template in register warns
debug: msg=unimportant
register: '{{ thisshouldwarn }}'

View file

@ -56,7 +56,7 @@
- name: fetch pass_json - name: fetch pass_json
uri: return_content=yes url=http://localhost:{{ http_port }}/{{ item }}.json uri: return_content=yes url=http://localhost:{{ http_port }}/{{ item }}.json
register: pass register: fetch_pass_json
with_sequence: start=0 end=4 format=pass%d with_sequence: start=0 end=4 format=pass%d
- name: check pass_json - name: check pass_json
@ -66,7 +66,7 @@
- item.0.stat.checksum == item.1.content | checksum - item.0.stat.checksum == item.1.content | checksum
with_together: with_together:
- "{{pass_checksum.results}}" - "{{pass_checksum.results}}"
- "{{pass.results}}" - "{{fetch_pass_json.results}}"
- name: checksum fail_json - name: checksum fail_json