28 pytań i odpowiedzi podczas wywiadu Terraform w czasie rzeczywistym

Photo of author

By maciekx

Spis treści:

Poniżej znajdziesz 28 pytań i odpowiedzi, które mogą pojawić się podczas rozmowy kwalifikacyjnej dotyczącej Terraform. Dołączyliśmy także listę kluczowych poleceń, które często są omawiane w trakcie takich spotkań.

Dynamiczny rozwój technologii chmurowych otworzył nowe perspektywy w obszarze DevOps. W najbliższych latach kompetencje związane z chmurą i infrastrukturą jako kod (IaC) staną się standardem. Znajomość narzędzi IaC będzie niezbędna na stanowiskach DevOps.

Czym jest Terraform?

Terraform to popularne narzędzie IaC, wykorzystywane przez specjalistów ds. chmury. Umożliwia ono definiowanie zasobów chmurowych i lokalnych za pomocą plików konfiguracyjnych, które są łatwe do zrozumienia. Dzięki temu możemy programowo zarządzać infrastrukturą. Wyróżniającą cechą Terraform jest jego uniwersalność – w przeciwieństwie do wielu innych narzędzi IaC, nie jest on ograniczony do jednego dostawcy chmury. Można go używać do wdrażania aplikacji w różnych środowiskach chmurowych jednocześnie.

Lista technologii, z którymi współpracuje Terraform, jest obszerna, a oto kilka z nich:

Jeśli aspirujesz do roli inżyniera DevOps, architekta chmurowego, programisty lub administratora, musisz przygotować się na pytania dotyczące Terraform podczas rozmów kwalifikacyjnych. Przygotowaliśmy zestaw najważniejszych zagadnień, które pomogą Ci w rozwijaniu Twojej wiedzy na temat Terraform.

Podstawowe pytania i odpowiedzi na temat Terraform

#1. Jak rozumiesz pojęcie Terraform?

Terraform to narzędzie IaC o otwartym kodzie źródłowym, stworzone przez HashiCorp. Służy do tworzenia, aktualizowania, usuwania i zarządzania wersjami infrastruktury na różnych platformach chmurowych.

#2. Dlaczego warto wybrać Terraform w DevOps?

Wykorzystanie Terraform do zarządzania infrastrukturą minimalizuje ryzyko błędów ludzkich, podnosząc jakość, spójność i wydajność infrastruktury chmurowej i lokalnej. Terraform używa języka HCL, który przypomina JSON i jest łatwy do opanowania. W przeciwieństwie do narzędzi IaC oferowanych przez dostawców chmury, takich jak Cloudformation dla AWS, Terraform pozwala na współpracę z wieloma platformami chmurowymi. Ogranicza to potrzebę nauki różnych narzędzi i zwiększa możliwości współpracy.

#3. Jak działa Terraform?

Terraform używa wtyczek, zwanych dostawcami, do interakcji z API platform chmurowych i zarządzania zasobami. Proces pracy z Terraform składa się z trzech etapów:

Napisz: Definiowanie infrastruktury za pomocą kodu.

Plan: Podgląd zmian, które Terraform zamierza wprowadzić przed ich zastosowaniem.

Zastosuj: Wdrożenie infrastruktury i zastosowanie zmian.

#4. Co to jest Terraform Cloud?

Terraform Cloud to zdalna platforma, zaprojektowana specjalnie do pracy z Terraform. Oferuje funkcje takie jak obszary robocze i blokowanie stanu, które usprawniają współpracę w zespołach.

#5. Czym jest stan (State) w Terraform?

Terraform, jako narzędzie IaC, musi znać bieżący stan konfiguracji i zarządzanej infrastruktury. Te informacje są przechowywane w pliku zwanym plikiem stanu.

#6. Jakie są zalety stanu Terraform?

Stan Terraform pozwala na mapowanie rzeczywistych zasobów z ich konfiguracją, śledzenie metadanych i optymalizację procesu planowania zmian w rozbudowanej infrastrukturze. Jest to kluczowy element działania Terraform.

#7. Co to jest backend w Terraform?

Backend w Terraform to miejsce przechowywania migawek stanu. Domyślnie Terraform korzysta z backendu o nazwie „local”, który zapisuje stan jako plik na dysku. Wszystkie inne backendy to zdalne usługi przechowywania.

#8. Kim jest dostawca (provider) w Terraform?

