将IP节点从清单设置为default / main.yaml

时间:2018-11-25 11:05:56

标签: ansible

存储库:https://github.com/patsevanton/ansible-role-patroni-question 库存:

[all]
node1 ansible_host=192.168.88.95
node2 ansible_host=192.168.88.96
node3 ansible_host=192.168.88.97

[patroni]
node1
node2
node3

默认主Yaml文件 https://github.com/patsevanton/ansible-role-patroni-question/blob/master/defaults/main.yml#L115 enter image description here enter image description here

如何将清单中的IP节点设置为default / main.yaml? 这不是模板!这是default / main.yaml。

1 个答案:

答案 0 :(得分:0)

该角色在defaults中的事实表明,它是设计的,供您覆盖。

因此:

- hosts: patroni
  roles:
  - patsevanton.patroni-question
    vars:
      patroni_bootstrap_pg_hba: >-
        [
        {%- set thing = { "type": "host", "database": "replication", "user": patroni_replication_username, "method": "md5" } -%}
        {%- for h, v in dict(hostvars).items() -%}
        {%- set _ = thing.update({"address": v.ansible_host}) -%}
        {{ "" if loop.first else "," }}
        {{ thing | to_json }}
        {%- endfor -%}
        ]

pg_hba定义拉到角色之外意味着您现在也必须指定replication_username,因为外部剧本无法(轻松地)查看角色以获取现有的默认值。当使用默认设计不佳的角色时,最喜欢