Nevermind, I figured it out - turns out item.0 and item.1 weren't what I thought they were. Thanks very much, Kai!
Thank you, ap On Wednesday, December 20, 2017 at 10:16:06 AM UTC+11, [email protected] wrote: > > Hi Kai, and thank you so much for the help. > > So using the method you recommended, I'm now able to get my 10 files, > using the following task: > > - name: Create json blobs > template: > src: pin-nm.json.j2 > dest: ~/blobs/pin-nm{{ item.index }}.json > with_indexed_items: > - "{{ groups['external_yarn_bare_metal_nodes'] }}" > > Frustratingly, though, that gives me ten files named thusly: > > pin-nm<built-in method index of list object at 0x7fa45b58dc20>.json > > Any idea how to pull out the index number, or perhaps an idea of where I > can find either the documentation for the functions available to me using > with_indexed_items, or the source code? I hate to have to ask questions > like these, but I'm just not making the leap, here. > > Thank you, > > ap > > > > > On Tuesday, December 19, 2017 at 4:54:08 PM UTC+11, Kai Stian Olstad wrote: >> >> On 18.12.2017 04:59, [email protected] wrote: >> > Hi, >> > >> > I'm trying to create a batch of json files, that will pull values from >> > an >> > inventory group. >> > >> > Ideally, what I would like to have happen is 10 different files are >> > created >> > (the inventory group has 10 nodes in it), using both the position of >> > the >> > node in the inventory list and the fqdn of the node as the values that >> > are >> > populated into these json files. >> > >> > At this point, what I'm not sure how to do it create 10 separate files >> > (I >> > can create one big one), which uses the aforementioned values. >> > >> > My template (this is what generates the one big file: >> > >> > {% for node in groups['yarn-nms'] %} >> > { >> > "instanceId": "{{ loop.index }}", >> > "name": "yarn-nm", >> > "cluster": "stg", >> > "image": "{{ image }}", >> > "instance": { >> > "cpu": 24, >> > "mem": 80000 >> > }, >> > "constraints": [[ "hostname", "CLUSTER", "{{ node }}" ]] >> > } >> > {% endfor %} >> > >> > >> > I tried stuffing that loop into the task that creates the json files: >> >> One task, one file. If you need 10 files you need to loop the task and >> the json in the template. >> >> >> > --- >> > - name: Make directory for json blobs >> > file: >> > path: ~/blobs >> > state: directory >> > >> > - name: Create json blobs >> > template: >> > src: pin-nm.json.j2 >> > dest: ~/blobs/pin-nm{% for node in groups['yarn-nms'] %}{{ >> > loop.index }}{% endfor %}.json >> > >> > >> > but instead of giving me 10 different files, it gave me one file named >> > pin-nm12345678910.json. And not surprisingly, the template didn't >> > inherit >> > any values. >> >> Ansible is just going to create one file as you have seen, and the >> template loop for dest is fully expanded. >> >> >> > >> > Can anyone offer any suggestions on how to create the 10 separate >> > files, >> > with the values passed through to the templates? Or even just how to >> > create >> > a loop that creates the 10 different files - I'm pretty sure I could >> > figure >> > it out from there. >> >> Remove the loop in the template file and create the loop on the task, >> you can use with_indexed_items[1] for this >> >> >> [1] >> >> http://docs.ansible.com/ansible/latest/playbooks_loops.html#looping-over-a-list-with-an-index >> >> >> -- >> Kai Stian Olstad >> > -- 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/33156f59-5c6d-4dfa-81ba-b76e8ab873ac%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
