Hi Guys,

I am trying to force the ansible play to check againt the command line 
variable, here is my "check-requirement.yml" and required_var:

- fail: msg="Bailing out this play requires '{{ item }}'"
  when: item is not defined
  with_items: required_vars

I have set default/main.yml with following line:

required_vars:
  - env

Now when i run the play book without env, its skipping rather than failing: 
Please help me to fix this..

Here is the message:

root@test-server-s01:~/ranker-orchestration/roles# ansible-playbook 
 tomcat-role-test.yml

PLAY [localhost] 
**************************************************************

GATHERING FACTS 
***************************************************************
ok: [localhost]

TASK: [tomcat | fail msg="Bailing out this play requires '{{ item }}'"] 
*******
skipping: [localhost] => (item=env)

TASK: [tomcat | Update apt cache] 
*********************************************
ok: [localhost]

TASK: [tomcat | Install Tomcat 7] 
*********************************************
ok: [localhost]

TASK: [tomcat | Configure tomcat memory/java_home configuration] 
**************
ok: [localhost]

TASK: [tomcat | Configure tomcat server configuration, port, connections 
ssl etc] ***
ok: [localhost]

PLAY RECAP 
********************************************************************
localhost                  : ok=6    changed=0    unreachable=0    failed=0


On Wednesday, May 21, 2014 at 3:11:13 PM UTC-7, Michael DeHaan wrote:
>
> error_on_undefined_variables is the default in ansible.cfg
>
> I *STRONGLY* recommend leaving that setting on.
>
> Then the whole "|mandatory" thing is also not required.
>
> It's there because very old ansible didn't require variables to be defined 
> by default, now it does, so many upgraders may just wish to change the 
> setting.
>
>
>
>
> On Wed, May 21, 2014 at 5:10 AM, 'Petros Moisiadis' via Ansible Project <
> [email protected] <javascript:>> wrote:
>
>>  On 05/21/2014 11:37 AM, Andrew Pashkin wrote:
>>  
>> Thanks for the tips, didnt know about both!
>>
>> What if I want to "declare" variables somewhere, to tell user about what 
>> he can use, but leave that variables "undefined" so they will fail is 
>> defined test? What people usually do in this situations?
>> I want to make file like required_vars.yml and put all required 
>> variables there, and then do something like this:
>>  
>> - name: check required variables
>>   fail: msg="Variable '{{ item }}' is not defined" 
>>   when: item is defined 
>>   with_items: 
>>     - include: required_vars.yml
>>
>> Is there way to do this?
>>
>>
>> You can put in the required_vars.yml file:
>> ---
>> required_vars:
>>   - myvar1
>>   - myvar2
>>
>> Then, in the playbook:
>> ---
>> - hosts: myhosts
>>   vars_files:
>>     - /path/to/required_vars.yml
>>   tasks:
>>     - fail: msg="Variable '{{ item }}' is not defined"
>>       when: item not in hostvars[inventory_hostname]
>>       with_items: required_vars
>>
>> Normally, you would also want to document the structure of your vars, so 
>> I would suggest you to write a 'readme' file with example definitions of 
>> the all possible variables, both mandatory and non-mandatory.
>>
>>
>>  On 21.05.2014 11:02, 'Petros Moisiadis' via Ansible Project wrote:
>>  
>> On 05/21/2014 08:24 AM, Andrew Pashkin wrote:
>>
>>  I want to make my playbook in a way where process will fail with an
>> error if user was not provided required parameters, what is the way to
>> do that in Ansible?
>>
>>
>>  The default behavior is to fail if using a variable that is not defined.
>> There is also a configuration option that disables this, and then you
>> can use "{{ myvar | mandatory }}" to explicitly have the same effect.
>> Keep in mind, though, that the failure occurs when reaching a task that
>> uses an undefined variable. If you want to fail before any task is
>> executed, you could add another task at the top of your tasks that fails
>> if a mandatory variable is not defined. For example:
>>
>> tasks:
>>    - fail: msg="Variable '{{ item }}' is not defined"
>>      when: item not in hostvars[inventory_hostname]
>>      with_items:
>>        - myvariable1
>>        - myvariable2
>>
>>
>>  
>> -- 
>> With kind regards, Andrew Pashkin.
>> cell phone - +7 (985) 898 57 59
>> Skype - waves_in_fluids
>> e-mail - [email protected] <javascript:>
>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/537C65DE.3070404%40gmx.co.uk
>>  
>> <https://groups.google.com/d/msgid/ansible-project/537C65DE.3070404%40gmx.co.uk?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 [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/537C6D88.40302%40yahoo.gr 
>> <https://groups.google.com/d/msgid/ansible-project/537C6D88.40302%40yahoo.gr?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 [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/b4ca506c-9e10-4722-becf-3024fcd6e189%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to