【问题标题】:Generating tuples variables in ansible templates在 ansible 模板中生成元组变量
【发布时间】:2016-01-19 22:04:18
【问题描述】:

我正在尝试设置一个剧本来部署一个 influxdb 集群。一切正常,除了我们使用INfluxDB Cluster Client

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

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

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

我正在尝试从 ansible 变量中生成这些元组,但我不知道如何生成这些元组。我试过了:

/ 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)]"

你知道我做错了什么吗?

【问题讨论】:

    标签: ansible ansible-playbook


    【解决方案1】:

    您可以使用折叠块标量通知 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)],
    

    【讨论】:

    • 不幸的是,ansible 继续解析我的变量。它现在渲染为:'hosts': \"[('fr-influxdb-prod-1', 8086), ('fr-influxdb-prod-2', 8086), ('fr-influxdb-prod-3', 8086)]\",
    • @AlexGrs 我没有检查在模板内如何解析这个变量。我用更好的解决方案编辑了我的回复。
    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多