The solution is to address the variable like this (vars['variableName']):
- name: Loop
command: echo {{ item.key }}
with_dict: "{{ vars[input|lower|regex_replace(' ','')] }}"
Am Dienstag, 31. Mai 2016 14:12:52 UTC+2 schrieb Florian B:
>
> Hi everyone,
>
> I'm trying to get this example to work with ansible 2.0+. It does work
> correctly with 1.9.
>
> - hosts: localhost
> vars:
>
>
> input: "top"
>
>
> base: &base
> ? a
> ? b
>
>
> top: &top
> << : *base
> ? c
> ? d
>
> peak: &peak
> << : *top
> ? e
> ? f
>
> tasks:
> - debug: var="{{ input|lower|regex_replace(' ','') }}"
>
>
> - name: Loop
> command: echo {{ item.key }}
> with_dict: "{{ input|lower|regex_replace(' ','') }}"
>
> In short, I want to merge the dicts base, top and peak and then loop over
> all key/value pairs in the corresponding dictionary, depending on the input
> another function produces (strings).
>
> With ansible 2.0 I get the following error:
> % ansible --version
> ansible 2.0.0.2 (stable-2.0.0.1 7de237c5a1) last updated 2016/03/15
> 11:07:49 (GMT +200)
> lib/ansible/modules/core: (detached HEAD ce6619bf5d) last updated
> 2016/03/15 11:07:51 (GMT +200)
> lib/ansible/modules/extras: (detached HEAD 29af26884e) last updated
> 2016/03/15 11:07:51 (GMT +200)
> config file = /home/fbuchmeier/.ansible.cfg
> configured module search path = Default w/o overrides
>
> % ansible-playbook -c local with_dict.yml
> [WARNING]: provided hosts list is empty, only localhost is available
>
>
>
>
> PLAY
> ***************************************************************************
>
>
> TASK [setup]
> *******************************************************************
> ok: [localhost]
>
>
> TASK [debug]
> *******************************************************************
> ok: [localhost] => {
> "top": {
> "a": null,
> "b": null,
> "c": null,
> "d": null
> }
> }
>
>
> TASK [Loop]
> ********************************************************************
> fatal: [localhost]: FAILED! => {"failed": true, "msg": "ERROR! with_dict
> expects a dict"}
>
>
> PLAY RECAP
> *********************************************************************
> localhost : ok=2 changed=0 unreachable=0 failed=
> 1
>
> In ansible 1.9 I get my desired result:
> % ansible --version
> ansible 1.9.6 (detached HEAD 10a38a7652) last updated 2016/04/29 15:14:07
> (GMT +200)
> lib/ansible/modules/core: (detached HEAD 6972d0a291) last updated
> 2016/04/29 15:14:13 (GMT +200)
> lib/ansible/modules/extras: (detached HEAD 2c073442b0) last updated
> 2016/04/29 15:14:13 (GMT +200)
> configured module search path = None
>
> % ansible-playbook -i environments/localhost -c local with_dict.yml
>
>
> PLAY [localhost]
> **************************************************************
>
>
> GATHERING FACTS
> ***************************************************************
> ok: [localhost]
>
>
> TASK: [debug var="{{ input|lower|regex_replace(' ','') }}"]
> *******************
> ok: [localhost] => {
> "var": {
> "top": {
> "a": null,
> "b": null,
> "c": null,
> "d": null
> }
> }
> }
>
>
> TASK: [Loop]
> ******************************************************************
> changed: [localhost] => (item={'key': 'a', 'value': None})
> changed: [localhost] => (item={'key': 'c', 'value': None})
> changed: [localhost] => (item={'key': 'b', 'value': None})
> changed: [localhost] => (item={'key': 'd', 'value': None})
>
>
> PLAY RECAP
> ********************************************************************
> localhost : ok=3 changed=1 unreachable=0 failed=
> 0
>
> Do you have any idea how I can get this to work?
>
> Thank you very much,
>
> Florian.
>
--
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/d60725d2-5edc-4949-9c27-224e6f51d7c1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.