|

Wstęp do automatyzacja HashiCorp Packer

W tym artykule przybliżymy sobie podstawy automatyzacji przy użyciu oprogramowania HashiCorp Packer. Aby to dokonać musimy odpowiednio wcześniej skonfigurowane środowisko. W moim przypadku bazuję na narzędziach Open Source lub wersjach czasowych dedykowanych oprogramowań. Dzisiaj na warsztat bierzemy jedno z oprogramowań  firmy HashiCorp a mianowicie Packer’a. Packer jest to narzędzie oparte na licencji Open Source do…

pacler W tym artykule przybliżymy sobie podstawy automatyzacji przy użyciu oprogramowania HashiCorp Packer.

Aby to dokonać musimy odpowiednio wcześniej skonfigurowane środowisko. W moim przypadku bazuję na narzędziach Open Source lub wersjach czasowych dedykowanych oprogramowań.

Dzisiaj na warsztat bierzemy jedno z oprogramowań  firmy HashiCorp a mianowicie Packer’a. Packer jest to narzędzie oparte na licencji Open Source do tworzenia identycznych obrazów (template) wirtualnych maszyn na wielu platformach z jednej konfiguracji źródła.

Samo narzędzie to tylko pojedynczy pliki, nie wymaga instalacji, działa na każdym głównym systemie operacyjnym i jest wysoce wydajny. Dzięki temu jesteśmy w stanie równocześnie tworzyć wirtualne obrazy maszyn dla wielu platform.

W rzeczywistości podczas utworzonych obrazów przez Packer’a można używać takich narzędzi jak Chef ,Puppet, Ansible, Powershell do instalowania oprogramowania na docelowym obrazie.

Obraz maszyny zawiera wstępnie skonfigurowany system operacyjny oraz zainstalowane oprogramowanie, które służy do późniejszego szybkiego tworzenia nowych wirtualnych maszyn. Formaty obrazów  zmieniają się i są zależne od dedykowanej platformy.

Niektóre przykłady obejmują  pliki VMDK / VMX dla VMware, Hyper-V czy też eksport OVF dla VirtualBox

 

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.

 

  • 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 Commands (CLI)

  • build – polecenie dzięki, któremu będziemy mogli budować nasz obraz wirtualnej maszyny;

 

  • validate – polecenie dzięki, któremu będziemy mogli zweryfikować poprawność kodu pliku konfiguracyjnego;

 

  • fix – polecenie dzięki, któremu będziemy mogli poprawić nasz kod jeśli Packer poinformuje nas o błędach przy uruchomieniu

 

3 Communicator

  • SSH
  • WinRM – wbudowany wbudowany mechanizm systemów Windows do komunikacji
      • winrm_username (string) – nazwa użytkownika używana przy łączeniu się z użyciem WinRM.

 

      • winrm_password (string) – hasło użytkownika przy łączeniu się z użyciem WinRM.

 

      • winrm_port (int) – numer portu do komunikacji, domyślny numer to 5985 dla połączeń nie szyfrowanych i 5986 dla połączeń szyfrowanych winrm_use_ssl .

 

      • winrm_timeout (czas w stringu | np: „2h40m9s”) – czas oczekiwania na WinRM aby był dostępny, domyślny interwal to 30 minut.

 

      • winrm_use_ssl (bool) – Jeśli jest ustawione na true to używamy połączenia szyfrowanego HTTPS dla WinRM.

 

      • winrm_insecure (bool) – Jeśli jest ustawione na true to nie sprawdza łańcucha dla certyfikatu na serwerze zdalnym.

 

4 Builder

Builder odpowiada za tworzenie wirtualnych maszyn oraz generowanie z nich obrazów na różne platformy. Do dyspozycji mamy mnóstwo platform takich jak: AWS, Azure, Vmware, VirtualBox. Ja skupie się na tym ostatnim.

  • VirtualBox – builder ten może tworzyć maszyny wirtualne oraz eksportować je do formatu OVF lub OVA. Packer dla VirtualBoxa zawiera trzy typy Builder’ów zdolnych do tworzenia maszyn w zależności od naszej potrzeby.

 

    • virtualbox-iso – tworzy od nowa maszynę wirtualną, instaluje system operacyjny, a następnie eksportuje tę maszynę w celu utworzenia obrazu. To najlepsze rozwiązanie dla osób, które chcą zacząć od zera.

 

    • virtualbox-ovf – ten Builder importuje istniejący już plik OVA/OVF, uruchamia wskazany Provisioner na tej maszynie wirtualnej a następnie eksportuje ją w celu utworzenia obrazu.

 

    • virtualbox-vm – Ten Builder używa istniejącej już maszyny wirtualnej do uruchamiania zdefiniowanych Provisioner’ów na tej maszynie wirtualnej i opcjonalnie tworzy migawkę, aby zapisać zmiany zastosowane przez Provisioner.

 

Zapraszam do dedykowanych wpisów gdzie szczegółowo opisuje jak od Adamy i Ewy  skonfigurować poszczególne komponenty. Najlepiej zacząć przygodę od strony informującej jak zacząć https://www.virtuallabs.pl/packer-poradnik-dla-poczatkujacych-konfiguracja-srodowiska-windows/  

Powyższe informacje pochodzą z oficjalnej strony firmy HashiCorp, Packer