Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Chef ist ein Konfigurationsverwaltungstool, das die Bereitstellung und Verwaltung von Anwendungen und Infrastruktur automatisiert. Es verwendet eine domänenspezifische Sprache (DSL) zum Schreiben von Systemkonfigurationen "Rezepte". Diese Rezepte werden in "Kochbüchern" gespeichert, die in verschiedenen Systemen gemeinsam genutzt und wiederverwendet werden können.
Jede Cluster-Init-Spezifikation kann auf eine oder mehrere Chefrollen und/oder Kochbuchrezepte verweisen, die auf der startenden VM ausgeführt werden müssen.
Hinweis
CycleCloud verwendet Chef in einem eigenständigen Modus, der nicht auf einen zentralen Chefserver angewiesen ist. Der Satz von Chef-Kochbüchern, die zum Vorbereiten jeder VM erforderlich sind, werden zusammen mit den restlichen Dateien im Projekt aus dem Azure Storage-Konto heruntergeladen.
Projektstruktur
Das Spezifikationsverzeichnis in einem Projekt kann auch ein Chef-Unterverzeichnis enthalten. Dieses Verzeichnis enthält drei Unterverzeichnisse: site-cookbooks (für Kochbuchdefinitionen), data_bags (Datenbeuteldefinitionen) und roles (Chef-Rollendefinitionsdateien):
myproject
├── specs
│ ├── default
│ └── chef
│ ├── site-cookbooks
│ ├── data_bags
│ └── roles
Chef Runlists
Sie können eine run_list auf Projekt- oder Spezifikationsebene innerhalb Ihrer project.iniangeben:
[spec scheduler]
run_list = role[a], recipe[b]
Wenn ein Knoten die Spezifikation scheduler enthält, wird die von Ihnen definierte run_list automatisch an jedes zuvor definierte run_list-Element angehängt. Wenn die run_list z. B. unter [configuration] ist run_list = recipe[test], lautet die endgültige run_list run_list = recipe[cyclecloud], recipe[test], role[a], recipe[b], recipe[cluster_init].
Sie können run_list auch auf der Ebene der Spezifikation eines Knotens überschreiben. Dieser Ersatz run_list entfernt alle run_list in project.inienthaltenen Elemente. Sie können beispielsweise die Knotendefinition in die folgende Definition ändern:
[cluster-init test-project:scheduler:1.0.0]
run_list = recipe[different-test]
Wenn Sie diese run_list verwenden, wird die im Projekt definierte run_list ignoriert. Das endgültige run_list-Element auf dem Knoten wird zu run_list = recipe[cyclecloud], recipe[test], recipe[different-test], recipe[cluster_init].
Benutzerdefinierte Chef- und komponierbare Spezifikationen
Jede Spezifikation kann ein Chefverzeichnis enthalten. Bevor Sie einen Knoten konvergieren, entpackt und extrahiert der Vorgang alle Spezifikationen (TAR) in das lokale Chef-Repository, wobei vorhandene Cookbooks, Rollen und Datenbehälter durch übereinstimmende Namen ersetzt werden. Der Prozess folgt der Reihenfolge, in der Sie die Spezifikationen definieren, sodass die letzte definierte Spezifikation gewinnt, wenn ein Namenskonflikt vorliegt.
Dateispeicherorte
Wenn Sie Ihre Projektinhalte hochladen, zippt CycleCloud die drei benutzerdefinierten Chef-Verzeichnisse und synchronisiert sie mit Ihrem Zielfach unter (locker)/projects/(project)/(version)/(spec_name)/chef.
Der Knoten lädt die gezippten Chef-Dateien während der Bootstrapping-Phase des Knotenstarts herunter. Der Knoten lädt die Dateien in $JETPACK_HOME/system/chef/tarballs* herunter, entpackt sie in $JETPACK_HOME/system/chef/chef-repo/ und verwendet sie, um den Knoten zu konvergieren.
Hinweis
Um benutzerdefinierte Cookbooks auszuführen, müssen Sie sie zur run_list des Knotens hinzufügen.
Jetpack-Downloadressourcenanbieter
Im folgenden Beispiel wird gezeigt, wie Sie einen einfachen jetpack_download-Ressourcenanbieter für Chef-Benutzende erstellen:
jetpack_download "big-file1.tgz" do
project "my-project"
end
In Chef ist #{node[:jetpack][:downloads]} der standardmäßige Downloadspeicherort. Verwenden Sie den folgenden Code, um das Dateiziel zu ändern:
jetpack_download "foo.tgz" do
project "my-project"
dest "/tmp/download.tgz"
end
Wenn Sie den Befehl in Chef verwenden, müssen Sie das Projekt angeben.