Ansible

Ansible-Kopierbefehl

Ansible-Kopierbefehl
Mit dem Ansible Copy-Modul können Sie Dateien und Ordner vom lokalen Computer auf Remote-Server kopieren. Das Kopiermodul ist vielseitig. Sie können damit viele komplexe Aufgaben ausführen. Lassen Sie uns in einige Aufgaben eintauchen, die Sie regelmäßig ausführen müssen.

Kopieren von Dateien von Local nach Remote

Meistens werden Sie Dateien von lokalen auf Remote-Server kopieren. Hier ist ein Playbook-Beispiel für die Durchführung einer solchen Aufgabe.

---
- Hosts: Webserver
Aufgaben:
- name: Datei auf einen Remote-Server kopieren
Kopieren:
src: ~/test.TXT
Ziel: /tmp

Im obigen Beispiel zielen wir auf alle Webserver Gruppe in unserem Ansible-Inventar. Die Quelle ist die Prüfung.TXT befindet sich im Home-Verzeichnis unseres lokalen Computers und das Ziel ist der /tmp-Ordner auf dem Remote-Computer.

$ ansible-playbook 1_copy_to_remote.yml
 
SPIELEN [Webserver]
************************************************* **************************
 
AUFGABE [Sammeln von Fakten]
************************************************* **************************
Okay: [172.17.0.3]
 
AUFGABE [Ansible Datei auf Remote-Server kopieren]
************************************************* **************************
geändert: [172.17.0.3]
 
ZUSAMMENFASSUNG SPIELEN
************************************************* **************************
172.17.0.3                 : ok=2    changed=1    unreachable=0    failed=0

Wenn wir das Playbook ausführen, sollten wir die Ergebnisse wie oben sehen.

Die Standardberechtigungen sind auf dem Remote-Rechner auf 0644 eingestellt:

# ls -alsh-Test.TXT
0 -rw-rw-r-- 1 a_user a_user 0 Apr 20 08:49 test.TXT

Sie können dies ändern, indem Sie den Modus-Parameter hinzufügen:

---
- Hosts: Webserver
Aufgaben:
- name: Datei auf einen Remote-Server kopieren
Kopieren:
src: ~/test.TXT
Ziel: /tmp
Modus: 0744

Ihre Berechtigungen auf der Fernbedienung sehen also so aus:

# ls -alsh-Test.TXT
0 -rwxr--r-- 1 a_user a_user 0 Apr 20 08:54 test.TXT

Verzeichnisse von Local nach Remote kopieren

Zum Kopieren von Verzeichnissen haben Sie zwei Möglichkeiten. Wenn Sie ein / nach dem Verzeichnisnamen einfügen, wird alles in diesem Verzeichnis in den Zielordner kopiert. Wenn Sie das / nicht eingeben, wird zuerst das Verzeichnis im Ziel erstellt und dann alles hineinkopiert.

Versuchen wir das Kopiermodul mit dem folgenden Verzeichnis in unserem lokalen Home-Ordner:

Testverzeichnis/
|-- nested1
| '-- test1.TXT
|-- verschachtelt2
| '-- test2.TXT
'-- testen0.TXT

Wenn wir den folgenden Code verwenden:

---
- Hosts: Webserver
Aufgaben:
- Name: Verzeichnis auf Remote-Server kopieren
Kopieren:
src: ~/testdir
Ziel: /tmp

Dann erhalten wir auf dem Remote-Server Folgendes:

tmp/
'--testdir
|-- nested1
| '-- test1.TXT
|-- verschachtelt2
| '-- test2.TXT
'-- testen0.TXT

Kopieren von Dateien zwischen Verzeichnissen auf Remote-Computern

Ansible Copy ermöglicht das Kopieren von Dateien von einem Verzeichnis in ein anderes auf demselben Remote-Rechner. Aber Sie können dies nur für Dateien durchführen, Sie können keine Verzeichnisse kopieren. Sie müssen die verwenden remote_src Parameter, um Ansible Ihre Absichten mitzuteilen.

---
- Hosts: Webserver
Aufgaben:
- name: Datei zwischen Verzeichnissen auf einem Remote-Server kopieren
Kopieren:
src: /tmp/test.TXT
Ziel: ~/test.TXT
remote_src: ja

Der obige Code wird kopiert /tmp/test.TXT in das Home-Verzeichnis des Benutzers (/home/[Benutzername]/).

Kopieren von Dateien mit mehreren Parametern

Sie können einzelne Parameter für Dateien übergeben.

---
- Hosts: Webserver
Aufgaben:
- name: Dateien mit mehreren Änderungen kopieren
Kopieren:
src: " item.src "
Ziel: " item.Ziel "
Modus: "item.Modus"
with_items:
- src: '~/testdir2/test1.txt', dest: '/tmp/a.txt', Modus: '0644'
- src: '~/testdir2/test2.txt', dest: '/tmp/b.txt', Modus: '0755'
- src: '~/testdir2/test3.txt', dest: '/tmp/c.txt', Modus: '0644'

Im obigen Beispiel benennen wir die Dateien um und setzen individuelle Berechtigungen für die Dateien. Die Ansible-Ausgabe sieht so aus:

$ ansible-playbook 4_copy_to_remote_with_multiple_parameters.yml
 
SPIELEN [Webserver]
************************************************* ****************
 
AUFGABE [Sammeln von Fakten]
************************************************* ****************
Okay: [172.17.0.3]
 
AUFGABE [Dateien mit mehreren Änderungen kopieren]
************************************************* ****************
geändert: [172.17.0.3] => (item=u'dest': u'/tmp/a.txt', u'src': u'~/testdir2/test1.TXT',
u'mode': u'0644')
geändert: [172.17.0.3] => (item=u'dest': u'/tmp/b.txt', u'src': u'~/testdir2/test2.TXT',
u'mode': u'0755')
geändert: [172.17.0.3] => (item=u'dest': u'/tmp/c.txt', u'src': u'~/testdir2/test3.TXT',
u'mode': u'0644')
 
ZUSAMMENFASSUNG SPIELEN
************************************************* ************************
172.17.0.3                 : ok=2    changed=1    unreachable=0    failed=0

Inhalte auf Remote-Servern erstellen

Sie können das Kopiermodul verwenden, um Inhalte auf Remote-Servern direkt aus der Playbook-Datei zu erstellen. Hier ist ein Beispiel:

---
- Hosts: Webserver
Aufgaben:
- name: Verwenden Sie eine ansible Kopie, um Inhalte auf einem Remote-Server zu erstellen
Kopieren:
Inhalt: "Hallo Server!\n"
Ziel: /tmp/hallo.TXT

Dadurch entsteht die Hallo.TXT Datei auf dem Remote-Server, die "Hello Server" enthält!”Text.

# Katze /tmp/hallo.TXT
Hallo Server

Fazit

Ansible Copy ist ein nützliches Modul, mit dem Sie Dateien zwischen Servern kopieren können. Es sollte Ihre Konfigurationsaufgaben erleichtern.

Weitere Studie:

http://docs.ansible.com/ansible/latest/modules/copy_module.html

OpenTTD-Tutorial
OpenTTD ist eines der beliebtesten Wirtschaftssimulationsspiele auf dem Markt. In diesem Spiel musst du ein wunderbares Transportunternehmen aufbauen....
SuperTuxKart für Linux
SuperTuxKart ist ein großartiger Titel, der entwickelt wurde, um Ihnen das Mario Kart-Erlebnis kostenlos auf Ihrem Linux-System zu bieten. Es ist ziem...
Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...