Packer poradnik dla początkujących – Struktura budowy Packer’a
Dzisiaj przybliżymy sobie już konkretnie główny materiał przyświecający Packer’owi. Jeśli nie mieliście jeszcze okazji, to gorąco zachęcam Was do zapoznania się z moim wpisem na blogu: Wstęp do automatyzacja HashiCorp Packer Na wstępie dodam, że poniższy cały kod źródłowy dostępny jest na stronach GitHub oraz Gitlab . Przed przystąpieniem do budowania za pomocą Packera upewnijcie…

Dzisiaj przybliżymy sobie już konkretnie główny materiał przyświecający Packer’owi. Jeśli nie mieliście jeszcze okazji, to gorąco zachęcam Was do zapoznania się z moim wpisem na blogu: Wstęp do automatyzacja HashiCorp Packer
Na wstępie dodam, że poniższy cały kod źródłowy dostępny jest na stronach GitHub oraz Gitlab .
Przed przystąpieniem do budowania za pomocą Packera upewnijcie się proszę, że macie już skonfigurowane środowisko do uruchomienia buildu. Poradnik jak to zrobić, dostępny jest na dedykowanych stronach : konfiguracja środowiska Windows
1 Struktura budowy Packer’a
By móc rozpocząć tworzenie naszej wirtualnej maszyny, musimy najpierw zrozumieć z jakich elementów może się składać plik konfiguracyjny.
- Artifact – jest to wynik pojedynczej kompilacji kodu i przeważnie jest zbiorem identyfikatorów lub plików reprezentujących obraz danej maszyny. Każdy Builder generuje jeden Artifact. Na przykład dla Provisioner Virtualbox, Artifact to katalog plików składających się na konkretną wirtualną maszynę.
- Build – jest to konkretne zadanie, które ostatecznie tworzy obraz dla jednej technologii wirtualizatora.
- Builder – jest to jeden z komponentów Packera, który to jest w stanie stworzyć konkretny obraz maszyny wirtualnej dla dedykowanej platformy. Builder odczytuje konfigurację kodu i używa jej do wygenerowania obrazu maszyny wirtualnej.
- Communicator – jest to mechanizm, którego Packer potrzebuje do przesyłania plików, wykonywania skryptów czy też tworzenia wirtualnej maszyny.
- Command – są to podkomendy, które wykonują jakąś konkretną pracę do zarządzania naszym Build’em.
- Provisioner – są to składniki oprogramowania Packer, które instalują oraz konfigurują na uruchomionej maszynie oprogramowanie przed przekształceniem jej w obraz.
- Template – są to pliki w formacie JSON, które definiują jedną lub więcej kompilacji – zawierają kod źródłowy dla danej maszyny wirtualnej.
2 Packer Commands
Packer jest kontrolowany za pomocą dedykowanych poleceń w wierszu poleceń. Cała interakcja z narzędziem odbywa się przy pomocy dedykowanego oprogramowania. Jednym z najczęściej używanych poleceń będzie to komenda:
- Build – polecenie pobiera informacje z kodu i uruchamia wszystkie zawarte w nim zestawy Artifact.
- validate – służy do sprawdzania poprawności składni i konfiguracji kodu
- fix – polecenie pobiera szablon i wyszukuje jego niekompatybilne komponenty oraz aktualizuje go jeśli jest taka potrzeba
3 Komunikatory
- SSH – jest to mechanizm, którego Packer używa do komunikacji z maszyną wirtualną dla systemu operacyjnego Linux
- WinRM – jest to mechanizm, którego Packer używa do komunikacji z maszyną wirtualną dla systemu operacyjnego Windows
-
- winrm_username (string) – nazwa użytkownika przy użyciu połączenia protokołem WinRM
-
- winrm_password (string) – hasło dla użytkownika przy użyciu połączenia protokołem WinRM
-
- winrm_port (int) – Numer portu po jaki będzie działał WinRM
-
- winrm_timeout (czas string | ex: „1h5m2s”) – całkowity czas oczekiwania na to aby WinRM został osiągalny
-
- winrm_use_ssl (bool) – jeśli jest ustawiony na true, to zostanie użyty protokół HTTPS
-
- winrm_insecure (bool) – jeśli jest ustawiony na true, to ignorowany jest certyfikat oraz nazwa serwera
4 Builder
Odpowiada za tworzenie maszyn wirtualnych i generowanie z nich obrazów na różne platformy wirtualizatrów takich jak: Azure, AWS, VMware, VirtualBox w moim przypadku skopie się właśnie na tym ostatnim go rozszerzyć, aby dodać nowych kreatorów. VirtualBox Packer może tworzyć maszyny wirtualne oraz eksportować je w formatach OVA lub OVF.
-
- virtualbox-iso – tworzy zupełnie nową maszynę wirtualną przy pomocy pliku ISO, instaluje system operacyjny, eksportuje tę maszynę w celu utworzenia obrazu.
-
- virtualbox-ovf – importuje już istniejący plik OVF/A, uruchamia maszynę wirtualną i eksportuje ją maszynę w celu utworzenia obrazu.
-
- virtualbox-vm – używa istniejącej już maszyny wirtualnej do uruchamiania zdefiniowanych poleceń opcjonalnie tworzy migawkę.
5 Provisioner
Usługa ta instaluje oraz konfiguruje obraz maszyny po jej uruchomieniu w zależności jaki typ wybierzemy. Przypadku użycia obejmują np.: instalowanie pakietów, wyzwalanie gotowych skryptów, pobieranie kodu aplikacji. Dostępne mamy mnóstwo typów Provisionera takich jak Powershell, Chef, Ansible….
Powyższe informacje zaczerpnięte zostały z oficjalnej strony packer.io
