我尝试将JSON结构传递给ansible-playbook,但没有成功:这是我尝试传递的命令
ansible-playbook --extra-vars='[{\"${foo1}\": \"somevalue1\", \"${foo2}\": \"somevalue2\"}, {\"${zoo1}\": \"somevalue111\", \"${zoo2}\": \"somevalue222\"}]' test.yml 获取错误:
ERROR! Syntax Error while loading YAML.
expected ',' or '}', but got '{'或者这样:
ansible-playbook --extra-vars='[{"${foo1}":"somevalue1","${foo2}":"somevalue2"},{"${zoo1}":"somevalue111","${zoo2}":"somevalue222"}]' test.yml没有得到输出
理想的方式是像这样将JSON传递到变量中,这样我就可以在ansible中迭代json数组:
ansible-playbook --extra-vars="AAA='[{\"${foo1}\": \"somevalue1\", \"${foo2}\": \"somevalue2\"}, {\"${zoo1}\": \"somevalue111\", \"${zoo2}\": \"somevalue222\"}]'" test.yml使用以下攻略:
---
-
gather_facts: false
hosts: localhost
name: test
tasks:
- name: debug
debug:
msg: "{{ AAA }}"输出为:
ok: [localhost] =>
msg:
- ? ''
: somevalue2
- ? ''
: somevalue222简而言之,在不使用文件的情况下将JSON结构传递到ansible的最佳方法是什么?
发布于 2021-06-24 23:54:40
我不明白为什么要转义'字符串中的",但是您可能希望不使用KEY=VALUE语法,因为在这种形式下,ansible拆分空格--通过以{开头,它通知ansible --key vars实际上是JSON,并停止使用键值解析器
ansible -e '{"AAA": [{"hello":{"world": true}}, {"array":{"yup":"forsure"}}]}' -m debug -a var=AAA localhost产生
localhost | SUCCESS => {
"AAA": [
{
"hello": {
"world": true
}
},
{
"array": {
"yup": "forsure"
}
}
]
}https://stackoverflow.com/questions/68115330
复制相似问题