2016-08-19 2 views
-3

Ich versuche, die Anwendungsbereitstellung mit Chef zu automatisieren.Übergabe von CLI-Argumenten an Chef-Client während Messer ssh

Ich hatte Kochbuch, das generisch ist (funktioniert basierend auf Eingabe Attributwerte), um APIs bereitzustellen. Ich habe alle Attribute in meinem Attributordner behalten.

Hier ist das Problem konfrontiert, ich bin in der Lage, das Paket erfolgreich bereitzustellen, wenn ich Paketversionsnummer in Attributdatei halten. wobei in Wirklichkeit die Paketnummer jedes Mal geändert wird, wenn die CD-Pipeline ausgelöst wird. Und denke daran, die CLI-Funktion des Chef-Clients zu verwenden, um Parameter als JSON-Datei mit der Option -j zu übergeben.

Problem ist, dass ich mein Kochbuch nicht anrühren möchte, um die Paketversion jedes Mal zu aktualisieren, wenn eine CD-Pipeline ausgelöst wird. Wenn ich irgendetwas in meinem Kochbuch aktualisiere, muss ich CI erneut zur Cookbook-Validierung und gleichzeitig ausführen Ich kann keine Datei in jedem Knoten behalten (reicht von 50 bis 500 Servern) und die Version remote aktualisieren, bevor der Chef-Client ausgelöst wird.

Bitte helfen Sie mir bei der Suche nach einer Möglichkeit, Parameter fern zu Messer SSH übergeben. Oder irgendwelche anderen Lösungen, die dieses Problem lösen. Vielen Dank im Voraus.

Antwort

0

Wenn die Paketversion als Attribut angegeben ist, legen Sie sie in einer Chefumgebung fest.

https://docs.chef.io/environments.html

Mit diesem Ansatz Sie dann eine Wahl von einer Umgebung für jede Version Ihrer Anwendung zu erstellen:

  • myapp_v1
  • myapp_v2
  • myapp_v3

Or Alternativ aktualisieren Sie einfach eine vorhandene Umgebung für jeden Sta ge in Ihrer Pipeline-Prozess:

  • mydev
  • myint
  • mytest
  • myqa

Der Punkt ist, wenn Sie neue Knoten Bootstrap Sie die Umgebung angeben. Die Umgebung stellt sicher, dass jeder Knoten die gleichen Einstellungen für Knotenattribute überschreibt (Sie können auch die Umgebung eines vorhandenen Knotens aktualisieren),

Schließlich ist der nicht-offensichtliche Vorteil der Verwendung einer Umgebung die Fähigkeit "Pin" die Versionen der von Ihnen verwendeten Kochbücher. Irgendwann wirst du feststellen müssen, dass dein Kochbuch aktualisiert werden muss und dass diese Änderung ebenfalls versioniert werden muss!

Abschließend hier ist ein Beispiel-Umgebung, die die Prinzipien zeigt:

{ 
    "name": "mytest", 
    "cookbook_versions": { 
    "myappcookbook1": "= 1.0", 
    "myappcookbook2": "= 2.0" 
    }, 
    "override_attributes": { 
    "myapp1": { 
     "version": "1.0" 
    }, 
    "myapp2": { 
     "version": "2.0" 
    } 
    } 
} 
+0

danke Mark O'Cooner !! ... diese Lösung sinnvoll für meine problem..let diese mir Tryout ... Dank nochmal!!!! –