You have to default at every step, `default` is only applied to the deepest
level specified, so if `dir` is undefined, you would have to apply
`default` on `dir` directly too.
Maybe something like:
(dir|default({}))['owner']|default('root')
or making some assumptions that dir will either be defined or not, and when
defined it will have `owner`:
(dir|default(dict(owner='root')))['owner']
On Fri, Nov 24, 2017 at 1:20 PM, Evan Frey <[email protected]> wrote:
> I am having an issue with the default value not being honored for an
> undefined dictionary. For example, if the setup is as follows
>
> *- name: something*
> * file:*
> * path: /somepath*
> * owner: "{{ dir['owner'] | default('root') }}"*
>
> and I have a variable of
>
> *dir:*
> * owner: someowner*
>
> when I run this, a file called* /somepath *is created with the owner
> *someowner*, as expected. However, if the dictionary dir does not exist,
> I get an error of
>
> *"the field 'args' has an invalid value, which appears to include a
> variable that is undefined. The error was: 'dir' is undefined*
>
> instead of running with the default as I would have expected. if I
> flatten the variable structure to be
>
> *dir_owner: someowner*
>
> and change the task to be
>
> *- name: something*
> * file:*
> * path: /somepath*
> * owner: "{{ dir_owner | default('root') }}"*
>
> this works as expected. The owner of the file is either someowner if
> defined or root if not.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/ansible-project/47e00d9e-5792-4144-9d3a-895d19b96cc6%40googlegroups.
> com
> <https://groups.google.com/d/msgid/ansible-project/47e00d9e-5792-4144-9d3a-895d19b96cc6%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
--
Matt Martz
@sivel
sivel.net
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CAD8N0v_u70Z21fODMUnkAm3NAA9uuVgAJvzYfhRZCBJ4ELsdFA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.