All variables in complex args again
Also updates the CHANGELOG to note the slight change, where bare variables in args are no longer allowed to be bare variables Fixes #13518
This commit is contained in:
parent
491fd754f1
commit
8716bf8021
2 changed files with 30 additions and 1 deletions
20
CHANGELOG.md
20
CHANGELOG.md
|
@ -82,6 +82,26 @@ newline being stripped you can change your playbook like this:
|
||||||
"msg": "Testing some things"
|
"msg": "Testing some things"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* When specifying complex args as a variable, the variable must use the full jinja2
|
||||||
|
variable syntax ('{{var_name}}') - bare variable names there are no longer accepted.
|
||||||
|
In fact, even specifying args with variables has been deprecated, and will not be
|
||||||
|
allowed in future versions:
|
||||||
|
|
||||||
|
```
|
||||||
|
---
|
||||||
|
- hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: false
|
||||||
|
vars:
|
||||||
|
my_dirs:
|
||||||
|
- { path: /tmp/3a, state: directory, mode: 0755 }
|
||||||
|
- { path: /tmp/3b, state: directory, mode: 0700 }
|
||||||
|
tasks:
|
||||||
|
- file:
|
||||||
|
args: "{{item}}"
|
||||||
|
with_items: my_dirs
|
||||||
|
```
|
||||||
|
|
||||||
###Plugins
|
###Plugins
|
||||||
|
|
||||||
* Rewritten dnf module that should be faster and less prone to encountering bugs in cornercases
|
* Rewritten dnf module that should be faster and less prone to encountering bugs in cornercases
|
||||||
|
|
|
@ -137,7 +137,16 @@ class ModuleArgsParser:
|
||||||
# than those which may be parsed/normalized next
|
# than those which may be parsed/normalized next
|
||||||
final_args = dict()
|
final_args = dict()
|
||||||
if additional_args:
|
if additional_args:
|
||||||
final_args.update(additional_args)
|
if isinstance(additional_args, string_types):
|
||||||
|
templar = Templar(loader=None)
|
||||||
|
if templar._contains_vars(additional_args):
|
||||||
|
final_args['_variable_params'] = additional_args
|
||||||
|
else:
|
||||||
|
raise AnsibleParserError("Complex args containing variables cannot use bare variables, and must use the full variable style ('{{var_name}}')")
|
||||||
|
elif isinstance(additional_args, dict):
|
||||||
|
final_args.update(additional_args)
|
||||||
|
else:
|
||||||
|
raise AnsibleParserError('Complex args must be a dictionary or variable string ("{{var}}").')
|
||||||
|
|
||||||
# how we normalize depends if we figured out what the module name is
|
# how we normalize depends if we figured out what the module name is
|
||||||
# yet. If we have already figured it out, it's an 'old style' invocation.
|
# yet. If we have already figured it out, it's an 'old style' invocation.
|
||||||
|
|
Loading…
Reference in a new issue