Udostępnij przez


Orkiestracja Chef

Chef to narzędzie do zarządzania konfiguracją, które automatyzuje wdrażanie aplikacji i infrastruktury oraz zarządzanie nimi. Używa języka specyficznego dla domeny (DSL) do pisania konfiguracji systemu "przepisy". Te przepisy są przechowywane w "książkach kucharskich", które mogą być udostępniane i ponownie używane w różnych systemach.

Każda specyfikacja typu cluster-init może odwoływać się do co najmniej jednej roli chef i/lub przepisów książki kucharskiej , które należy wykonać na rozruchowej maszynie wirtualnej.

Uwaga / Notatka

Usługa CycleCloud używa programu Chef w trybie autonomicznym, który nie opiera się na scentralizowanym serwerze Chef. Zestaw książek kucharskich programu Chef potrzebnych do przygotowania każdej maszyny wirtualnej jest pobierany z konta usługi Azure Storage wraz z pozostałymi plikami w projekcie.

Struktura projektu

Katalog specyfikacje w projekcie może również zawierać podkatalog chef. Ten katalog zawiera trzy katalogi: site-cookbooks (dla definicji cookbooków), data_bags (definicje data bagów) i role (pliki definicji ról programu Chef).

      myproject
          ├── specs
          │   ├── default
          │     └── chef
          │         ├── site-cookbooks
          │         ├── data_bags
          │         └── roles

Listy uruchomień programu Chef

Możesz określić run_list na poziomie projektu lub specyfikacji w project.ini:

[spec scheduler]
run_list = role[a], recipe[b]

Gdy węzeł zawiera specyfikację scheduler , definiowana run_list automatycznie dołącza się do wszystkich wcześniej zdefiniowanych run_list. Jeśli na przykład run_list w obszarze [configuration] to run_list = recipe[test], to ostateczny run_list to run_list = recipe[cyclecloud], recipe[test], role[a], recipe[b], recipe[cluster_init].

Można również zastąpić run_list na poziomie specyfikacji w węźle. To zastąpienie run_list usuwa wszystkie run_list uwzględnione w project.ini. Możesz na przykład zmienić definicję węzła na następującą definicję:

[cluster-init test-project:scheduler:1.0.0]
run_list = recipe[different-test]

Użycie tej run_list powoduje zignorowanie run_list zdefiniowanych w projekcie. Końcowa lista uruchomień na węźle staje się run_list = recipe[cyclecloud], recipe[test], recipe[different-test], recipe[cluster_init].

Niestandardowe specyfikacje Chef i komponowalne specyfikacje

Każda specyfikacja może zawierać katalog chef . Przed połączeniem węzła proces rozpakuje i wyodrębnia każdy plik specyfikacji do lokalnego katalogu chef-repo, zastępując wszystkie istniejące cookbooki, role i worki danych pasującymi nazwami. Proces jest zgodny z kolejnością definiowania specyfikacji, więc ostatnia zdefiniowana specyfikacja wygrywa, jeśli występuje konflikt nazewnictwa.

Lokalizacje plików

Po przesłaniu zawartości projektu, usługa CycleCloud kompresuje trzy niestandardowe katalogi Chef i synchronizuje je z docelowym miejscem przechowywania pod adresem (locker)/projects/(project)/(version)/(spec_name)/chef.

Węzeł pobiera spakowane pliki Chef podczas fazy bootstrappingu w trakcie uruchamiania węzła. Węzeł pobiera pliki do $JETPACK_HOME/system/chef/tarballs*, rozpakowuje je do $JETPACK_HOME/system/chef/chef-repo/ i używa ich, aby połączyć węzeł.

Uwaga / Notatka

Aby uruchomić niestandardowe książki kucharskie, należy dodać je do „run_list” dla węzła.

Dostawca zasobów do pobierania Jetpack

W poniższym przykładzie pokazano, jak utworzyć uproszczonego dostawcę jetpack_download zasobów dla użytkowników programu Chef:

jetpack_download "big-file1.tgz" do
  project "my-project"
  end

W programie Chef domyślną lokalizacją pobierania jest #{node[:jetpack][:downloads]}. Aby zmienić miejsce docelowe pliku, użyj następującego kodu:

jetpack_download "foo.tgz" do
  project "my-project"
  dest "/tmp/download.tgz"
end

Jeśli używasz polecenia w programie Chef, musisz określić projekt.