在ansible模板中生成元组变量

时间:2016-01-19 22:04:19

标签: ansible ansible-playbook

我正在尝试设置一个playbook来部署一个Influxdb集群。除了我们使用INfluxDB Cluster Client

之外,一切正常

我正在生成一个由我们的脚本读取的production.py文件。

InfluxdbClusterClient正在等待一个元组列出所有涌入服务器:

'hosts': [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)],

我试图从ansible变量生成那些元组,但我不知道如何使用dat。我试过了:

/ Variables /
influxdb_hosts: [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)]

/ Template / 
....
'hosts': {{influxdb_hosts}},
...

不幸的是,它无法按预期工作,因为Ansible正在转换列表中的元组(即[('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)]变为["('fr-influxdb-prod-1'", "8086)", "('fr-influxdb-prod-2'"," 8086)"," ('fr-influxdb-prod-3'"," 8086)]"

你看到我做错了吗?

1 个答案:

答案 0 :(得分:0)

您可以使用折叠块标量来通知Ansible该参数是一个不应该被解析的字符串:

influxdb_hosts: >
  [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)],

这是生成的目标文件:

'hosts': [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)],