Of course! I keep forgetting that the "programmy" stuff should go in Python 
:)
When you talk about a 'fact' module, though, what do you mean? Writing a 
module that takes in a bunch of data formatted in some way and then 
exit_json( [changed=False,] yourStuff=yourStuff ), where "yourStuff" is a 
dictionary/object/etc that you can then register and iterate over the 
results? Or, is there some sort of API method where modules can set facts 
themselves? I ask because I have a similar task, in that I need to read in 
a file and then perform a set of tasks based on the results.

For example, if my file "foo.xml" looks like:
<foos>
  <foo bar="a">
    <baz Name="a1">
    <baz Name="a2">
  </foo>
  <foo bar="b">
    <baz Name="b1">
    <baz Name="b2">
    <baz Name="b3">
  </foo>
</foos>

Then, for each foo, I will have to do one set of tasks to handle the bar 
value and then another set of tasks to handle each bar's baz. I am 
wondering how I can accomplish this while operating within the Ansible 
paradigm. Can you elaborate a little more on how this could/should be 
accomplished? Thanks!


On Friday, June 20, 2014 at 5:03:30 PM UTC-4, Michael DeHaan wrote:
>
> Might it be easier to write a simple fact module that returns what cores 
> you have, rather than doing the register?
>
> This way you could return a hash table indexed by core name, as well as a 
> list of cores, which might make the playbooks more intuitive and less 
> relying on some rather "programmy" concepts that Ansible usually tries to 
> avoid.
>
>
>
>
> On Fri, Jun 20, 2014 at 7:50 AM, Tom Cannaerts <[email protected] 
> <javascript:>> wrote:
>
>> I'm writing a playbook to create a number of solr cores, but I'm running 
>> into some issues.
>>
>> I started with a task file that would be included, but appearantly 
>> include and with_items isn't supported.
>>
>> The idea was, that for every core I would check that the base folder of 
>> the core existed. This result (stat) would be saved to a variable.
>>
>> - name: check for core existence
>>   stat: path=/usr/share/solr/live/solr/cores/{{ item.name }}
>>   register: st_cores
>>   with_items: solr_cores
>>
>> Then, to enumerate over it in later tasks, I could use the 
>> with_indexed_items and use a conditional when to exclude the cores that 
>> were already present
>> eg:
>>
>> - name: Copy example core
>>   shell: cp -R /usr/share/solr/example/solr/collection1/conf/* 
>> /usr/share/solr/live/solr/cores/{{ item.0.name }}/conf/
>>   with_items: solr_cores
>>   when: not st_cores.results[{{ item.0 }}].stat.exists
>>
>> This works fine for most of the tasks, but I also have a number of tasks 
>> that use with_items themselves. I managed to combine them using 
>> with_nested, but I can't figure out how to include the conditional, as I 
>> don't have the index as with with_indexed_items
>>
>> eg.
>> - name: Copy some files
>>   shell: cp /some/folder/{{ item[1] }} /usr/share/solr/cores/{{ 
>> item[0].name }}/
>>   with_nested:
>>     - solr_cores
>>     - [ 'somefile.xml', 'anotherfile.xml', 'evenmorefiles.xml' ]
>>   when: not st_cores.results[{{ item[0].0 }}].stat.exists
>>     
>> Basically, I can't check stat results, as I don't know the index of the 
>> current item in that array. Any ideas on how I can solve this? Either I 
>> need a way to be able to check for the file existance on some other way 
>> that does work with with_nested, or I need some sort of creative workaround 
>> for the include with_items problem. 
>>
>>  -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/a2683cae-affc-4636-8f3e-3dd76b02c143%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/a2683cae-affc-4636-8f3e-3dd76b02c143%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/d6abd915-063c-434c-9f62-7b6e094b2dca%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to