Jak przejść certyfikację Terraform Associate w tydzień
Pamiętacie to uczucie napięcia i zagubienia, gdy czekaliście na wyniki testu na prawo jazdy? Parę lat temu stałem przed pokojem egzaminacyjnym, czując dokładnie to samo. Tego dnia budzik zadzwonił bezlitośnie wcześnie. Wsiadłem do samochodu 🚗 i pojechałem do dość odległego ośrodka egzaminacyjnego, gdzie po napisaniu testu pozostało mi jedynie czekać przed pokojem na wyniki 🥵.
Było to zakończenie kilku męczących tygodni przygotowań do egzaminu AWS Solutions Architect. Z perspektywy czasu powiedziałbym, że na informację zwrotną czekałem długo, jednak w rzeczywistości już po kilku minutach wiedziałem, że mój pierwszy “poważny” chmurowy egzamin certyfikacyjny ukończyłem z wynikiem pozytywnym 🤓.
Uczucie, jakie mi wtedy towarzyszyło nazywam małym technicznym “katharsis”. Ta ulga i ekscytacja po długim okresie przygotowania jest czymś, do czego lubię wracać w mojej karierze chyba trochę za często. Już wiem, że jak nadciąga kolejny epizod telenoweli pt. “impostor syndrome”, to mogę użyć certyfikatu jak młotka, żeby zatłuc bestię.
Dlaczego teraz o tym piszę? Nazwijcie mnie starym grzybem, ale jeśli chodzi o certyfikaty to… “kiedyś było inaczej”. Czy lepiej? Zdecydowanie nie! Ostatnio miałem okazję przystąpić do zupełnie innego egzaminu certyfikacyjnego. W ciągu tygodnia przygotowałem się, zarezerwowałem termin i przystąpiłem do testu z własnego pokoju. Bez wielotygodniowej nauki, bez wczesnego wstawania i męczącej podróży, w miejscu, w którym się dobrze czuje.
Moim łupem padł certyfikat Hashicorp: Terraform Associate, do którego z odrobiną szczęścia spróbuję zachęcić i Ciebie! Zakładam teraz, że już choć trochę bawiłeś się Terraform (nawet jeśli tylko hobbystycznie). Jeśli nie — dołóż sobie jeden dzień na początku naszej marszruty, odpal przykładowy tutorial i pobrudź ręce, wtedy dasz radę 🤞!
Dlaczego warto zdobyć certyfikat Terraform Associate?
Pewnie zdajesz sobie sprawę, że zarządzanie infrastrukturą i tematy DevOps są bardzo pożądane na rynku pracy. Jak bardzo? Terraform jest drugą najlepiej płatną technologią zaraz po Spark (wg raportu InHire Market Snapshot 2021). Nietrudno dziś znaleźć oferty przekraczające 30k+ PLN 💰 a sama ilość otwartych pozycji daje duże możliwości wyboru pracodawcy.
Terraform Associate to świetny certyfikat do zdobycia na początku drogi DevOps. W przeciwieństwie do AWS, Azure, GCP, Kubernetes, Ansible ma on zdecydowanie niższy próg wejścia — możesz dość szybko (w 1 tydzień!) zdobyć swój pierwszy wpis do CV.
Pewnie się zastanawiasz, na ile musisz znać AWS/Azure/GCP? Nie musisz się bać. Na potrzeby egzaminu wystarczy, że wiesz jak stworzyć maszynę wirtualną w dowolnej z powyższych platform. Z racji największej adopcji, pytania egzaminacyjne zazwyczaj będą formułowane w oparciu o AWS. Wiedza na temat jego usług nie musi wykraczać poza podstawy — tworzenie maszyn wirtualnych EC2 w sieci wirtualnej VPC.
Trzeci powód, najbliższy mojemu sercu — jeśli już pracujesz z Terraform to zdobycie certyfikatu pozwoli Ci “wyrównać” wiedzę z resztą społeczności. Będziesz pisać kod z wykorzystaniem najlepszych praktyk i narzędzi, o których wcześniej nie czytałeś, a kto wie — może zainspiruje Cię to także do napisania własnych rozszerzeń w Golang? Dzięki lepszemu zrozumieniu Terraform zaczniesz patrzeć szerzej na możliwości poza samą automatyzacją AWS/Azure/GCP. To inwestycja w stronę multi—cloud, która mi zwróciła się bardzo szybko.
Sprzedałem Ci pomysł? To startujemy!
Najpierw zawieś topór nad swoją głową
Ok, no może nie dosłownie. Potrzebujesz motywatora, żeby nie stracić zapału przed końcem tygodnia 😉 Jeśli mi ufasz to po przeczytaniu tego artykułu, wróć do tutaj 👉 wejdź na ten link i zarezerwuj sobie termin. Zapłacisz za niego $70.50 USD + podatek. Całość powinna się zamknąć w kwocie około 350zł.
Egzamin będzie przeprowadzony w języku angielskim w sposób zdalny (nauka angielskiego nie jest wliczona w nasze planowane 7 dni!). Upewnij się, że w terminie, który zarezerwujesz, będziesz miał wolny pokój i nikt Ci nie będzie przeszkadzał. Więcej informacji na temat wymagań do egzaminu możesz przeczytać na oficjalnej stronie oraz w podsumowaniu dnia 7. poniżej (Dzień 7 — Przystąp do egzaminu nadzorowanego zdalnie). Jeśli szukasz oficjalnych informacji na temat certyfikacji i materiałów do przygotowania to zapraszam na stronę poświęconą Hashicorp Terraform Associate. Tymczasem rozpocznijmy naszą naukę:
Dzień 1
Zrozum czym jest Infrastructure as Code i jaką rolę Terraform pełni w całym ekosystemie
W pierwszym dniu musisz odrobić zadanie domowe z materiałów reklamowo—wprowadzających. Przygotuje Cię to do zaliczenia dwóch sekcji egzaminu:
Understand infrastructure as code (IaC) concepts
- Explain what IaC is,
- Describe advantages of IaC patterns.
2 Understand Terraform's purpose (vs other IaC)
- Explain multi—cloud and provider—agnostic benefits,
- Explain the benefits of state.
W tym celu zapoznaj się z następującymi oficjalnymi materiałami:
- Infrastructure as Code— ideo wprowadzające,
- Infrastructure as Code in a Private or Public Cloud— wpis na blogu,
- Introduction to IaC— dokumentacja,
- Terraform Use Cases— dokumentacja.
Swoją wiedzę możesz sprawdzić np. przy pomocy tego quizu. Pytania będą jednokrotnego i wielokrotnego wyboru oraz kilka pytań, w których trzeba uzupełnić pojedyncze słowo.
W tej sekcji zwróć szczególną uwagę na to, co możemy zautomatyzować przy pomocy Terraform oraz jaką rolę w całości pełni plik utrzymujący stan.
Dzień 2
Poznaj modułową architekturę narzędzia i naucz się zarządzać stanem infrastruktury
Drugiego dnia przyjdzie Ci zapoznać się z rozszerzeniami umożliwiającymi definiowanie infrastruktury u różnych dostawców. Nie oznacza to, że musisz znać ich dokumentację na pamięć. Bardziej istotne jest zrozumienie ekosystemu i przetestowanie jak zarządzanie “providerem” wygląda w praktyce. Uważaj — w dokumentacji spotkasz różne określenia “provider” i “plugin”. Oznaczają one dokładnie to samo!
Poniżej możesz zobaczyć jaka wiedza będzie wymagana na egzaminie:
Understand Terraform basics
- Handle Terraform and provider installation and versioning,
- Describe plugin based architecture,
- Demonstrate using multiple providers,
- Describe how Terraform finds and fetches providers,
- Explain when to use and not use provisioners and when to use local—exec or remote—exec.
Szczególną uwagę zwróć na polecenie “terraform init”. Będzie ono bardzo istotne na egzaminie i musisz znać możliwe parametry oraz co się dzieje w trakcie uruchomienia tej komendy.
Nie pomijaj tematów związanych z “provisioners”. Pomimo tego, że są one odradzane na korzyść innych bardziej specjalizowanych narzędzi, możesz spodziewać się kilku pytań, które dotyczą tej funkcjonalności.
Zrozum także, w jakiej sytuacji powinieneś zdefiniować tego samego dostawcę więcej niż raz w swoim pliku konfiguracyjnym i jak tak stworzone “aliasy” wykorzystuje się w praktyce.
Materiały, które pomogą Ci przygotować się do tej kategorii pytań, znajdziesz poniżej:
- Get Started with Terraform— ukończ wszystkie tutoriale,
- Providers— przeczytaj dokumentację,
- Purpose of Terraform State— uzupełnij wiedzę z dnia 1. na temat “Terraform State”,
- Terraform Settings— zrozum jakie atrybuty zawiera blok “terraform {}”,
- Provision Infrastructure Deployed with Terraform— wypróbuj cloud—init i Packer,
- Provisioners— zapoznaj się z dokumentacją,
- Manage Resources in Terraform State— ukończ tutorial,
- Use Refresh—Only Mode to Sync Terraform State— ukończ tutorial,
- Lock and Upgrade Provider Versions— ukończ tutorial,
- Perform CRUD Operations with Providers— ukończ tutorial.
Jeśli potrzebujesz zwalidować wiedzę z dnia drugiego, możesz zapoznać się z tym quizem.
Dzień 3
Wykorzystaj ze zrozumieniem wszystkie komendy CLI
Trzeci dzień poświęć na dokładne zrozumienie wszystkich komend dostępnych w Terraform CLI i ich parametrów. Wbrew pozorom lista możliwości nie jest zbyt długa, ale należy uważać, przechodząc przez materiały do nauki. Część poleceń w dokumentacji może być oznaczona jako “deprecated”, natomiast w obecnej wersji egzaminu pojawiają się także pytania dotyczące takich właśnie komend (np. polecenie “taint”).
Use the Terraform CLI (outside of core workflow)
- Given a scenario: choose when to use terraform fmt to format code,
- Given a scenario: choose when to use terraform taint to taint Terraform resources,
- Given a scenario: choose when to use terraform import to import existing infrastructure into your Terraform state,
- Given a scenario: choose when to use terraform workspace to create workspaces,
- Given a scenario: choose when to use terraform state to view Terraform state,
- Given a scenario: choose when to enable verbose logging and what the outcome/value is.
Navigate Terraform workflow
- Describe Terraform workflow ( Write —> Plan —> Create ),
- Initialize a Terraform working directory (terraform init),
- Validate a Terraform configuration (terraform validate),
- Generate and review an execution plan for Terraform (terraform plan),
- Execute changes to infrastructure with Terraform (terraform apply),
- Destroy Terraform managed infrastructure (terraform destroy).
Poniższe materiały powinny być wystarczające, żeby zdać tę sekcję celująco:
- The Core Terraform Workflow— przeczytaj dokumentację,
- Initialize a Terraform working directory with init— przeczytaj dokumentację,
- Validate a Terraform configuration with validate— przeczytaj dokumentację,
- Generate and review an execution plan for Terraform with plan— przeczytaj dokumentację,
- Execute changes to infrastructure with Terraform with apply— przeczytaj dokumentację,
- Destroy Terraform managed infrastructure with destroy— przeczytaj dokumentację,
- Troubleshoot Terraform— ukończ tutorial, szczególną uwagę poświęć funkcjom odpowiedzialnym za logi Terraform,
- Formatting configuration with fmt— przeczytaj dokumentację,
- Tainting resources with taint— przeczytaj dokumentację,
- Managing state with state— przeczytaj dokumentację,
- Using local workspaces with workspace— przeczytaj dokumentację,
- Refactor Monolithic Terraform Configuration— ukończ tutorial,
- Importing existing resources with import— przeczytaj dokumentację,
- Import Terraform Configuration— ukończ tutorial.
To będzie pewnie dla Ciebie pierwszy dzień, który może przytłoczyć ilością materiałów, ale nie poddawaj się! Jesteśmy już w połowie, a przed nami jeszcze tylko jeden cięższy dzień i potem już z górki. Dobra informacja jest taka, że pracując z Terraform większość dzisiejszych tematów powinieneś już dość dobrze znać.
Jeśli potrzebujesz zwalidować swoją wiedzę z dzisiejszych tematów to zapraszam do tego quizu.
Dzień 4
Poznaj bardziej zaawansowane aspekty budowy modułów
Dzień czwarty to obiecany ostatni “ciężki” dzień. Dziś poznasz główne narzędzie w budowaniu bardziej rozbudowanej konfiguracji — moduły. Zapoznasz się także z różnymi typami danych oraz wbudowanymi funkcjami. Szczególną uwagę poświęć sekcji związanej ze zmiennymi typu “secret” i temu, jak są one przechowywane w pliku stanu. W tej sekcji powinieneś bezbłędnie zaliczyć następujące zagadnienia z egzaminu:
Interact with Terraform modules
- Contrast module source options,
- Interact with module inputs and outputs,
- Describe variable scope within modules/child modules,
- Discover modules from the public Terraform Module Registry,
- Defining module version.
Read, generate, and modify configuration
- Demonstrate use of variables and outputs,
- Describe secure secret injection best practice,
- Understand the use of collection and structural types,
- Create and differentiate resource and data configuration,
- Use resource addressing and resource parameters to connect resources together,
- Use Terraform built-in functions to write configuration,
- Configure resource using a dynamic block,
- Describe built-in dependency management (order of execution based).
Ponownie, materiały do nauki przekazuję na liście poniżej:
- Organize Configuration with Modules— ukończ wszystkie tutoriale,
- Finding and using modules— przeczytaj dokumentację,
- Module versioning— przeczytaj dokumentację,
- Input Variables— przeczytaj dokumentację,
- Input Variables— ukończ tutorial,
- Output Values— przeczytaj dokumentację,
- Output Values— ukończ tutorial,
- Calling a child module— przeczytaj dokumentację,
- Resources— zapoznaj się z dodatkowymi funkcjami bloków typu “resource” (meta—argumenty, provisioners),
- Data sources— przeczytaj dokumentację,
- Query Data Sources— ukończ tutorial,
- Resource addressing— poznaj jak terraform tworzy nazwy zasobów, zwróć uwagę na moduły, submodules, oraz operator typu “splat”,
- Named values— poznaj dostępne wartości w języku konfiguracji Terraform,
- Create Resource Dependencies— ukończ tutorial,
- Terraforms Resource Graph— zrozum, jak tworzony jest graf zależności. Pomimo że temat oznaczony jest jako “advanced”, treści z tego działu niekiedy pojawiają się na egzaminach,
- Complex types— przećwicz tworzenie rozbudowanych typów,
- Built in functions— wypróbuj, choć po jednej funkcji dla danego typu danych, zapoznaj się z “terraform console”,
- Perform Dynamic Operations with Functions— ukończ tutorial,
- Create Dynamic Expressions— ukończ tutorial,
- Dynamic blocks— zapoznaj się z funkcjonalnością. Choć rzadko pojawiają się pytania o szczegóły, to ogólne zrozumienie tematu napewno będzie Ci potrzebne.
Na koniec dnia możesz zwalidować swoją wiedzę z tym quizem.
Dzień 5
Stwórz konto na Terraform Cloud i wykorzystaj je do zbudowania przykładowej infrastruktury
Dzień piąty jest zdecydowanie bardziej spokojny. Zacznij go od założenia konta na Terraform Cloud (jest darmowe do 5 osób w zespole) i aktywuj bezpłatną wersję próbną planu płatnego. Pod koniec dnia powinieneś umieć opisać czym się różnią plany w Terraform Cloud, czym jest Sentinel (nie musisz umieć pisać w nim polis!), oraz rozumieć ideę “workspaces” w Terraform Cloud i czym się one różnią od “workspaces” z Terraform CLI. Dzień też uzupełnij sobie ostatnią porcją wiedzy o Terraform State.
Wymagania z tego zakresu w materiałach egzaminacyjnych opisane są następująco:
Understand Terraform Cloud and Enterprise capabilities
- Describe the benefits of Sentinel, registry, and workspaces,
- Differentiate OSS and TFE workspaces,
- Summarize features of Terraform Cloud.
Implement and maintain state
- Describe default local backend,
- Outline state locking,
- Handle backend authentication methods,
- Describe remote state storage mechanisms and supported standard backends,
- Describe effect of Terraform refresh on state,
- Describe backend block in configuration and best practices for partial configurations,
- Understand secret management in state files.
Materiały pomocne w nauce:
- Terraform Cloud overview— przeczytaj ten element dokumentacji,
- Understanding Workspaces and Modules— obejrzyj nagranie,
- CLI workspaces— zrozum różnicę między workspaces w CLI i Terraform Cloud,
- The UI— and VCS—driven Run Workflow— przeczytaj dokumentację i wypróbuj samemu elementy w niej zawarte,
- Terraform Cloud workspaces documentation— zrozum różnicę między workspaces w CLI i Terraform Cloud,
- Use Modules from the Registry— ukończ tutorial,
- Module registry— przeczytaj dokumentację,
- Install the Sentinel CLI— ukończ tutorial,
- Sentinel Policy as Code— przeczytaj podsumowanie Sentinel w dokumentacji,
- Feature comparison— zapoznaj się z pricing page.
Żeby zwalidować swoje postępy możesz przystąpić do poniższego testu.
Dzień 6
Odświeżenie i ćwiczenia
Dnia szóstego sugeruję Ci przeczytać swoje notatki (o ile robiłeś) oraz zapoznać się z sekcjami egzaminu dostępnymi tutaj. Na tej samej stronie znajdziesz przykładowe pytania egzaminacyjne. Przestrzegam natomiast przed wyszukiwaniem pytań dostępnych publicznie — zdecydowana ich większość zawiera błędne odpowiedzi (nawet jeśli podobne pytania pojawiają się na egzaminie).
Dzień szósty jest także świetną okazją, żeby przygotować siebie i swoje stanowisko pracy do egzaminu przeprowadzanego zdalnie. Co potrzebujesz przygotować? O tym w następnej sekcji.
Dzień 7
Przystąp do egzaminu nadzorowanego zdalnie
Do egzaminu przystąpić możesz 15 minut przed oficjalnym jego rozpoczęciem. Bardzo Cię do tego zachęcam — w razie ew. problemów będziesz miał chwilę na kontakt z osobą wsparcia technicznego.
Na egzamin potrzebujesz przygotować swój dokument tożsamości. Zwróć uwagę, żeby dokument nie był przedawniony, zawierał zdjęcie i podpis — w moim wypadku użyłem dowodu osobistego i nie było z nim najmniejszego problemu. Jeśli Twoje imie/nazwisko na dowodzie nie odpowiada danym, które wprowadziłeś przy zapisywaniu się do egzaminu, musisz poinformować [email protected] o tym fakcie co najmniej 3 dni robocze przed egzaminem.
Pokój, w którym będziesz przystępował do egzaminu, musi spełniać warunki opisane tutaj.
Do egzaminu przystępujesz z jednym monitorem (jeśli jest to laptop, to musisz odłączyć zewnętrzny monitor), kamerą internetową, głośnikami (mogą być wbudowane), mikrofonem (dźwięki w tle są monitorowane). Nie możesz korzystać ze słuchawek, komórki i innych akcesoriów. Jeśli korzystasz ze smartwatch — lepiej odłóż go daleko od siebie. Wymagania dotyczące sprzętu możesz przeczytać tutaj, a kompatybilność Twojego sprzętu przetestować tutaj. Prowadzący egzamin sugerują korzystać z prywatnego komputera (bez VPN i firewall).
W moim wypadku korzystałem z MacBookAir i natrafiliśmy na problemy techniczne z uruchomieniem egzaminu, które udało się rozwiązać instalując ręcznie PSI Bridge Secure Browser.
Po zalogowaniu do platformy i uruchomieniu dedykowanej przeglądarki egzaminacyjnej (PSI Secure Browser) zostaniesz poproszony o zrobienie zdjęcia kamerką swojego dowodu, nagrania 360 stopni swojego pokoju, pokazania rąk (sugeruję krótki rękaw), nagrania powierzchni biurka, odłożenia na nagraniu telefonu komórkowego za siebie. Po zatwierdzeniu “czystości” miejsca pracy egzaminator dopuści Cię do egzaminu. Nie będzie to osoba, z którą będziesz musiał rozmawiać — komunikacja jest jedynie pisemna i tylko wtedy, gdy jest potrzebna (np. w wypadku pytań).
Sam egzamin zawierać będzie ok 60 pytań, po których jest krótka ankieta na temat Twoich wrażeń z całego procesu. Na odpowiedź na pytania masz 60 minut (ankieta nie wlicza się w ten czas). Po wypełnieniu ankiety otrzymasz w przeglądarce swoje wyniki, a po krótkiej chwili powinieneś także dostać e-mail z potwierdzeniem i podsumowaniem.
Zdane — i co dalej?
Jeśli zdałeś — gratuluję! 👏
Podziel się swoimi wrażeniami w komentarzu lub złap mnie na LinkedIn — będę wdzięczny za każdy feedback. Jeśli szukasz dalszych wrażeń to polecam napisać pierwszego providera w Golang lub może zdobycie certyfikatu Kubernetes? Jeśli masz więcej pytań, to zapraszam Cię na spotkanie ze mną na początku marca. Tymczasem, powodzenia!