2017-02-23 11 views
0

私はまだAnipalにはかなり新しいです、そして、私は最初の実世界のAnsibleプロジェクトとしてDHCP設定ファイルを生成しようとしています。with_dictを使用している可能性のあるジンジャーテンプレート

RHEL7で2.2.1.0を使用しています。

私は私の設定のすべてがansible脚本自体、私は、各項目の属性を印刷するには、次のコードを使用することができますでYAML

--- 
dhcp_subnets: 
    windows: 
    description: "Windows Hosts" 
    network: 10.33.7.0 
    subnet: 255.255.255.0 
    interface_name: eth0.152 
    range_start: 10.33.7.32 
    range_end: 10.33.7.250 
    gateway: 10.33.7.254 
    domain_name: "testlab.home" 
    domain_name_servers: 
     - 10.33.11.21 
    ntp_servers: 
     - 10.33.11.1 
    hosts: 
     152-rhevm: 
     - description: "RHEV-M" 
     - mac: "00:30:48:30:5B:1A" 
     - address: "10.33.7.20" 

    Linux: 
    description: "Linux Hosts" 
    network: 10.33.7.0 
    subnet: 255.255.255.0 
    interface_name: eth0.152 
    range_start: 10.33.7.32 
    range_end: 10.33.7.250 
    gateway: 10.33.7.254 
    domain_name: "testlab.home" 
    domain_name_servers: 
     - 10.33.11.21 

    ntp_servers: 
     - 10.33.11.1 
    hosts: 
     152-rhevm: 
     - description: "RHEV-M" 
     - mac: "00:30:48:30:5B:1A" 
     - address: "10.33.7.20" 

に保存されていて私が剥がれてくるよ

- debug: 
    msg: "{{item.value.description}}" 

with_dict: "{{ dhcp_subnets }}" 

tags: 
    - debug 

しかし、私はこれを使ってこれらの属性を含む設定ファイルを生成していますので、どうすればいいのかわかりません。私はjinja2のwith_dictオプションを見ることができません。

私はwith_dictループ内のテンプレートを使用して、次の

############################################################### 
# DHCP client file - Managed by Ansible 
############################################################### 

ddns-update-style interim; 
ignore client-updates; 

{# Here I want to iterate over dhcp_subnets #} 
subnet {{ item.value.network }} netmask {{ item.value.subnet }} { 
    # {{ item.value.description }} 

    interface "{{ item.value.interface_name }}"; 
    range    {{ item.value.range_start }} {{ item.value.range_end }}; 

     option subnet-mask    {{ item.value.subnet }}; 
     option routers     {{ item.value.gateway }}; 

     option domain-name    "{{ item.value.domain_name }}"; 
     option domain-name-servers  {{ item.value.domain_name_servers }}; 
    option ntp-servers    {{ item.value.ntp_servers }}; 

} 

に似たテンプレートを持つことを望んでいた私は間違った方法をこの問題を解決しようとしていますか?

私は同様の質問を読んだことがありますが、それらは辞書を平坦化しなければならないように思え、可能ならばそれを避けたいと思っています。

アドバイスをいただければ幸いです。あなたはこの構文で神社で辞書を反復処理することができます

おかげ

答えて

1

{% for (key,value) in dhcp_subnets.iteritems() %} 
    {{key}}={{value}} 
{% endfor %} 
+0

おかげスコットは、それは私が辞書のあらゆるレベルを反復処理しなければならないわけでしょうか?私はまだitem.attributeの表記法を使うことができますか? – Jim

+0

item.attributeの表記法を使用できるはずです。たとえば、 'key'は' windows'、 'value'は' description'、 'network'、' subnet'などを含む辞書になります。したがって、あなたは 'value.subnet'を参照することができます'item.value.subnet' –

+0

Scottさん、ありがとうございました。 – Jim