2017-07-10 26 views
0

我會盡量使這個簡短的...我設置一個可以編寫PostgreSQL pg_hba.conf文件,並且我想要做的允許任何數據庫服務器複製到任何其他數據庫服務器。這樣我就不必在發生故障時重新配置。我希望能夠爲組「db」中列出的每個主機插入行。這些條目必須是CIDR類型。所以,我只是成功地讓每個系統在文件中顯示他們自己的CIDR。我沒有快樂廣泛看了看,但這裏是我想要的內容:Ansible - 需要將劇本中的所有主機輸出到配置文件中

- 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" 

沒有什麼我做了獲取{{項目}}變量來正確展開。任何人?

+0

您是否嘗試過:'行:「hostssl複製rplctn_usr {{HOSTVARS [項目] [ 'ansible_default_ipv4'] [ '地址']}}/32 MD5 「'? – mbarthelemy

回答

0

首先,你需要參考var用大括號來遍歷:

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

其次,item是代表每個迭代的值VAR。裏面{{ }}可以直接引用任何瓦爾無需額外的括號:

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

謝謝克里斯,由於互聯網上的頁面不正確而導致幾次錯誤的開始,我今天早上做了這項工作。我的語法正是你所寫的,儘管我在閱讀你的文章之前提出了它。 – user2288360

+0

即使你自己找到答案,也可以在這裏接受我的答案:)可能對尋找相同事物的人有用。 –