Bei der Konfiguration von Remote-Servern mit Ansible kann es vorkommen, dass Sie Dateien aus einem Git-Repository abrufen müssen. Dies kann ein Softwarepaket aus öffentlichen Repositorys oder Konfigurationsdateien in einem privaten Repository sein.
Um ein Git-Repo aus der Ferne mit Ansible zu klonen, können Sie Ihrem Playbook solche Einträge hinzufügen.
---
- hosts: all
tasks:
- name: Clone a github repository
git:
repo: https://github.com/sqlite/sqlite.git
dest: /home/debian/repos/
clone: yes
update: yes
Mach dir keine Sorgen. Ich werde erklären, was diese Parameter bedeuten und wie man es mit einem Beispiel-Tutorial macht.
Klonen von Git-Repositories mit Ansible
Ich gehe davon aus, dass Sie bereits mit Ansible-Grundlagen wie Inventarisierung, Playbooks usw. vertraut sind. Wenn nicht, können Sie unserer Ansible-Tutorial-Reihe folgen.
Voraussetzung
Ansible muss auf Ihrem lokalen Computer installiert sein. Diese Ansible-Instanz fungiert als Kontrollknoten für alle Remote-Hosts. Mithilfe des Steuerknotens können Sie Playbooks und Aufgaben erstellen, die auf den angegebenen Remote-Computern ausgeführt werden.
Wenn Sie sich entscheiden, diesem Tutorial zu folgen, stellen Sie sicher, dass Sie Folgendes haben:
- Ein Kontrollknoten und ein Remote-Host.
- SSH-Schlüsselpaare. Der öffentliche Schlüssel des Kontrollknotens muss in der Datei „authorized_keys“ auf den entfernten Hosts verfügbar sein.
- Ein Nicht-Root-Benutzer mit
sudo
Privilegien auf den entfernten Hosts. - Schreibzugriff auf ein Verzeichnis auf dem Remote-Host, um den Inhalt des geklonten Repos zu speichern.
Ansible Inventory einrichten
Bevor Sie fortfahren, müssen Sie das Ansible-Inventar einrichten. Das Ansible-Inventar ist eine Datei, die Informationen zu den Remote-Servern enthält, die Sie mit Ansible verwalten möchten.
Standardmäßig befindet sich die Datei in /etc/ansible/hosts
. Erstellen Sie diese Datei manuell, wenn sie nicht beendet wird.
Fügen Sie die IP-Adresse des Remote-Hosts in dieser Datei hinzu:
vim /etc/ansible/hosts
Das könnte so aussehen:
Speichern Sie die Datei.
Klonen eines Git-Repositorys mit Ansible-Playbook
Nachdem Sie nun die Bestandsdatei konfiguriert und die SSH-Schlüssel für den Zugriff auf die Remote-Hosts vom Kontrollknoten eingerichtet haben, können Sie das Ansible Playbook erstellen.
Verwenden Sie einen Texteditor wie Vim und erstellen Sie eine YAML-Datei.
vim clone.yaml
Bearbeiten Sie die Datei und fügen Sie die folgenden Einträge hinzu.
---
- hosts: all
tasks:
- name: Clone a github repository
git:
repo: https://github.com/sqlite/sqlite.git
dest: /home/debian/repos/
clone: yes
update: yes
Im obigen Playbook haben Sie damit begonnen, eine neue Aufgabe zu definieren und ihr den Namen „Klonen eines GitHub-Repositorys“ zu geben.
Als Nächstes verwenden Sie git
-Modul, um den Link zum SQLite-GitHub-Repository anzugeben.
Anschließend definieren Sie das Ziel für das geklonte Repository. Dies ist ein lokales Verzeichnis auf dem Remote-Rechner.
Sie setzen das Attribut clone auf yes, um das Repository zu klonen und es mit dem update-Attribut zu aktualisieren.
Um das Playbook auszuführen, verwenden Sie den Befehl:
ansible-playbook clone.yaml
Wenn das Playbook aufgrund der SSH-Authentifizierung fehlschlägt, können Sie den Benutzernamen mit dem Flag -u wie folgt angeben:
ansible-playbook -u debian clone.yaml
Sobald die Aufgaben ausgeführt wurden, sollten Sie das Repository in das angegebene Verzeichnis geklont haben.
Sie können sich beim Remote-Host anmelden, um zu überprüfen, ob das Repository ordnungsgemäß geklont wurde:
Dies sollte Ihnen eine gute Vorstellung davon geben, wie Sie ein Git-Repository mit Ansible klonen. Mit diesen Informationen sollten Sie in der Lage sein, Git-Repos mit Ansible basierend auf Ihren Anforderungen zu verwenden.
Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte unten einen Kommentar.