On Oct 30, 2014 5:53 PM, "Michael DeHaan" <[email protected]> wrote:
>
> -e does bind pretty early, but it seems like you are using variables in
paths to "vars_files" that already resolve, so it selects what file to use
earlier.
>

I don't, actually. I don't template the vars_files path at all. All I do is
use a variable that's defined in a vars_file in a regular vars section.

> This is technically required to set globals in those files.
>
>
>
>
>
> On Sat, Oct 25, 2014 at 7:13 AM, Hagai Kariti <[email protected]> wrote:
>>
>> Hi Michael, thanks for your response.
>>
>> Before I describe my usecase I'd like to point out that the current
behavior is a bug IMO, because it evaluates variables before all variable
sources are looked at. I understand evaluating variables early so they can
be used as soon as possible, but no task/play is run before all var sources
are loaded anyway, so I don't see a case when a variable is unavailable if
evaluating is postponed in this case.
>>
>> Now for my usecase. I have a play that creates ec2 instances. An ec2
instance needs a region to be created in, and a base image id (AMI id in
ec2 terms).
>>
>> I defined the default region to create instances as an inventory
variable (as it's different for prod and stage environments):
>>
>> prod/group_vars/all:
>>
>>     region: us-west-1
>>
>> and I have a region<->AMI id mapping in an external vars file:
>>
>>     amis:
>>         us-west-1: AMI1
>>         us-east-1: AMI2
>>
>> And the play uses it like so:
>>
>>     vars:
>>        ami_id: "{{amis[region]}}"
>>
>> Problem is, if I want to run the playbook and override the region with
-e I can't, because ami_id is evaluated before '-e' takes effect.
>>
>> I have a different usecase for my second example (the once with the
|default line) if you want. If you think I didn't model this case well,
I'll be glad to hear of a better way that solves my problem. Nevertheless,
I still think one should expect the above way to work.
>>
>> Thanks again.
>>
>> On Fri, Oct 24, 2014 at 4:19 PM, Michael DeHaan <[email protected]>
wrote:
>>>
>>> Trying to sort through the email storm here :)
>>>
>>> Yes, vars_files and such will evaluate all the variables it can *So
that they may be used* if possible early, as that is often the case.
>>>
>>> While it doesn't help your question, I would try to not complicate your
infrastructure so much, it's hard to say from your theoretical example, but
if you could post a more real world example of showing what you are trying
to model, I think you might be doing something a little non-idiomatic.
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Oct 23, 2014 at 4:22 AM, Hagai Kariti <[email protected]> wrote:
>>>>
>>>> Hi Stephen
>>>>
>>>> First of all, thanks a lot. Your changes however did not solve my
second case, the one using 'default' on inventory variables. So I guess
some more tweaking is required. I'd love to help btw.
>>>>
>>>> Something is also weird about your pull request - it's not in its own
branch, which makes it more difficult to pull to my repo (I had to copy the
individual files manually!).  I put them in a branch in my fork if you
want: https://github.com/hkariti/ansible/tree/premature_template_vars
>>>>
>>>> On Wed, Oct 22, 2014 at 10:10 PM, Stephen Gargan <
[email protected]> wrote:
>>>>>
>>>>> Hagai,
>>>>>
>>>>> I had a similar issue and posted a pull request for it a while back.
Its not been merged yet but you can grab it here
>>>>>
>>>>> https://github.com/ansible/ansible/pull/9106
>>>>>
>>>>> Try applying it and see if it fixes your issue too.
>>>>>
>>>>> regards,
>>>>>
>>>>> Steve.
>>>>>
>>>>> On Wednesday, 22 October 2014 13:48:18 UTC+1, Hagai Kariti wrote:
>>>>>>
>>>>>> Since my issue was closed without a response and redirected me to
the list, is it possible to get a response here?
>>>>>>
>>>>>> On Tuesday, October 7, 2014 10:50:13 AM UTC+3, Hagai Kariti wrote:
>>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> I hope this is the right place to post this. I reported
https://github.com/ansible/ansible/issues/9242 a few days ago and I still
have issues after it was closed. I'll give a similar example to the one I
gave in the issue, but using vars_files and adding one more usecase:
>>>>>>>
>>>>>>> inventory:
>>>>>>>
>>>>>>> localhost ansible_connection=local
>>>>>>> [all:vars]
>>>>>>> var=one
>>>>>>>
>>>>>>>
>>>>>>> vars_file:
>>>>>>>
>>>>>>> var2: "{{var}}"
>>>>>>>
>>>>>>> mapping:
>>>>>>>   one: 1
>>>>>>>   two: 2
>>>>>>>
>>>>>>> playbook:
>>>>>>>
>>>>>>> ---
>>>>>>> - hosts: localhost
>>>>>>>   gather_facts: no
>>>>>>>   vars_files:
>>>>>>>     - vars_file
>>>>>>>   vars:
>>>>>>>     value: "{{mapping[var]}}"
>>>>>>>   tasks:
>>>>>>>     - debug: var=var
>>>>>>>     - debug: var=var2
>>>>>>>     - debug: var=value
>>>>>>>
>>>>>>>
>>>>>>> command:
>>>>>>>
>>>>>>>     ansible-playbook -i inventory playbook.yml -e var=two
>>>>>>>
>>>>>>> output:
>>>>>>>
>>>>>>> TASK: [debug var=var]
*********************************************************
>>>>>>> ok: [localhost] => {
>>>>>>>     "var": "two"
>>>>>>> }
>>>>>>>
>>>>>>> TASK: [debug var=var2]
********************************************************
>>>>>>> ok: [localhost] => {
>>>>>>>     "var2": "one"
>>>>>>> }
>>>>>>>
>>>>>>> TASK: [debug var=value]
*******************************************************
>>>>>>> ok: [localhost] => {
>>>>>>>     "value": "1"
>>>>>>> }
>>>>>>>
>>>>>>> In older versions (1.5.5 is the one I test with), the third
(mapping) usecase is working properly, but the second does not. In the
latest dev, both don't work
>>>>>>>
>>>>>>> Thanks!
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to a topic in
the Google Groups "Ansible Project" group.
>>>>> To unsubscribe from this topic, visit
https://groups.google.com/d/topic/ansible-project/EunpeCL45k8/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, 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/12a88f83-d97f-4afe-93b3-644ee6887180%40googlegroups.com
.
>>>>>
>>>>> 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/CAO0%3DbmHkhDRcMx9DcuvRNLjneiksMsvSmRf9f3EBJEZFDgdGVA%40mail.gmail.com
.
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
Google Groups "Ansible Project" group.
>>> To unsubscribe from this topic, visit
https://groups.google.com/d/topic/ansible-project/EunpeCL45k8/unsubscribe.
>>> To unsubscribe from this group and all its topics, 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/CA%2BnsWgxuB2GUWp-W3LpLnO_utLo-wLMadcFyxVhM5u%2BdaSdqXQ%40mail.gmail.com
.
>>>
>>> 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/CAO0%3DbmHw8%2BkdCJCkgHfc1j7ujF_7eU%2BE49WKEHaQeSMZVarZSA%40mail.gmail.com
.
>>
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
Google Groups "Ansible Project" group.
> To unsubscribe from this topic, visit
https://groups.google.com/d/topic/ansible-project/EunpeCL45k8/unsubscribe.
> To unsubscribe from this group and all its topics, 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/CA%2BnsWgyKCSB5Rv0mEMM8kmethk8yjoroJcekQUVWymu%2BXb0OAw%40mail.gmail.com
.
>
> 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/CAO0%3DbmEuaRT%3D3WWE_Y5vBmip%2Bpnx1mPCXiyYixVtYL6rGLh66g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to