一連の変数が設定されています。それらをホストとイントストと呼んでください。デバッグ出力に見られるように、それぞれに適切な値が設定されています。ホストにinthostsの値を割り当てようとすると、実際には同じではありません。二重引用符を一重引用符に変更し、各「アイテム」の前に「u」を入れます。テキストを解析せずに実際にリテラルを等しくするように強制する方法がありますか?テキストは単に文字列として扱う必要があります。この場合、「変更された」値がファイルに出力されており、その変更によって物が壊れてしまいます。 デフォルトのホストを使用し、問題のサーバーが別のサーバーセットを使用する必要がある場合は、それを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'] "