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.