2017-11-15 1 views
5

Ich möchte ein Ansible Playbook auf einem Ziel-Host durch mehrere Hosts laufen lassen. Das Szenario sieht ähnlich wie die in der Abbildung dargestellt:Ansible Multi-Hop-Design

enter image description here

I teilweise gelöst Ausgabe die ssh_config Datei im ansible Projektverzeichnis zu erstellen:

Host IP_HostN 
     HostName IP_HOST_N 
     ProxyJump [email protected]_HOST_2:22,[email protected]_HOST_2:22 
     User UsernameN 

und die Definition in den ansible.cfg in das Ansible-Projektverzeichnis:

[ssh_connection] 
ssh_args= -F "ssh_config" 

Das Problem ist, dass ich automatisch für jeden transienten Hosts und Ziel Host ssh Benutzername und Passwort einfügen muss und ich weiß nicht, wie diese Aufgabe zu automatisieren. Darüber hinaus Python möglicherweise nicht installiert auf jedem Übergangsknoten.

+3

Klingen wie ein guter Grund, zu verwenden [SSH-Agenten Weiterleitung] (http://unixwiz.net/techtips/ssh-agent-forwarding.html) mit Public Key Auth. –

+1

Sie können 'ssh_config' ein Passwort hinzufügen, so dass Sie Schlüssel als solche verwenden müssen –

Antwort

1

Ich fand eine einigermaßen gute Abhilfe. Nach dem Szenario unten:

enter image description here

schaffen wir einen SSH-Tunnel bis zum transienten Host, der die Ziel-Host direkt erreichen kann. Wir schaffen auch einen lokalen Port mit -L Flagge Bindung:

ssh -J [email protected]_host1:port_1 -p port_2 [email protected]_host2 -L LOCAL_PORT:TARGET_HOST_IP:TARGET_HOST_PORT 

Dann können wir direkt eingeben in der Ziel-Hosts die lokale Bindung verwenden:

ssh [email protected] -p LOCAL_PORT 

Auf diese Weise können wir ansible laufen Playbooks auf dem lokalen Host ansible Variablen entsprechend konfigurieren:

ansible_host: localhost 
ansible_user: user_target_host 
ansible_port: LOCAL_PORT 
ansible_password: password_target_host