Ansible 临时命令中的变量

Ansible 临时命令中的变量

问题:

如何评估临时命令中的(额外)变量?

有没有办法让数组在临时命令中工作?

背景: 我想确保主机上有多个容器正在运行(在我的示例中是“test01”和“test02”)

我已经发现(如果我错了,请纠正我)我不能使用数组或with_items临时命令,所以这不起作用:

ansible all -i ,localhost -m docker_container -c local -a 'name=["test01","test02"] state=started command="sleep infinity"

现在我尝试了,但也没有用:

ansible all -i ,localhost -m docker_container -c local -e MYVAR='[test01,test02]' -a 'name=MYVAR state=started command="sleep infinity"

... 甚至 ...

ansible all -i ,localhost -m shell -c local -e MYVAR='[test01,test02]' -a 'echo MYVAR'

还是-e( --extra-vars)参数错误?

(环境:Linux 上的 ansible 2.9.10(manjaro))

答案1

与任何剧本或变量文件相同,使用花括号:

ansible all -i ,localhost -m shell -c local -e MYVAR='[test01,test02]' -a 'echo {{ MYVAR }}'

虽然我不明白这样做的意义,但您可以直接在需要的地方使用该变量的值......

这也不会帮助您循环列表,它完全取决于模块是否支持参数中的多个值,如果不支持,您将必须在 shell 脚本中实现循环。

答案2

我有一个带有变量的文件,我像这样使用它:

# file variables.yml
MYVAR:
  - test01
  - test02

然后我像这样运行命令:

ansible-playbook -e @variables.yml -i ...

相关内容