如何在ansible命令行中添加可选变量并检查它们在playbook中的存在?

时间:2014-11-05 20:17:34

标签: ansible ansible-playbook

只有在命令行中给出了一个标志,我才想运行一个特定的任务。例如,我想运行带有以下内容的ansible-playbook命令:--extra-vars "composer-install=true"。我会以某种方式需要一个检查composer-install变量是否设置的任务,如果设置并且等于true,则运行运行composer install的给定任务。我不太确定如何做最后一部分。

2 个答案:

答案 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