Egzamin HashiCorp Terraform i dobre praktyki
Cześć, w tym wpisie przekażę wam najlepsze źródła z jakich skorzystałem podczas przygotowań do egzaminu HashiCorp Certified: Terraform Associate (002). Opiszę dlaczego warto przystąpić do tego egzaminu. Przybliżę też w skrócie treść książki „Terraform – Krótkie wprowadzenie. Tworzenie infrastruktury za pomocą kodu” i wyjaśnię dlaczego ta pozycja będzie świetnym uzupełnieniem wiedzy, którą nabędziemy przygotowując się do egzaminu. Dzięki tym materiałom będziemy w stanie tworzyć i testować automatycznie dobrej jakości kod terraform. Serdecznie zapraszam.
Co to jest Terraform ?
Wydaje mi się, że każdy DevOps słyszał o narzedziu jakim jest Terraform. W dzisiejszym wpisie nie będę opisywał w jaki sposób używać tego narzędzia. Skupię się na egzaminie i materiałach, z których warto skorzystać. Podane przeze mnie źródła w większości będą bezpłatne i pozwolą zaliczyć egezamin bez problemu.
Terraform jest jednym z produktów firmy HashiCorp, dzięki któremu możemy zarządzać infrastrukturą za pomoca kodu (IaC – Infrastructure as Code) w sposób zautomatyzowany. Terraform za pomocą wtyczki „provider” pozwala na odwoływanie się do dostawców infrastruktury. Obecnie w Terraform dostępna jest tylko ta jedna wtyczka. Provaiderem określamy dostawcę zasobów, którym możemy zarządzać. Kiedyś do wyboru mieliśmy bardzo ograniczoną grupę dostawców. Byli to głównie AWS, Azure, GCP. Obecnie za pomocą provaiderów terraforma możemy zarządzać np. oracle cloud, alibaba cloud, githubem, octopusem, kubernetesem, lokalnymi plikami, consulem i setkami innych zasobów. Po szczegóły odsyłam do dokumentacji.
Po co mi ten certyfikat ?
Moja odpowiedź na to pytanie będzie podobna do tej, którą podałem w wpisie „Certyfikaty AWS na poziomie Associate”.
Po pierwsze egzamin pomaga w usystematyzowaniu wiedzy oraz daje pewność, że nie mamy większych braków w najważniejszych obszarach. Podam przykład z życia wzięty. Pewien mój znajomy – bardzo doświadczony DevOps z ponad 10 – letnim stażem w IT piszący świetne moduły Terraform nie pamiętał, że można w tym narzędziu automatycznie zaczytać zmienne z pliku jeśli dodamy rozszerzenie „*.auto.tfvars”. Oczywiście to drobnostka i zmienne można wstrzykiwać inaczej, ale chcę przez to powiedzieć, że dzięki egzaminowi nawet doświadczony użytkownik może odświeżyć swoją wiedzę i wprowadzić ulepszenia do swoich rozwiązań.
Po drugie, w prawie każdym ogłoszeniu o pracę na stanowisko DevOps znajdziecie w wymaganiach znajomość IaC. Terraform jest najbardziej popularnym z narzędzi do automatycznego zarządzania infrastrukturą m.in. dlatego, że jest niezależny od dostawcy. Z tego powodu posiadając w swoim dorobku w.w. certyfikat pracodawcy będą wiedzieli, że w momencie gdy spotkacie się z kodem Terraform nie będziecie tracić czasu na jego naukę. Dzięki temu będziecie bardziej porządanymi pracownikami.
Na koniec dodam, że egzamin jest dość tani 70,50$ + podatek, a poziom trudności jest niski w porównaniu np. z certyfikatami AWS. W mojej ocenie dwa tygodnie przygotowań w zupełności wystarczą by ten egzamin zaliczyć w przypadku junior DevOpsa.
Materiały do nauki
Jednym z najlepszych darmowych materiałów jest dość długi kurs wideo od ExamPro. Kurs wyczerpuje temat, a przygotowany jest tak, że po kolei przechodzimy przez wszystkie domeny poruszane na egzaminie. Cały materiał wideo trwa ponad 13 godzin i jest dostępny na youtubie. Prowadzącym kurs jest Andrew Brown. Wideo jest cześcią większego kursu dostępnego na stronie ExamPro. Możemy skorzystać z wersji demo wspomnianego kursu i poza wideo otrzymamy jeden egzamin praktyczny. Oczywiście kupujc od ExamPro cały kurs za 24 $ uzyskujemny dostęp do wszystkich materiałów tj. wideo, trzech egzaminów praktycznych, Cheat Sheets, Flashcards i innych.
Drugim wartym polecenia źródłem jest blog medium.com. Znajdziemy tam wpis z 250 pytaniami z terraforma, które pozwolą nam sprawdzić i uzupełnić nasze braki. Link bezpośrednio do tego wpisu.
Dwa kolejne źródła mogące pomóc nam w przygotowaniach do egazminu, a do których będziemy wielokrotnie wracać pracując z Terraform to www.terraform-best-practices.com oraz dokumentcja Terraform.
Jeżeli posiadacie dostęp do firmowego udemy polecam Wam wykonać kilka dodatkowych egzaminów praktycznych. Ja korzystałem z tego i poziom trudności był porównywalny z orginalnym egzaminem www.udemy.com/course/terraform-associate-practice-exam.
Kwestie techniczne egzaminu
Egzamin trwa 60 minut. W tym czasie musimy odpowiedzieć na 57 pytań. Mamy więc trochę ponad minutę na każde pytanie, ale nie jest to powód do zmartwienia ze względu na to iż niektóre pytania są na tyle proste, że wystarczy nam kilkanascie sekund by na nie odpowiedzieć.
Na tej stronie znajdziecie informację o domenach jakie obejmuje egzamin HashiCorp Certified: Terraform Associate (002) oraz link do rejestracji na egzamin. Do rejestracji na egzamin będziemy potrzebowali konta na github ponieważ jest to jedyny sposób logowania do serwisu PSI dla tego egzaminu. Niestety obecnie test można zdawać wyłącznie zdalnie i tylko PSI świadczy usługi jako host egzaminacyjny.
Gdy wybierzemy już termin i godzinę egzaminu pozostaje nam oczekiwać na rozpoczęcie. Egzamin możemy zacząć najwcześniej 30 minut przed godziną, którą wybraliśmy podczas rejestracji. Po zalogowaniu się na platforme PSI powinniśmy zobaczyć tabelkę z przyciskiem „Launch Exam” i licznikiem czasu pozostałym do rozpoczęcia testu.
Niestety nie obyło się bez problemu bo sytuacja w moim przypadku wyglądała tak, że po zalogowaniu sie na strone PSI nie było żadnej tabelki z datą mojego egzaminu ani przyciskiem rozpoczecia. Dopiero gdy zalogowałem sie jeszcze raz przy użyciu konta incognito przeglądarki pojawił mi się obrazek, który możecie zobaczyć powyżej. Nie wykluczam, że może moje lokalne ustawienia były tego przyczyną ale dlaczego z Pearson VUE (inny host egzaminacyjny) takich problemów nigdy nie miałem?
Tak czy siak muszę oddać, że PSI poczyniło postępy względem mojego ostatniego doświadczenia. Obecnie przed spotkaniem z proctorem (osobą nadzorującą egzamin zdalnie) program do przeprowadzania egzaminu wymaga od nas nagrywania różnych cześci pomieszczenia i nas samych by przyspieszyć proces onbordingu. Zmianę oceniam na plus. Wcześniej cały proces wymagał obecności proctora co powodowało dłuższe oczekiwanie, kolejki i napięcia.
Terraform Up & Running
Książka „Terraform Krótkie wprowadzenie” lub po angielsku „Terraform Up & Running” jest doskonałym uzupełnieniem więdzy, którą zdobyliśmy przygotowując się do egzaminu. Autorem jest Yevgeniy Brinkman współzałożyciel firmy Gruntwork. Ja czytałem wydanie drugie tej książki z 2019 roku. Najprościej będzie mi streścić tą pozycję wypisując rozdziały i odnosząć się do nich, są to:
- Dlaczego Terraform?
- Rozpoczęcie pracy z Terraform
- Zarządzanie informacjami o stanie Terraform
- Zastosowanie modułów do tworzenia infrastruktury Terraform wielokrotnego użycia
- Sztuczki i podpowiedzi dotyczące Terraform – pętle, konstrukcje if, wdrażanie i problemy
- Produkcyjny kod Terraform
- Testowanie kodu Terraform
- Używanie Terraform w zespołach
Pierwszy rozdział polecam każdemu DevOps-owi zwłaszcza temu początkującemu. Autor zaczyna od ogólnego podejścia DevOps do automatyzacji oraz opisuje jak można podzielić IaC. Birkman m.in. wyjaśnia jakie są różnice między maszynami wirtualnymi, a kontenerami. Omawia czym różni się podejście deklaratywne od proceduralnego oraz, które jest odpowiednie w danych warunkach. Porównuje ze sobą infrastrukturę modyfikowalną z niemodyfikowalną. Poza Terraform zestawia ze sobą takie narzedzia jak Ansible, Puppet, Chef. Określa jakie wady i zalety mają narzedzia posiadające oraz nie posiadające serwera głównego i wiele więcej.
Rozdział ten pozwala poukładać sobie w głowie mechaniki działania wielu narzedzi i wyjaśnia dlaczego działają one w dany sposób. Rozdział ten jest dostępny bezpłatnie na stronie wydawnictwa Helion jako fragment do pobrania.
Rozdziały od drugiego do piątego możemy pominąć o ile wcześniej zapoznaliśmy się z materiałami, o których pisałem. Można też potraktować te rozdziały jako powtórzenie i utrwalenie wiedzy ponieważ w książce znajdziemy ciekawe porównania autora.
Rozdział szósty jak sama nazwa wskazuje poświęcony jest tworzeniu modułów pod użycie na produkcji. Autor opisuje krok po kroku wszystkie elementy, które musimy wziąc pod uwagę przy tworzeniu modułów. W obecnym projekcie intesywnie wykorzystuję tę wiedzę, i porównując rozwiazania opisane przez Birkmana, a te tworzone przez moich kolegów uzyskujemy podobne rezultaty.
Kolejny rozdział opisuje metody testowania kodu Terraform. Jest to najdłuższy rozdział z całej książki, a mimo to autorowi udało się zmieścić zaledwie po jednym przykładzie z każdej z metod testowania automatycznego. Mam na myśli testy jednostkowe, które tak naprawdę dla terraforma nie istnieją, testów integracyjnych i całościowych.
W ostatnim rozdziale dowiemy się jak współpracować w zespołach przy tworzeniu kodu Terraform. Warto przeczytać tę część, ale nie odkrywamy nowych lądów jesli wcześniej pracowaliśmy z systemami kontroli wersji. Musimy po prostu przyzwyczaić się do innej metodologii pracy, a najlepiej osiągnąć to w praktyce niż czytając o tym książkę.
Podsumowując mogę z czystym sumieniem stwierdzić, że książkę warto przeczytać gdyż znajdziecie w niej wiele konkretów, a napisana jest zwięźle bez zbędego lania wody. Pozycja liczy trochę ponad 300 stron. Świat i rozwiązania techniczne bardzo szybko idą do przodu. Jako, że pozycja ta wydana została w 2019 roku i powstawała gdy najnowszą wersją Terraform była wersja 0.12 na dzień dzisiejszy niektóre informacje w niej zawarte są juz niekatualne. Jest ich jednak bardzo mało co w rezultacie nie wpływa negatywnie na całość.