Ich habe ein paar ansible
Spielbücher, die manchmal im lokalen Kontext sinnvoll sind, ansonsten werden sie remote ausgeführt. Um das zu tun, dass ich delegate_to
Direktive verwenden, aber das bedeutet auch, dass ich alle meine Aufgaben zu verdoppeln haben, zB .:Ansässig bedingt delegate_to local oder remote?
---
- hosts: all
gather_facts: no
tasks:
- name: Local command
command: hostname
register: target_host
when: vhost is undefined
delegate_to: 127.0.0.1
# ---
- name: Remote command
command: hostname
register: target_host
when: vhost is defined
Exec lokal:
$ ansible-playbook -i inv.d/test.ini play.d/delegate.yml
PLAY [all] ********************************************************************
TASK: [Local command] *********************************************************
changed: [new-server -> 127.0.0.1]
TASK: [Remote command] ********************************************************
skipping: [new-server]
PLAY RECAP ********************************************************************
new-server : ok=1 changed=1 unreachable=0 failed=0
Exec auf Fern:
$ ansible-playbook -i inv.d/test.ini play.d/delegate.yml -e vhost=y
PLAY [all] ********************************************************************
TASK: [Local command] *********************************************************
skipping: [new-server]
TASK: [Remote command] ********************************************************
changed: [new-server]
PLAY RECAP ********************************************************************
new-server : ok=1 changed=1 unreachable=0 failed=0
Gibt es eine klügere Möglichkeit zu sagen, ansible
, wenn auf die lokale Umgebung zurückfallen? Zur Zeit verwende ich ansible==1.9.2
.
Würde es funktionieren: 'Verbindung:" {{'ansible_host' | default ('local')}} "'? [Docs] (http://docs.ansible.com/ansible/intro_inventory.html#non-ssh-connection-types) scheinen mehrdeutig, "ansible_host" ist definiert als der Name des Docker-Containers, zu dem eine Verbindung hergestellt werden soll. Ich bin bereit, dass das nur ein Fehler in der Dokumentation ist. –
Ich würde die Verbindung in der Inventar-Datei, wie am Ende dieses Abschnitts beschrieben: http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups – udondan
'localhost ansible_connection = local' – udondan