I just realized I left out one key piece of info on this.  It's all running 
on localhost always.  The idea with this is we're generating a series of 
config files locally that a separate script later is going to deal with 
actually pushing out (for various reasons it needs to be outside of Ansible 
for now).  So unfortunately I don't think we can take advantage of 
inventory or group.

On Wednesday, October 19, 2016 at 8:39:35 AM UTC-5, Nick Tkach wrote:
>
> Yes, thanks I think that does help some.  I think the part I'm missing 
> still is how to somehow pull in each file name one at a time.  I know in 
> pseudo-code it's something like
>
> for( one_filename in fileglob( vars/*.yml) {
>
> - include_vars "{{ one_filename ))"
> - debug: msg="{{ site_name }} on port {{ port }}"
> }
>
> I know you can't just do something like
>
> - include_vars "{{ item }}"
>   with_fileglob:
>     - "vars/*.yml"
>
> since that's going to just pull in the whole list immediately and print 
> out the results at the end.
>
>
> On Tuesday, October 18, 2016 at 3:56:52 PM UTC-5, Alexander H. Laughlin 
> wrote:
>>
>> Have you considered conditional includes 
>> <http://docs.ansible.com/ansible/playbooks_conditionals.html#applying-when-to-roles-and-includes>?
>>  
>> Along with include_vars 
>> <http://docs.ansible.com/ansible/include_vars_module.html#include-vars-load-variables-from-files-dynamically-within-a-task>
>>  
>> I think you should be able to achieve the desired effect.
>>
>> Something like the below:
>>
>> ---
>>
>> - name: include_vars example 
>>
>>   hosts: all
>>
>>   tasks:
>>
>>     - name: Debug hostname.
>>
>>       debug:
>>
>>         var: inventory_hostname
>>
>>       # Different filenames with the same variables *should* override 
>> the variables for each instance of playbook execution.
>>
>>       # But precedence is tricky and I've had trouble getting things like 
>> this to work in the past, so ymmv.
>>            - name: Include variables based on hostname.
>>
>>       include_vars: "vars/{{ inventory_hostname }}.yml"
>>
>>     - name: Print site name and port number.
>>              debug:
>>
>>         msg: "My site {{ site_name }} is running on port {{ port_number 
>> }}."
>>
>> ...
>>
>> # vim: ft=ansible:
>>
>> Sorry if the formatting is a little wonky the code widget is a little 
>> weird sometimes.
>>
>> Hope this helps, best of luck.
>>
>> Alex
>>
>>
>>
>> On Tuesday, October 18, 2016 at 12:02:43 PM UTC-7, Nick Tkach wrote:
>>>
>>> So, the general idea is I've got a playbook that has a set of "property" 
>>> files (yaml format).  Different filenames, but the variable names inside 
>>> are the same:
>>>
>>> group_vars/siteA.yml
>>> ---
>>> site_name: appA
>>> port: 8080
>>>
>>> group_vars/siteB.yml
>>> ---
>>> site_name: appB
>>> port: 8090
>>>
>>>
>>>
>>> and so on.  I want to run a task that does work using each of those in 
>>> turn like
>>>
>>> - name: print out the value of site_name and port for each of the 
>>> group_vars files
>>>   debug: msg="My site {{ site_name }} is on port {{ port }}"
>>>
>>>
>>>
>>> So you'd expect output like
>>>
>>> My site appA is on port 8080
>>> My site appB is on port 8090
>>>
>>> I'm not finding a way to get this result.  You can't apply a 
>>> with_fileglob to a task block so I'm not sure how to do something to *both* 
>>> "reset" the variables (something like var_files?) *and* do some kind of 
>>> work with the values from *that* file.  I'm assuming I'm missing something 
>>> about how to look at this?
>>>
>>

-- 
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/2b2ab616-4b99-449d-85c5-155584cdb2ee%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to