2016-07-28 13 views
0

im ein Problem Begrenzung ansible mit nuransible-Textbuch --limit arbeitet nicht mit überlappenden Host-Aliase

mit einem bestimmten Host arbeiten

meine Inventar-Datei wie folgt aussieht:

[staging-docker-containers] 
app1 ansible_host=host.domain.com ansible_ssh_port=2222 
app2 ansible_host=host.domain.com ansible_ssh_port=2223 
app3 ansible_host=host.domain.com ansible_ssh_port=2224 

[staging-other-servers] 
app1 ansible_host=host.domain.com ansible_ssh_port=2225 
app2 ansible_host=host.domain.com ansible_ssh_port=2226 
app3 ansible_host=host.domain.com ansible_ssh_port=2227 

, wenn ich das laufen folgen Befehl

ansible-playbook --limit="staging-docker-containers:app3" my-playbook.yml -i staging 

den Begrenzungsbefehl ignoriert und versucht, eine Verbindung unter der staging-other-servers Gruppe APP3 und nicht auf APP3 unter staging-docker-containers g Gruppe.

Mache ich etwas falsch?

Antwort

1

Sie können den gleichen Host in verschiedenen Gruppen haben.
Aber Sie können nicht verschiedene Hosts unter dem gleichen Namen haben.
Wenn Sie dieselben Hostvariablen für denselben Host an verschiedenen Orten definieren, haben Letztere Priorität.
So Sie Inventar wird tatsächlich:

[staging-docker-containers] 
app1 
app2 
app3 

[staging-other-servers] 
app1 ansible_host=host.domain.com ansible_ssh_port=2225 
app2 ansible_host=host.domain.com ansible_ssh_port=2226 
app3 ansible_host=host.domain.com ansible_ssh_port=2227 
+0

Im Versuch, zu einer spesific Host-spezifische Rolle zuordnen Host-Aliasnamen zu verwenden, wie ich mein Beispiel zeigte im, haben Sie einen Vorschlag, wie das zu tun? – Urban48

+0

@ Urban48 Ich bin mir nicht sicher, was Sie erreichen wollen ... Normalerweise möchten Sie verschiedene Inventardateien für die Staging/Produktion mit den gleichen Gruppennamen erstellen und spezifische Rollen innerhalb Ihres Playbooks für bestimmte Gruppen/Hosts mit 'Hosts zuweisen : '. –