问题:
如何评估临时命令中的(额外)变量?
有没有办法让数组在临时命令中工作?
背景: 我想确保主机上有多个容器正在运行(在我的示例中是“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 ...