问题
I'm trying to setup a playbook to deploy an influxdb cluster. Everything works fine except that we use INfluxDB Cluster Client
I am generating a production.py file which is read by our script.
InfluxdbClusterClient is waiting for a tuple to list all influx servers :
'hosts': [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)],
I am trying to generate those tuples from ansible variables but I don't know how to to dat. I tried:
/ Variables /
influxdb_hosts: [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)]
/ Template /
....
'hosts': {{influxdb_hosts}},
...
Unfortunately it doesn't work as expected as Ansible is transforming the tuple in list (ie [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)]
becomes ["('fr-influxdb-prod-1'", "8086)", "('fr-influxdb-prod-2'"," 8086)"," ('fr-influxdb-prod-3'"," 8086)]"
Do you see what i'm doing wrong ?
回答1:
You can use folded block scalar to inform Ansible that the argument is a string which shouldn't be parsed:
influxdb_hosts: >
[('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)],
This is generated destination file:
'hosts': [('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)],
来源:https://stackoverflow.com/questions/34887828/generating-tuples-variables-in-ansible-templates