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.