Puppet - przegląd

Puppet to narzędzie do zarządzania konfiguracją opracowane przez Puppet Labs w celu zautomatyzowania zarządzania i konfiguracji infrastruktury. Puppet to bardzo potężne narzędzie, które pomaga w koncepcji infrastruktury jako kodu. To narzędzie jest napisane w języku Ruby DSL, który pomaga w konwersji całej infrastruktury na format kodu, który można łatwo zarządzać i konfigurować.

Puppet podąża za modelem klient-serwer, w którym jedna maszyna w dowolnym klastrze działa jako serwer, znany jako puppet master, a druga działa jako klient zwany slave na węzłach. Puppet ma możliwość zarządzania dowolnym systemem od zera, począwszy od początkowej konfiguracji, aż do końca życia danej maszyny.

Cechy systemu Puppet

Oto najważniejsze cechy Puppet.

Idempotencja

Puppet wspiera Idempotencję, co czyni ją wyjątkową. Podobnie jak Chef, w Puppet można bezpiecznie uruchamiać ten sam zestaw konfiguracji wiele razy na tej samej maszynie. W tym przepływie Puppet sprawdza aktualny stan maszyny docelowej i wprowadzi zmiany tylko wtedy, gdy nastąpi jakaś konkretna zmiana w konfiguracji.

Idempotencja pomaga w zarządzaniu dowolną maszyną przez cały cykl jej życia, począwszy od stworzenia maszyny, zmian konfiguracyjnych w maszynie, aż do końca życia. Funkcja Puppet Idempotency jest bardzo pomocna w utrzymywaniu aktualizacji maszyny przez lata, zamiast wielokrotnego przebudowywania tej samej maszyny w przypadku jakichkolwiek zmian konfiguracyjnych.

Wieloplatformowy

W Puppet, z pomocą Resource Abstraction Layer (RAL), która wykorzystuje zasoby Puppet, można skierować określoną konfigurację systemu bez martwienia się o szczegóły implementacji i sposób działania polecenia konfiguracyjnego w systemie, które są zdefiniowane w podstawowej konfiguracji plik.

Puppet - Workflow

Puppet używa następującego przepływu pracy, aby zastosować konfigurację w systemie.

  • W Puppet pierwszą rzeczą, jaką robi mistrz Puppet, jest zebranie szczegółów maszyny docelowej. Używając współczynnika, który jest obecny we wszystkich węzłach Puppet (podobnie jak w Ohai w Chef), pobiera wszystkie szczegóły konfiguracji na poziomie maszyny. Te dane są zbierane i wysyłane z powrotem do Mistrza Marionetki.

  • Następnie mistrz marionetki porównuje pobraną konfigurację ze zdefiniowanymi szczegółami konfiguracji, a ze zdefiniowaną konfiguracją tworzy katalog i wysyła go do docelowych agentów Puppet.

  • Agent Puppet następnie stosuje te konfiguracje, aby ustawić system w żądanym stanie.

  • Wreszcie, gdy węzeł docelowy jest w żądanym stanie, wysyła raport z powrotem do mistrza marionetek, który pomaga mistrzowi marionetek w zrozumieniu aktualnego stanu systemu, zgodnie z definicją w katalogu.

Puppet - kluczowe komponenty

Poniżej przedstawiono kluczowe elementy gry Puppet.

Zasoby lalek

Zasoby Puppet są kluczowymi komponentami do modelowania dowolnej konkretnej maszyny. Te zasoby mają swój własny model implementacji. Puppet używa tego samego modelu, aby uzyskać określony zasób w pożądanym stanie.

Dostawcy

Dostawcy są w zasadzie wykonawcami każdego konkretnego zasobu używanego w Puppet. Na przykład typy pakietów „apt-get” i „yum” są prawidłowe do zarządzania pakietami. Czasami na określonej platformie byłby dostępny więcej niż jeden dostawca. Chociaż każda platforma zawsze ma domyślnego dostawcę.

Oczywisty

Manifest to zbiór zasobów, które są połączone w ramach funkcji lub klas w celu skonfigurowania dowolnego systemu docelowego. Zawierają zestaw kodu Ruby w celu skonfigurowania systemu.

Moduły

Moduł jest kluczowym elementem składowym Puppet, który można zdefiniować jako zbiór zasobów, plików, szablonów itp. Można je łatwo rozdzielić na różne rodzaje systemów operacyjnych, które mają taki sam smak. Ponieważ można je łatwo dystrybuować, jeden moduł może być używany wielokrotnie w tej samej konfiguracji.

Szablony

Szablony używają wyrażeń Ruby do definiowania dostosowanej zawartości i zmiennych danych wejściowych. Służą do tworzenia niestandardowych treści. Szablony są definiowane w manifestach i kopiowane do lokalizacji w systemie. Na przykład, jeśli chcesz zdefiniować httpd za pomocą dostosowywanego portu, można to zrobić za pomocą następującego wyrażenia.

Listen <% = @httpd_port %>

W tym przypadku zmienna httpd_port jest zdefiniowana w manifeście, który odwołuje się do tego szablonu.

Pliki statyczne

Pliki statyczne można zdefiniować jako pliki ogólne, które czasami są wymagane do wykonania określonych zadań. Można je po prostu skopiować z jednego miejsca do drugiego za pomocą Puppet. Wszystkie pliki statyczne znajdują się w katalogu plików dowolnego modułu. Wszelkie manipulacje na pliku w manifeście są wykonywane przy użyciu zasobu plikowego.