Verwenden von Ansible zum Herunterladen einer einzelnen Datei von einem privaten Github-Repository auf einen Remote-Host

9

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:

  1. Führen Sie einen Checkout auf dem Computer aus, auf dem ansible ausgeführt wird ( local_action ), und verwenden Sie dann das Modul copy
  2. Führen Sie einen Checkout auf dem Remote-Knoten aus (mit dem 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)
  3. Verwenden Sie das URL-Modul oder 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?
  4. Verwenden Sie wget auf dem Computer, auf dem ansible ausgeführt werden kann ( local_action ), und verwenden Sie dann das Kopiermodul, um es an den fernen Knoten
  5. zu senden

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?

    
pldimitrov 05.02.2014, 23:30
quelle

1 Antwort

4

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:

  • Einfach und robust - wird einfach funktionieren
  • Verunreinigt Produktionsserver nicht mit irrelevanten Dateien (anderen Konfigurationsdateien)
  • Laden Sie keine Produktionsserver mit I / O zu GitHub (wahrscheinlich vernachlässigbar)

Lösungs-Nr. 2:

  • Einfach und robust - wird einfach funktionieren
  • Um die Kontamination zu reduzieren, klonen wir den Konfigurations-Repo nach / tmp und löschen ihn am Ende des Playbooks

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.

    
Shahar 07.02.2014, 19:36
quelle