如何将多行JSON字符串传递给ansible playbook';s——额外变量
我试图将多行JSON传递给ansible playbook的--extra-vars参数,如下所示如何将多行JSON字符串传递给ansible playbook';s——额外变量,ansible,Ansible,我试图将多行JSON传递给ansible playbook的--extra-vars参数,如下所示 ansible-playbook my-playbook.yml --extra-vars <<EOF { "param1": "value1", "param2": true, "param3": 9000 } EOF 是否有方法传递上述多行JSON字符串 更新 我同意Setanta的观点,如果json是长的或复杂的外部双引号,那么转义内部引号会更麻烦,这是
ansible-playbook my-playbook.yml --extra-vars <<EOF
{
"param1": "value1",
"param2": true,
"param3": 9000
}
EOF
是否有方法传递上述多行JSON字符串
更新
我同意Setanta的观点,如果json是长的或复杂的外部双引号,那么转义内部引号会更麻烦,这是值得的
因此,我决定传递两个单独的变量——额外的变量,一个只用于字符串值,另一个用于布尔值和整数值,这需要JSON格式。第二个--额外的变量被压缩成一行:
ansible-playbook playbook.yml \
--extra-vars "param1=value1 \
param2=value2 \
param3=value3 \
paramN=valueN" \
--extra-vars '{"boolean_param":true,"int_param":9080}'
可以通过使用外部双引号和转义内部引号来实现这一点
ansible-playbook my-playbook.yml --extra-vars "{
\"param1\": \"value1\",
\"param2\": true,
\"param3\": 9000
}"
调试任务返回:
- debug:
var: param1, param2, param3
TASK [debug] *****************
ok: [localhost] => {
"param1, param2, param3": "('value1', True, 9000)"
}
如果您的json很长或很复杂,那么这将是一个更麻烦的问题。如果json很短或从文件中读取,则将其折叠成一行通常更简单
ansible-playbook my-playbook.yml --extra-vars '{"param1":"value1","param2":true,"param3":9000}'
ansible-playbook my-playbook.yml --extra-vars '@file.json'
ansible-playbook my-playbook.yml --extra-vars '{"param1":"value1","param2":true,"param3":9000}'
ansible-playbook my-playbook.yml --extra-vars '@file.json'