JSON needs to be valid JSON :)


On Thu, Dec 11, 2014 at 2:30 PM, Mikael Sandström <[email protected]> wrote:

> Thanks!
>
> I cant get it to behave as a 'normal' list though, so obviously I'm doing
> something wrong.
>
> If I run this playbook without extra vars:
>
>
> ---
> - hosts: localhost
>   connection: local
>   gather_facts: false
>   vars:
>     listname:
>       - name: ble
>         version: 1
>         path: /some/path
>
>   tasks:
>   - name: test extravars
>     debug: msg="version - {{ item.version }}"
>     #debug: msg=""
>     with_items: listname
>
>
>
> It works as expected, and I get this:
>
> TASK: [test extravars]
> ********************************************************
> ok: [localhost] => (item={'path': '/some/path', 'version': 1, 'name':
> 'ble'}) => {
>     "item": {
>         "name": "ble",
>         "path": "/some/path",
>         "version": 1
>     },
>     "msg": *"version - 1"*
> }
>
>
> However, if I try to do this
>
> ansible-playbook extravar.yml *-e '{"listname":["name: foo, path:
> /asd/bsdfr, version: 2"]}'*
>
>
> PLAY [localhost]
> **************************************************************
>
>
> TASK: [test extravars]
> ********************************************************
> fatal: [localhost] => One or more undefined variables: 'unicode object'
> has no attribute 'version'
>
>
> And I guess that is because everything in 'item' is treated like one string
>
>
>
> TASK: [test extravars]
> ********************************************************
> ok: [localhost] => (item=name: foo, path: /asd/bsdfr, version: 2) => {
>     "item": "name: foo, path: /asd/bsdfr, version: 2",
>     "msg": ""
> }
>
>
> If I quote each pair, I get 3 different 'items'
>
> ansible-playbook extravar.yml -e '{"listname":["name: foo", "path:
> /asd/bsdfr", "version: 2"]}'
>
>
> PLAY [localhost]
> **************************************************************
>
>
> TASK: [test extravars]
> ********************************************************
> ok: [localhost] => (item=name: foo) => {
>     "item": "name: foo",
>     "msg": ""
> }
> ok: [localhost] => (item=path: /asd/bsdfr) => {
>     "item": "path: /asd/bsdfr",
>     "msg": ""
> }
> ok: [localhost] => (item=version: 2) => {
>     "item": "version: 2",
>     "msg": ""
>
>
>
> So, how should the quotes be placed to get it to behave like a 'normal'
> list? Or is there something else I need to do?
>
> regards
> /M
>
>
>
>
> Den torsdagen den 11:e december 2014 kl. 18:36:19 UTC+1 skrev James
> Cammarata:
>>
>> Hi Mikael,
>>
>> There are essentially two ways you can do this:
>>
>> 1) Use quoted JSON
>> 2) Put the data in either a JSON or YAML file.
>>
>> Please refer to the documentation here for more details:
>> http://docs.ansible.com/playbooks_variables.html#
>> passing-variables-on-the-command-line
>>
>> Thanks!
>>
>> On Thu, Dec 11, 2014 at 11:22 AM, Mikael Sandström <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>> I got a list that looks like this
>>>
>>> listname:
>>>       - name: ble
>>>         version: 1
>>>         path: /some/path
>>>         ...
>>>         ...
>>>
>>>
>>> which is accessed as
>>>
>>> - name: do something
>>>   shell: run some command
>>>   with_items: listname
>>>
>>>
>>> If I want to pass the list to a playbook as an --extra-vars, how would I
>>> do that?
>>>
>>> regards
>>> /M
>>>
>>> --
>>> 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/bd3b24c6-0936-41a6-87ed-
>>> 581142f0b354%40googlegroups.com
>>> <https://groups.google.com/d/msgid/ansible-project/bd3b24c6-0936-41a6-87ed-581142f0b354%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> 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/c670d5db-060a-4208-9aff-d921b6bf258b%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/c670d5db-060a-4208-9aff-d921b6bf258b%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CA%2BnsWgzKb0AfBUV2FBRP1COwKf94mkruSE9pO%3D-%2B7dJtofCYpQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to