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

tim*_*fly 6 ansible ansible-playbook

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

Ram*_*nte 9

出现错误的原因是因为您正在访问从未设置过的变量.您似乎使用extra-var的存在作为您希望运行composer install的指示(即您永远不会传递--extra-vars ="composer-install = false"),因此您可以使用is defined:

- shell: composer install
  when: composer-install is defined
Run Code Online (Sandbox Code Playgroud)

但变量可以通过过滤器传递,这对于这种情况很有用,因为它仍然允许你传递true/false而不定义变量仍然有效:

- shell: composer install
  when: composer-install|default(false)
Run Code Online (Sandbox Code Playgroud)

有关条件的更多信息可以在这里找到: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