-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.

This is technically required to set globals in those files.





On Sat, Oct 25, 2014 at 7:13 AM, Hagai Kariti <hkar...@gmail.com> 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 <mich...@ansible.com>
> 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 <hkar...@gmail.com> 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 <steve.gar...@gmail.com
>>> > 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 <https://github.com/ansible/ansible/issues/9393> 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
>>>> ansible-project+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to ansible-project@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/ansible-project/12a88f83-d97f-4afe-93b3-644ee6887180%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/ansible-project/12a88f83-d97f-4afe-93b3-644ee6887180%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 ansible-project+unsubscr...@googlegroups.com.
>>> To post to this group, send email to ansible-project@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/ansible-project/CAO0%3DbmHkhDRcMx9DcuvRNLjneiksMsvSmRf9f3EBJEZFDgdGVA%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/ansible-project/CAO0%3DbmHkhDRcMx9DcuvRNLjneiksMsvSmRf9f3EBJEZFDgdGVA%40mail.gmail.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 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
>> ansible-project+unsubscr...@googlegroups.com.
>> To post to this group, send email to ansible-project@googlegroups.com.
>> 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
>> <https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgxuB2GUWp-W3LpLnO_utLo-wLMadcFyxVhM5u%2BdaSdqXQ%40mail.gmail.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 ansible-project+unsubscr...@googlegroups.com.
> To post to this group, send email to ansible-project@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/CAO0%3DbmHw8%2BkdCJCkgHfc1j7ujF_7eU%2BE49WKEHaQeSMZVarZSA%40mail.gmail.com
> <https://groups.google.com/d/msgid/ansible-project/CAO0%3DbmHw8%2BkdCJCkgHfc1j7ujF_7eU%2BE49WKEHaQeSMZVarZSA%40mail.gmail.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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
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.

Reply via email to