So you CAN manipulate the data structure? Glad it's working for you.
On Wednesday, 28 January 2015 21:18:10 UTC, Evan Tahler wrote:
>
> It looks like with_subelements is what I wanted:
>
> - name: run deployment tasks
> shell: >
> cd ~/www/projects/{{ item.0.name }} && {{ item.1.cmd }}
> with_subelements:
> - big_var_collection
> - deployment_tasks
>
> I added a 'name' property to the hash (which was the same as the key) to
> make this work:
>
> big_var_collection:
> application_1:
> name: application_1
> deployment_tasks:
> - { cmd: 'bundle exec rake thing:1', metadata: 'yay' }
> - { cmd: 'bundle exec rake thing:2', metadata: 'boo' }
> application_2:
> name: application_2
> deployment_tasks:
> - { cmd: 'bundle exec rake thing:3', metadata: 'yay' }
> - { cmd: 'bundle exec rake thing:4', metadata: 'boo' }
>
> On Wednesday, January 28, 2015 at 10:43:27 AM UTC-8, Evan Tahler wrote:
>>
>> The data structure is defined elsewhere, and it would easiest not to
>> change it.
>>
>> I'm currently migrating from Chef to Ansible, and the only pain point
>> I've had has been the lack of data manipulation tools. In chef you have an
>> (almost) full ruby VM to work with, so hash manipulation, loops, etc are
>> all available to you.
>>
>> What is the best practice in Ansible-land? Should I write a python
>> plugin to manipulate the data structure? I assume that I'm just doing
>> something wrong with my loop syntax...
>>
>> On Wednesday, January 28, 2015 at 10:28:05 AM UTC-8, [email protected]
>> wrote:
>>>
>>> Hello.
>>>
>>> I'm wondering if this data stucture is something you're getting back
>>> from another application or external source? If not, are you able to define
>>> the structure in anyway you desire? If not, why not?
>>>
>>> Here is the code I managed to come up with, which has a much, much
>>> simpler data structure and does the same job.
>>>
>>> ---
>>> - hosts: all
>>> sudo: no
>>> vars:
>>> applications:
>>> # - { cmd: 'bundle exec rake thing:1', path: 'application_1' }
>>> - { cmd: 'uptime', path: 'application_1' }
>>> - { cmd: 'uptime', path: 'application_2' }
>>> - { cmd: 'uptime', path: 'application_3' }
>>> - { cmd: 'uptime', path: 'application_4' }
>>> tasks:
>>> - name: Run dev tasks
>>> shell: >
>>> cd {{item.path}} && {{item.cmd}}
>>> with_items: applications
>>>
>>>
>>>
>>> I hope this helps.
>>>
>>> On Wednesday, 28 January 2015 02:11:01 UTC, Evan Tahler wrote:
>>>>
>>>> Hi All! I cannot sort out how to itterate though this loop properly:
>>>>
>>>> I have 2 data dictionaries:
>>>>
>>>> applications:
>>>> - application_1
>>>> - application_2
>>>>
>>>> and
>>>>
>>>> big_var_collection:
>>>> application_1:
>>>> deployment_tasks:
>>>> - { cmd: 'bundle exec rake thing:1', metadata: 'yay' }
>>>> - { cmd: 'bundle exec rake thing:2', metadata: 'boo' }
>>>> application_2:
>>>> deployment_tasks:
>>>> - { cmd: 'bundle exec rake thing:3', metadata: 'yay' }
>>>> - { cmd: 'bundle exec rake thing:4', metadata: 'boo' }
>>>>
>>>> In this example, I want to run 4 commands: cd into the directory and
>>>> run the `cmd`, IE:
>>>>
>>>> cd ~/www/projects/application_1 && bundle exec rake thing:1
>>>> cd ~/www/projects/application_1 && bundle exec rake thing:2
>>>> cd ~/www/projects/application_2 && bundle exec rake thing:3
>>>> cd ~/www/projects/application_2 && bundle exec rake thing:4
>>>>
>>>> I would have assumed that the following loop would work, but I always
>>>> end up with an access error of some sort
>>>>
>>>> - name: run deployment tasks
>>>> shell: >
>>>> cd ~/www/projects/{{ item.0 }} && {{ item.1.cmd }}
>>>> with_nested:
>>>> - applications
>>>> - big_var_collection[item.0].deployment_tasks
>>>>
>>>> Help?
>>>>
>>>
--
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/fa002590-b2db-49c6-9c63-992110d84872%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.