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]> 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]
>
> --
> 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/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].
> 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/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/CA%2BnsWgwA1Xt%3DmHTBwPnA1geAksBJ2kBKOPhYw_-bX5dDyMz94g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to