Dostawcy w Terraform to wtyczki umożliwiające interakcję z dostawcami chmury, SaaS i innymi API. Na przykład, jeśli chcemy zarządzać infrastrukturą na AWS za pomocą Terraform, musimy zadeklarować dostawcę AWS w plikach konfiguracyjnych.

#9. Kto utrzymuje dostawców Terraform?

Dostawcy są rozwijani niezależnie od samego Terraform. Każdy użytkownik Terraform może tworzyć własnych dostawców. Niektórych standardowych dostawców utrzymuje bezpośrednio Hashicorp.

#10. Co to jest Sentinel?

Sentinel to narzędzie do definiowania zasad jako kodu, które służy do wymuszania standardów konfiguracji dla zasobów wdrażanych przez Terraform. Organizacje mogą go używać w celu zapewnienia zgodności i zarządzania.

#11. Czym są moduły w Terraform?

Moduł Terraform to kontener grupujący zasoby, które są używane razem do zarządzania konfiguracją i wdrażania. Przykładowo, można utworzyć „moduł VPC”, który wdraża standardową VPC oraz zasoby takie jak podsieci i bramy internetowe. Moduły mogą być udostępniane publicznie w rejestrze modułów publicznych lub prywatnie w rejestrze modułów prywatnych.

#12. Jakie korzyści płyną z używania modułów w Terraform?

Moduły Terraform pozwalają na tworzenie logicznej abstrakcji nad zestawem zasobów. Umożliwiają utrzymanie i ponowne wykorzystanie standardowych konfiguracji. Moduły można wersjonować i udostępniać w zespołach w celu standaryzacji wdrażania zasobów.

#13. Co to jest rejestr modułów prywatnych?

Prywatny rejestr modułów w Terraform Cloud umożliwia udostępnianie modułów w obrębie organizacji.

Zaawansowane pytania i odpowiedzi dotyczące Terraform

#14. Jak eksportować dane z jednego modułu do drugiego?

Dane z modułu można eksportować, definiując bloki wyjściowe w jego plikach konfiguracyjnych. Następnie te dane mogą być przekazane jako parametry do modułu docelowego.

#13. Jak definiować zależności w Terraform?

Terraform posiada wbudowany system zarządzania zależnościami. Wyróżnia się dwa typy zależności między zasobami: niejawne i jawne.

Niejawne zależności są automatycznie wykrywane przez Terraform. Dzieje się tak, gdy dane wyjściowe „zasobu A” są używane w „zasobie B”. Terraform automatycznie określa, że „zasób B” musi zostać utworzony dopiero po „zasobie A”.

Jawne zależności definiujemy w sytuacjach, gdy zasoby są zależne od siebie, ale nie dzielą się danymi wyjściowymi. Można to zrobić za pomocą parametru `depend_on` w bloku konfiguracyjnym.

#14. Co to są provisioners w Terraform?

Provisioners to zasoby Terraform, które służą do uruchamiania skryptów podczas tworzenia lub usuwania zasobów. W Terraform istnieją dwa typy provisioners:

  • local-exec: Uruchamia skrypt na komputerze, na którym działa Terraform.
  • remote-exec: Uruchamia skrypt na zdalnym zasobie po jego utworzeniu.

Provisioners powinny być stosowane tylko w ostateczności.

#15. Co to jest zewnętrzny blok danych w Terraform?

Zewnętrzny blok danych, podobnie jak provisioner `local-exec`, umożliwia uruchamianie skryptów na komputerach, na których działa Terraform. Różnica polega na tym, że skrypty w zewnętrznym bloku danych mogą zwracać dane w formacie JSON, czego nie potrafią provisioners. Należy pamiętać, że zewnętrzne bloki danych również powinny być używane z umiarem, jeśli istnieje lepsza alternatywa.

#16. Jak dwie osoby korzystające z Terraform Cloud mogą utworzyć dwie różne zestawy infrastruktury, pracując w tym samym katalogu roboczym?

Poprzez użycie różnych przestrzeni roboczych. Każdy użytkownik może pracować w odrębnym obszarze roboczym. Każdy obszar roboczy ma swój plik stanu, dzięki czemu, o ile zasoby się nie pokrywają, można z powodzeniem wdrożyć dwa zestawy infrastruktury, korzystając z tego samego kodu.

