2016-04-19 10 views
1

Ich fand this SO post über das Kopieren von Dateien zwischen Knoten mit ansible. Hier ist die ansible Aufgabe:Kopieren von Dateien zwischen Knoten mit ansible

- name: Copy Pipeline files 
    synchronize: mode=pull src=/home/ec2-user/nlp/nlp_test/all_data/test/ dest=/opt/nlp-ml/rate/Pipeline dirs=yes 
    delegate_to: "{{ ml_ip }}" 

versuchte ich es mit meinem Textbuch, aber es konnte nicht mit der Meldung:

msg: Warning: Identity file /Users/me/me.pem not accessible: No such file or directory. 
Permission denied (publickey). 

Dies macht Sinn, als meine Identität Datei lokal gespeichert ist und nicht auf einem entfernten Rechner. Der öffentliche Schlüssel des Quellknotens wurde jedoch an den Zielknoten verteilt. Wie kann ich das umgehen?

Bearbeiten: Ich habe versucht, den öffentlichen Schlüssel des Zielknotens dem Quellknoten hinzuzufügen. Ich fügte dann use_ssh_args=yes zu der Synchronisierungsaufgabe hinzu. Danach habe ich ssh_args = -i /home/ec2-user/.ssh/id_rsa (die Position des privaten Schlüssels auf dem Quell- und dem Zielknoten) zu ansible.cfg hinzugefügt. Gleicher Fehler.

+0

zeigen Sie Ihren Code :) – vvchik

+0

@vvchik Ich habe gerade die Antwort aktualisiert, um die ansible Aufgabe zu zeigen - ich ursprünglich nicht enthalten, weil es so nah an der anderen SO Post war. – cscan

+1

ist 'ml_ip' Quellserver oder Ziel? Versuchen Sie, "mode = pull" in Ihrer Aufgabe zu entfernen – vvchik

Antwort

1

Also, um dies zu tun, erfordert es eine Kombination der Dinge, die ich ausprobiert habe. @vvchik schlug vor, dass ich versuche, mode = pull zu entfernen, was anfangs nicht funktionierte. In Kombination mit use_ssh_args konnte ich es jedoch zum Laufen bringen. Für alle, die die vollständige Lösung möchten, hier ist es:

Generieren Sie einen SSH-Schlüssel auf dem Quellknoten (im Standardverzeichnis und ohne ein Passwort) und installieren Sie es auf den Zielknoten. Fügen Sie diese Aufgabe:

- name: Copy files from source to destination 
    synchronize: src=source dest=destination dirs=yes use_ssh_args=yes 
    delegate_to: "{{ source_ip }}" 

schließlich in ansible.cfg ssh_args = -i /home/user/.ssh/id_rsa hinzuzufügen. ansible.cfg sollte im aktuellen Verzeichnis sein.

Verwandte Themen