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