我有一系列变量集。称他们为主机和Inthosts。每个都有一个适当的值集,如调试输出中所示。当我尝试将内联值赋给主机时,它实际上并没有使它们保持不变,它会将双引号改为单引号,并将“u”放在每个“项”前面。有没有一种方法可以强制Ansible在这种情况下实际执行文字平等而不解析文本?文本应该被视为一个字符串。在这种情况下,“修改”的值被输出到一个文件,并且这个改变破坏了事情。 该计划是使用默认主机,如果有问题的服务器应该使用不同的服务器集,则使用inthosts覆盖它。Ansible在设置时更改变量值
缺省变量设置
filebeat_kafka_hosts: '["x.compute-1.amazonaws.com:9093", "y.compute-1.amazonaws.com:9093"]'
filebeat_kafka_inthosts: '["x.compute-1.amazonaws.com:9093", "y.compute-1.amazonaws.com:9093", "z.compute-1.amazonaws.com:9093"]'
Ansible代码
- debug:
msg: "Hosts {{ filebeat_kafka_hosts }} "
- debug:
msg: "IntHosts {{ filebeat_kafka_inthosts }} "
- set_fact:
filebeat_kafka_hosts="{{ filebeat_kafka_inthosts }}"
- debug:
msg: "Inthosts -> hosts {{ filebeat_kafka_hosts }} "
输出(编)
"msg": "Hosts [\"x.compute-1.amazonaws.com:9093\", \"y.compute-1.amazonaws.com:9093\"] " |
"msg": "IntHosts [\"x.compute-1.amazonaws.com:9093\", \"y.compute-1.amazonaws.com:9093\", \"z.compute-1.amazonaws.com:9093\"] "
set {"ansible_facts": {"filebeat_kafka_hosts": ["x.compute-1.amazonaws.com:9093", "y.compute-1.amazonaws.com:9093", "z.compute-1.amazonaws.com:9093"]}, "changed": false}
"msg": "Inthosts -> hosts [u'x.compute-1.amazonaws.com:9093', u'y.compute-1.amazonaws.com:9093', u'z.compute-1.amazonaws.com:9093'] "