Beispielszenario: Konfigurationsdateien für einen bestimmten Dienst werden in einem privaten Github-Repository unter Versionskontrolle gehalten. Ich möchte ein Playbook schreiben, das eine dieser Dateien auf dem Remote-Knoten abruft und an den gewünschten Ort legt.
Ich kann mir mehrere Lösungen vorstellen:
local_action
), und verwenden Sie dann das Modul copy
git
-Modul), kopieren Sie die Dateien an den gewünschten Speicherort mit command: cp src dest creates=dest
(vielleicht mit einem Handler - nur wenn Repo Änderungen zu ziehen hat) command: wget https://raw.github.com/repo/.../file creates=file
im Playbook, um nur die Datei von Interesse herunterzuladen. Wird das Modul command
tatsächlich prüfen, ob die zu erstellende Datei von der bereits existierenden Datei abweicht, oder prüft sie nur, ob die Datei existiert? local_action
), und verwenden Sie dann das Kopiermodul, um es an den fernen Knoten Was sind die Vor- und Nachteile dieser? Welche (wenn überhaupt) davon könnten als gute Praxis angesehen werden. Was ist die beste allgemeine Lösung dafür?
Zunächst möchte ich sagen, dass wir die 2. Lösung für unsere Produktionsumgebung gewählt haben, und ich garantiere eine Sache - sie funktioniert einfach. Jetzt für die längere Version:
Lösungs-Nr. 1:
Lösungs-Nr. 2:
Lösungs-Nr. 3/4:
Ich schätze, es wird funktionieren, aber es ist ein bisschen komisch, wenn Ihre Konfiguration in der Quellcodeverwaltung ist und Sie dann nicht wirklich Quellcodeverwaltungsfunktionen verwenden. Der Vorteil dieser Lösungen ist, dass Sie die Konfigurationsdateien, die Sie herunterladen möchten, "herauspicken" können, anstatt das gesamte Repository zu klonen. Dies reduziert auch I / O gegen Github, da das Klonen mit der Zeit schwerer wird.
Tags und Links github ansible wget deployment configuration-management