|

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…

pacler

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