2017-03-17 3 views
1

Ich versuche, Dateien zu erstellen, deren Werte mit ihren with_items Werten übereinstimmen.Ansible-Schleife - wie Vorlagenwerte mit with_items übereinstimmen?

Ich habe eine var Liste wie folgt:

sites: 
    - domain: google.com 
    cname: blue 
    - domain: facebook.com 
    cname: green 
    - domain: twitter.com 
    cname: red 

ich erstellen einzelne Dateien für jedes der Objekte in der Liste in dieser Aufgabe:

- name: Create files 
    template: 
    src: file.conf 
    dest: "/etc/nginx/conf.d/{{item.cname}}.conf" 
    with_items: "{{sites}}" 

Diese beiden großen arbeiten. Was muss ich in meiner Vorlagendatei dafür haben, erstellen Sie eine Datei mit dem Namen blue.conf und hat google.com darin nur.

Ich habe viele Variationen ausprobiert. Der nächstgelegene ich bekam, war dies:

server { 
     listen 80; 
     listen [::]:80; 
     {% for item in sites %} 
     server_name {{item.cname}}.es.nodesource.io; 

     location/{ 
      proxy_pass {{item.domain}}; 
     } 
     {% endfor %} 
    } 

, dass einzelne Dateien erstellen, aber jede Datei hat alle Domänen und cnames.

Antwort

3

Sie haben bereits die Variable item definiert und an die Vorlage übergeben, so dass keine erneute Schleife erforderlich ist.

Versuchen:

server { 
    listen 80; 
    listen [::]:80; 
    server_name {{item.cname}}.es.nodesource.io; 

    location/{ 
     proxy_pass {{item.domain}}; 
    } 
} 
+0

Wow, ich so, wie es Grübeln wurde. Das funktioniert, danke. Ich denke, dass ich dachte, dass es die Template-Elemente von Variablen bekommen hat, die irgendwo definiert sind und nicht von der Aufgabe übernommen wurden. – gkrizek

Verwandte Themen