2016-06-19 27 views
0

Ich versuche eine Rolle zu erstellen, die einige Variablen aus einer Datei verwendet. Obwohl diese Variablen auch von einer allgemeinen Variable abhängen, die ich für alle Rollen definieren möchte, kann nur eine ohne Kopie & in jede einzelne Variable eingefügt werden.ansible Variablen innerhalb von Variablen

Obwohl ich nicht verstehen kann, wie ich das tun kann. Ich rede nur über Vars-Datei.

z. Rollen/dns/Aufgaben/main.yml enthält Datei für spezifische Lage:

- include_vars: ../vars/dns/domains_{{ location }}.yml 

Standort auf Rollenebene definiert ist. Innerhalb dieses Ich versuche, die Einstellungen für verschiedene DNS-Namen zu definieren, z.B .:

domains: [ 
    { 
    domain: "domain.com", 
    location: "america", 
    ip: "xx.xx.xx.xx", 
    ttl: 1800, 
    mx: "10 mail", 
    subdomains: [ 
     { name: "www", ip: "xx.xx.xx.xx"}, 
    ] 
    }, 
] 

so hier habe ich die gleiche IP für jeden Eintrag definiert. Gibt es einen Weg, um alle IP-Adressen in eine globale var-Datei (zB group_vars/all/vars_file.yml) und es in dieser Rolle spezifische var-Datei wie folgt Anwendung: Der ist

domains: [ 
    { 
    domain: "domain.com", 
    location: "america", 
    ip: server.america.ip, 
    ttl: 1800, 
    mx: "10 mail", 
    subdomains: [ 
     { name: "www", ip: server.america.ip }, 
    ] 
    }, 
] 

wo server.america.ip irgendwo irgendwo definiert?

Antwort

1

Ja, das ist möglich. Variable Dateien laufen auch durch jinja, so dass Sie einfache Ausdrücke und Variablen in variablen Dateien haben können.

domains: [ 
    { 
    domain: "domain.com", 
    location: "america", 
    ip: "{{ server.america.ip }}", 
    ttl: 1800, 
    mx: "10 mail", 
    subdomains: [ 
     { name: "www", ip: "{{ server.america.ip }}" }, 
    ] 
    }, 
] 
0

Sie können Variablen aus der Rolle X einfügen, zum Beispiel am Anfang von tasks/main.yml Ihrer Rolle Y. Wenn Sie eine gemeinsame Rolle haben, legen wir zum Beispiel eine Position auf diese. Nur potentielles Problem ist, dass Sie 'with_items' verwenden müssen, um eingeschlossene Variablen aufzurufen.

Verwandte Themen