getestet auf: ansible 2.2.0.0, 2.2.1.0 & 2.1.4.0ansible liefert falsche Vars, wenn eine dynamische Bestandsaufnahme mit
ich ein Inventar-Skript, das diese json zurückgibt, wenn laufen (zum Beispiel willen minimiert):
{
"componentA-service_ci": {
"hosts": [
"host1.example.com",
"host2.example.com"
],
"vars": {
"httpport": "8100",
"nginxpool": "componentA_pool"
}
},
"componentB-service_ci": {
"hosts": [
"host1.example.com",
"host3.example.com"
],
"vars": {
"httpport": "9999",
"nginxpool": "componentB_pool"
}
}
}
Das Playbook, das ich schreibe, sind für die Bereitstellung von Anwendungen. Die Variablen in der Bestandsliste sind für die Gruppen eindeutig, d. H. Jeder Dienst hat seinen eigenen lb-Pool und seinen http-Port. Es kann auch mehrere Anwendungen auf einem Host geben. Und hier ist es, was das Textbuch mag wie:
---
- hosts: all
remote_user: deployment
become: true
become_method: sudo
become_user: root
gather_facts: yes
serial: 1
roles:
- app-deploy
Die Aufgaben in der Rolle einfach druckt die Variablen nginxpool und httpport.
Ich betreibe das Textbuch wie folgt aus:
ansible-playbook deploy.yml -i inventory.py --limit componentA-service_ci
Erwartetes Ergebnis:
TASK [app-deploy : debug] ******************************************************
ok: [host1.example.com] => {
"msg": "pool componentA_pool port 8100"
}
TASK [app-deploy : debug] ******************************************************
ok: [host2.example.com] => {
"msg": "pool componentA_pool port 8100"
}
Tatsächliches Ergebnis:
TASK [app-deploy : debug] ******************************************************
ok: [host1.example.com] => {
"msg": "pool componentB_pool port 9999"
}
TASK [app-deploy : debug] ******************************************************
ok: [host2.example.com] => {
"msg": "pool componentA_pool port 8100"
}
Die --limit
Werke in dass ansible auf den Hosts ausgeführt wird, die für componentA-service_ci aufgelistet sind, aber für host1.example.com Ich bekomme den Wert von nginxpool und httpport von componentB-service_ci vars. Ich lese die documentation aber nicht verstehen, wie dies passieren kann? Ist das ein Fehler oder verstehe ich einfach nicht, wie gut hier funktioniert?
Mögliches Duplikat von [Anisible auf bestimmter Hostgruppe ausführen] (http://stackoverflow.com/questions/41500463/run-ansible-on-specific-hosts-group) – techraf