Stephen,

I also desperately need a set_facts that works with with_items.  Have you 
had any response to these excellent use-case examples?

Ned.

On Monday, November 11, 2013 11:14:41 AM UTC-7, Stephen Gargan wrote:
>
> Michael,
>
> I've put together an implementation for an add_facts command a couple of 
> examples that show what it might be useful for here 
> https://github.com/sgargan/ansible-add-facts-examples. I think it 
> explains the intention of the command a little better and gives a concrete 
> example of the pattern I was attempting to explain above. I'm interested to 
> hear what your thoughts are.
>
> thanks,
>
> Steve.
>
> On Wednesday, 6 November 2013 22:48:22 UTC-8, Stephen Gargan wrote:
>>
>> I've a pattern that I want to apply and I'm wondering what the best 
>> practice might be for this. I have a situation where I apply a number of 
>> roles to a host and each have a number of facts or variables that I'd like 
>> to use in a final role, typically to generate a unified config for the host.
>>
>> Say I'm applying a number of roles say a, b, c that are all distinct, but 
>> each exposes a set of metrics in a uniform way. As each gets played, I'd 
>> like to add facts about the metrics for the role in such a way that I can 
>> iterate over them in a final role d to generate some aggregate config to 
>> expose all the metrics. 
>>
>> I have a number of situations that I'd like to apply this pattern so if 
>> there is a standard way to do this I'd love to hear it.
>>
>> If not, I have been mulling over extending the set_fact module to allow 
>> something like the following 
>> Say each role could add a dictionary of values to an aggregate 
>> collection, aggregated_facts, so that in d I could do
>>
>> {% for addedFactsForRole in aggregated_facts %}
>> // processing facts for key addedFactsForRole.key
>> {% for addedFact in addedFactsForRole.facts %}
>> // process addedFact.name
>> // process addedFact.value
>> {% endfor %}
>> {% endfor %}
>>
>> I have used group variables to do something similar, but this tends to 
>> get crufty as it means replicating the data in every site that I use the 
>> role and I like to be able to have very generic roles that I can reuse in 
>> different sites. If the list could dynamically built like this it would be 
>> arguably more cohesive as now I could define all of the data for the role, 
>> within the role, and still have the ability to override it at the site 
>> level with group vars.
>>
>> I'm thinking the task definition might look something like this.
>>
>>   name: Add metrics to metrics aggregate 
>>   add_fact: group=host_metrics key=$role_key fact=$item
>>   with_items: $list_of_metrics
>>
>> In the case above the list_of_metrics could be a list of single entries 
>> or a list of json blobs. I don't want to go re-inventing the wheel, this 
>> seems like a common enough scenario so I'm very curious how folks tackle 
>> it, before I go about putting this together.
>>
>> Thanks in advance,
>>
>> Steve.
>>
>

-- 
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/d6bd87d4-d208-4890-9ff1-e17d81778e6f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to