Use `from_json` during the "last mile", as the set_fact is casting that
output back to a string.

Such as:

{% for env in envs|from_json|dictsort %}


and drop `from_json` from your set_fact.  Or just use
`external.stdout|from_json|dictsort` where you need it, and don't use
set_fact.

On Wed, Nov 4, 2015 at 10:03 AM, Bence Takács <[email protected]>
wrote:

> UPDATE: Python 2.6.6
>
>
> 2015. november 4., szerda 16:46:27 UTC+1 időpontban Bence Takács a
> következőt írta:
>>
>> I have the following structure:
>>
>> "a": {
>>>          "v1": 1,
>>>          "v2": "A"
>>>      }
>>> "b": {
>>>          "v1": 2,
>>>          "v2": "B"
>>>     }
>>>
>>
>> It is read from an external json source using:
>>
>>> - set_fact: envs="{{ external.stdout | from_json }}"
>>>
>>>
>> I can loop/iterate over it only by using with_dict:
>>
>> - debug: msg="Item is {{ item.key }} with value {{ item.value.v1}} and{{ 
>> item.value.v2}}"
>>>   with_dict: envs
>>>
>>>
>> but if I try anything else it throws exception:
>>
>> AttributeError: 'unicode' object has no attribute 'items'
>>>
>>
>> I tried the following:
>>
>>> - set_fact: envs_list="{{ envs | dictsort }}"
>>>
>>>
>> and:
>>
>>> - debug: var=item
>>>   with_items: envs.items()
>>>
>>>
>> and inside template:
>>
>>> {% for env in envs|dictsort %}
>>>
>>>
>> and:
>>
>>> {% for env, setting in envs.iteritems() %}
>>>
>>>
>> ...with the same result.
>>
>> I would  need to use that structure inside a template...
>>
>> I'm using ansible 1.9.1 on CentOS 6
>>
>> Any idea how to solve that?
>>
> --
> 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/4dd854c0-f9e9-4ec1-80f1-6ad4548151f4%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/4dd854c0-f9e9-4ec1-80f1-6ad4548151f4%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/CAD8N0v8bEuUwJgcEiQOZNgwD90sdCrGXs%3DeCCPWOt5jkemWs2A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to