只有在命令行中给出了一个标志,我才想运行一个特定的任务。例如,我想运行带有以下内容的ansible-playbook命令:--extra-vars "composer-install=true"
。我会以某种方式需要一个检查composer-install
变量是否设置的任务,如果设置并且等于true,则运行运行composer install
的给定任务。我不太确定如何做最后一部分。
答案 0 :(得分:9)
您收到错误的原因是您正在访问从未设置过的变量。您似乎使用extra-var的存在作为您希望运行composer install的指示(即您永远不会传递--extra-vars =“composer-install = false”),因此您可以使用{ {1}}:
is defined
但变量可以通过过滤器传递,这对于这种情况很有用,因为它仍然允许你传递true / false而不定义变量仍然有效:
- shell: composer install
when: composer-install is defined
有关条件的更多信息,请访问:http://docs.ansible.com/playbooks_conditionals.html
jinja2过滤器非常有多种用途,因此更多信息来自http://docs.ansible.com/playbooks_variables.html#jinja2-filters
最后是完整的内置jinja2过滤器列表: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters
答案 1 :(得分:1)
我认为你正在寻找when parameter。
- name: optional composer install
shell: composer install
when: composer-install