Ansible Copy
Ansible bietet die Funktionalität des Kopierens von Dateien und Verzeichnissen mit Hilfe von copy und fetch Modulen. Das Kopiermodul ist vielseitig einsetzbar.
Das Kopiermodul wird verwendet, um Dateien und Verzeichnisse vom lokalen Rechner auf die entfernten Server zu kopieren. Und das Fetch-Modul, um Daten vom entfernten Rechner auf den lokalen Rechner zu kopieren.
Wenn Sie Dateien nach dem Ersetzen durch Variablen kopieren wollen, wie z.B. Konfigurationsdateien mit IP-Änderungen, können Sie auch das Template-Modul verwenden. Mit diesem Modul können Sie viele komplizierte Aufgaben durchführen.
Kopieren von Dateien vom lokalen zum entfernten Rechner
Das Kopiermodul wird verwendet, um die im src-Parameter eingestellte Datei auf dem lokalen Rechner zu überprüfen. Dann kopiert es die Daten in den Pfad des entfernten Rechners, der im Parameter destpath angegeben ist.
Im folgenden Beispiel kopieren wir die Datei sample.txt aus dem Home-Verzeichnis des lokalen Rechners in das Verzeichnis /tmp auf dem entfernten Server. Solange wir keine Berechtigung für die Datei angeben, ist die Standardberechtigung für die entfernte Datei auf -rw-rw-r-(0664).
Fall 1: Wenn die Datei bereits auf dem entfernten Server vorhanden ist, aber der Inhalt der Quelldatei anders ist, wird die Zieldatei geändert. Sie können dies durch Setzen des Parameters force steuern. Der Standardwert ist auf yes gesetzt. Die Datei wird also standardmäßig geändert.
Wenn Sie nicht möchten, dass die Datei geändert wird, wenn die Quelldatei anders ist, können Sie den Parameter auf Nein setzen. Die folgende Aufgabe kopiert die Datei, wenn die Datei auf dem Remote-Server nicht vorhanden ist.
Fall 2: Wenn die Datei auf dem lokalen Rechner nicht gefunden wurde, gibt Ansible einen Fehler aus.
Zum Beispiel: fatal: : FAILED!=> {„changed“: false, „failed“: true, „msg“: „unable to find ‚~/sample.txt‘ in expected paths.“}
Kopieren von Verzeichnissen von Local zu Remote
Sie können auch Ordner oder Verzeichnisse mit dem Ansible copy Modul kopieren. Wenn der „src“-Pfad ein Verzeichnis ist, dann wird es rekursiv kopiert. Oder es wird das gesamte Verzeichnis kopiert.
Es gibt zwei verschiedene Varianten für diese Aufgabe. Je nachdem, ob Sie das Zeichen ‚/‘ am Endpunkt des ’src‘-Pfads haben oder nicht.
Die erste Methode erstellt ein Verzeichnis auf dem entfernten Server mit dem im src-Parameter festgelegten Namen. Dann wird der Inhalt des Quellordners in dieses Verzeichnis kopiert und eingefügt.
Wenn Sie dieses Verhalten wünschen, dann geben Sie das ‚/‘ nach dem Pfad im src-Parameter nicht an.
Im folgenden Beispiel wird zuerst ein Verzeichnis mit dem Namen copy_dir_ex im /tmp des entfernten Servers erstellt.
Kopieren von Dateien zwischen Verzeichnissen auf dem entfernten Rechner
Ansible copy erlaubt es, Dateien von einem Verzeichnis in ein anderes auf demselben entfernten Rechner zu kopieren. Dies gilt jedoch nur für Dateien, nicht für Verzeichnisse. Sie können den Parameter remote_src verwenden, um Ansible Ihre Absichten mitzuteilen.
Der folgende Code kopiert /tmp/test.txt in das Heimatverzeichnis des Benutzers (/home//).