2016-08-30 1 views
2

Ich habe ein ansible Skript, durch das ich einen Docker Container spawne und einige Hosts Einträge hinzufügen, da etc_hosts Schlüssel als Host Name und entsprechende IP Adresse. In meinem Fall muss ich beide Hostnamen und IP-Adresse haben, durch eine variable angetrieben werden, zum BeispielAnsible docker_container etc_hosts mit variablem Schlüssel

docker_container: 
name: image-name 
image: image-to-be-pulled 
state: started 
restart_policy: always 
etc_hosts: 
    "{{ domain_1 }}": "{{ domain_1_ip }}" 
    domain_2 : "{{ domain_2_ip }}" 
    domain_3 : "{{ domain_3_ip }}" 

Wenn ich oben Konfiguration machen dann ein Eintrag Datei als

xx.xx.xx.xxx {{ domain_1 }} 

Gastgeber macht Idealerweise sollte die Host-Datei den Host-Namen gegen die IP enthalten, kann jemand vorschlagen, wie ich dies erreichen kann. Vielen Dank im Voraus

+0

Sie können sehen: http://StackOverflow.com/a/37731028/2795592 –

+0

Wie oben in Shared Link erklärt kann ich Set_Facts verwenden, um Domäne und IP-Kombination zu definieren, aber dieser Eintrag landet in meiner Host-Datei ? – Apollo

+0

füllen Sie ein dict, sagen Sie, 'my_etc_hosts 'auf diese Weise und setzen Sie' etc_hosts:' {{my_etc_hosts}} ''beim Aufruf von' docker_container'. –

Antwort

3

diese Syntax versuchen:

docker_container: 
    name: image-name 
    image: image-to-be-pulled 
    state: started 
    restart_policy: always 
    etc_hosts: > 
    { 
     "{{ domain_1 }}": "{{ domain_1_ip }}", 
     "domain_2" : "{{ domain_2_ip }}", 
     "domain_3" : "{{ domain_3_ip }}" 
    } 

Dies wird dict-wie String, ansible der templator evaluieren in dict bilden.
Achten Sie darauf, dass jedes Element in Anführungszeichen und Paare durch Kommas getrennt sind.

+0

Funktioniert wie Charme :) vielen Dank – Apollo

+0

Kann ich wissen, wie wir damit umgehen können, haben wir nicht die Variablen definiert . In-short Übergabe eines Default-Wertes incase-Variablen nicht definiert. – SPM

Verwandte Themen