2017-06-27 8 views
0

私はキープアライブされたクラスタを設定する役割を書こうとしています。ターゲットボックスのIPに基づいてテンプレートに固有の情報を渡すことを望んでいました。このシナリオではwith_dictモジュールを使用することは可能でしょうか?

:サーバAは、192.168.1.140とサーバーBであるが192.182.1.141で、VIPが192.168.1.142

辞書は、このようなものになり、次のようになります。私がいた

--- 
    192.168.1.140: 
    peer: 192.168.1.141 
    priority: 110 
    vip: 192.168.1.142 

    192.1.168.1.141 
    peer:192.168.1.140 
    priority: 100 
    vip: 192.168.1.142 

をタスクを期待しては次のようになります。

--- 
- name: keepalived template 
    template: 
    src: keepalived.j2 
    dest: /etc/keepalived/keepalived.conf 
    owner: root 
    group: root 
    mode: 0644 
    with_dict: '{{ ansible_default_ipv4.address }}' 

とテンプレートは次のようになります。

} 
vrrp_instance VI_1 { 
interface eth0 
priority {{ item.value.priority }} 
... 
unicast_scr {{ ansible_default_ipv4.address }} 
unicast_peer { 
    {{ item.value.peer }} 
} 
virtual_ipaddresses { 
    {{ item.value.vip }} } 
} 

任意の洞察力が大幅にいくつかの一般的な辞書の下 ジョン

答えて

0

グループをあなたの仲間の詳細をいただければ幸いです。

--- 
peer_configs: 
    192.168.1.140: 
    peer: 192.168.1.141 
    priority: 110 
    vip: 192.168.1.142 
    192.1.168.1.141 
    peer:192.168.1.140 
    priority: 100 
    vip: 192.168.1.142 

with_...私が見るようにループのために、あなたは、任意のループを必要としない一般的です、これを使用します。

- name: keepalived template 
    template: 
    src: keepalived.j2 
    dest: /etc/keepalived/keepalived.conf 
    owner: root 
    group: root 
    mode: 0644 
    vars: 
    peer_config: '{{ peer_configs[ansible_default_ipv4.address] }}' 

とテンプレート:

vrrp_instance VI_1 { 
interface eth0 
priority {{ peer_config.priority }} 
... 
unicast_scr {{ ansible_default_ipv4.address }} 
unicast_peer { 
    {{ peer_config.peer }} 
} 
virtual_ipaddresses { 
    {{ peer_config.vip }} } 
} 
+0

私は区別を参照してください。これは非常に役に立ちます。ありがとうございました。 –

関連する問題