Ansible - 需要将playbook中的所有主机输出到配置文件

时间:2017-07-10 14:36:01

标签: postgresql ansible

我将尝试简要说明......我正在设置ansible来编写PostgreSQL pg_hba.conf文件,而我想要做的是允许任何数据库服务器复制到任何其他数据库服务器。这样我就不必在发生故障时重新配置。我希望ansible为组中列出的每个主机插入行" db"。这些条目必须是CIDR类型。所以,到目前为止,我只是成功地让每个系统在文件中显示自己的CIDR。我看上去并不高兴,但这就是我尝试使用的内容:

- name: Update the pg_hba.conf file
  lineinfile:
    path: '{{ pg_data  }}/{{ pg_cluster_name }}/pg_hba.conf'
    regexp: 'hostssl replication'
    insertafter: 'hostssl   replication'
    line: "hostssl replication      rplctn_usr  {{ hostvars[ '{{ item }}' ]['ansible_default_ipv4']['address'] }}/32     md5"
    with_items: groups['db']
  tags:
    - "pg_hba.conf"

我所做的一切都没有让{{item}}变量正确展开。任何人吗?

1 个答案:

答案 0 :(得分:0)

首先,您需要引用var来使用大括号进行迭代:

with_items: "{{ groups['db'] }}"

其次,item是表示每次迭代的值的var。在{{ }}内,您可以直接引用任何变量,而无需额外的大括号:

{{ hostvars[item]['ansible_default_ipv4']['address'] }}