I would like to run a particular task only if a flag is given in the command line. For example, I would like to run the ansible-playbook command with the following: --extra-vars "composer-install=true"
. I would somehow need a task that checks if the composer-install
variable is set, and if set and equal to true, run the given task which runs composer install
. I'm not quite sure how to do that last part.
The reason you get an error is because you're accessing a variable that has never been set. You seem to be using the existance of the extra-var as an indication that you want composer install to run (i.e. you're never passing --extra-vars="composer-install=false"), so you could go with is defined
:
- shell: composer install
when: composer-install is defined
But the variables can be passed through filters, which can be useful for this case, because it still allows you to pass true/false while not defining the variable at all still works:
- shell: composer install
when: composer-install|default(false)
Some more on conditionals can be found here: http://docs.ansible.com/playbooks_conditionals.html
The jinja2 filters are very useful for more than one reason, so more on those here: http://docs.ansible.com/playbooks_variables.html#jinja2-filters
And finally the complete list of built-in jinja2 filters here: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With