#17. Co się stanie, gdy wielu inżynierów zacznie wdrażać infrastrukturę, korzystając z tego samego pliku stanu?

Terraform ma mechanizm „blokady stanu”, który zapewnia, że podczas uruchamiania nie zostaną wprowadzone zmiany w pliku stanu, zapobiegając jego uszkodzeniu. Należy pamiętać, że nie wszystkie backendy Terraform obsługują tę funkcję, dlatego należy wybrać odpowiedni backend, jeśli jest ona wymagana.

#18. Co to jest zasób null w Terraform?

Zasób null w Terraform to konfiguracja, która działa jak standardowy blok zasobów, ale nie tworzy żadnych zasobów. Choć może wydawać się bezużyteczny, bywa przydatny w pewnych sytuacjach, aby obejść ograniczenia Terraform.

#19. Jak używać tego samego dostawcy w Terraform z różnymi konfiguracjami?

Poprzez zastosowanie argumentu `alias` w bloku dostawcy.

#20. Co się stanie po uruchomieniu polecenia `terraform apply` z plikiem konfiguracyjnym, który nie zawiera żadnych zasobów?

Terraform usunie wszystkie istniejące zasoby. Uruchomienie `terraform apply` z pustą konfiguracją jest równoznaczne z użyciem `terraform destroy`.

#21. Co się stanie, jeśli zasób został utworzony w Terraform, ale zawiódł podczas aprowizacji?

Jest to mało prawdopodobne, ale w takiej sytuacji zasób zostanie oznaczony jako skażony. Można go odtworzyć, ponownie uruchamiając Terraform.

#22. Która wartość zmiennej `TF_LOG` zapewnia najbardziej szczegółowe logowanie?

Wartość `TRACE` zapewnia najbardziej szczegółowe logowanie i jest wartością domyślną.

#23. Jak zaimportować istniejące zasoby do zarządzania Terraform?

Za pomocą polecenia `terraform import`.

#24. Jakiego polecenia użyć, aby zobaczyć plan wykonania Terraform?

Polecenie `terraform plan` generuje plan zmian, które Terraform zamierza wprowadzić w infrastrukturze.

#25. Które polecenie służy do uzgodnienia stanu Terraform z rzeczywistą infrastrukturą?

Polecenie `terraform apply -refresh-only` służy do uzgadniania stanu z rzeczywistą infrastrukturą. Jest to nowa alternatywa dla przestarzałego polecenia `terraform refresh`.

#26. Jak przełączać się między obszarami roboczymi w Terraform Cloud?

Użyj polecenia `terraform workspace select `, aby wybrać inny obszar roboczy.

#27. Jak sprawdzić poprawność składni plików konfiguracyjnych Terraform?

Polecenie `terraform validate` służy do weryfikacji poprawności składni i spójności konfiguracji.

#28. Jak utworzyć nowy obszar roboczy w Terraform Cloud?

Użyj polecenia `terraform workspace new `, aby utworzyć nowy obszar roboczy.

Dodatkowe, ważne polecenia Terraform na rozmowy techniczne

  • `terraform init`: inicjalizuje backendy zdalne; pobiera dostawców i moduły zdefiniowane w konfiguracji.
  • `terraform init -upgrade`: aktualizuje istniejących dostawców.
  • `terraform plan`: generuje plan wykonania tworzenia lub aktualizacji infrastruktury.
  • `terraform apply`: tworzy lub aktualizuje infrastrukturę, wymagając potwierdzenia użytkownika.
  • `terraform apply –auto-approve`: tworzy lub aktualizuje infrastrukturę, pomijając etap potwierdzenia.
  • `terraform destroy`: usuwa infrastrukturę, wymagając potwierdzenia użytkownika.
  • `terraform destroy –auto-approve`: usuwa infrastrukturę, pomijając etap potwierdzenia.
  • `terraform fmt`: skanuje bieżący katalog w poszukiwaniu plików konfiguracyjnych i formatuje je zgodnie ze standardami HCP.
  • `terraform fmt –recursive`: skanuje bieżący katalog oraz podkatalogi i formatuje pliki konfiguracyjne.
  • `terraform show`: wyświetla informacje z pliku stanu lub planu w formie czytelnej dla człowieka.

Mamy nadzieję, że te informacje pomogą Ci w przygotowaniu się do rozmowy kwalifikacyjnej na stanowisko związane z Terraform.


newsblog.pl