我有一系列變量集。稱他們爲主機和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'] "