28 Otázky a odpovědi pro rozhovory Terraform v reálném čase

Obsah

Níže naleznete 28 otázek a odpovědí z reálných rozhovorů o Terraformu, včetně seznamu a vysvětlení důležitých příkazů, které se často objevují při pohovorech.

Rozmach cloudových technologií otevřel v DevOps světě mnoho příležitostí. V budoucnosti budou znalosti cloudových technologií klíčové a základní povědomí o cloudu, infrastruktuře jako kódu (IaC) a nástrojích IaC budou nezbytné pro role v DevOps.

Co je Terraform?

Terraform je jedním z nejrozšířenějších nástrojů IaC, které cloudoví inženýři používají. Umožňuje definovat cloudové i lokální zdroje v konfiguracích, které jsou snadno čitelné pro člověka, a tyto zdroje následně programově spravovat. Hlavní výhodou Terraformu je, že na rozdíl od většiny nástrojů IaC není omezen pouze na jednoho poskytovatele cloudu. Můžete jej použít pro nasazení aplikací na různých cloudových platformách současně.

Pokud vás zajímá, jaké technologie Terraform podporuje, zde je stručný výčet:

Pro pokračování ve vaší kariéře jako DevOps inženýři, architekti cloudu, vývojáři nebo administrátoři, budete muset být připraveni na otázky týkající se Terraformu během pohovorů. Sestavili jsme seznam klíčových otázek, které by vám měly pomoci zdokonalit vaše znalosti Terraformu.

Obecné otázky a odpovědi pro pohovory o Terraformu

#1. Co rozumíte pod pojmem Terraform?

Terraform je open-source nástroj IaC, který byl vytvořen společností HashiCorp. Slouží k vytváření, aktualizaci, odstraňování a verzování vaší infrastruktury na různých cloudových platformách.

#2. Jaké jsou výhody použití Terraformu pro DevOps?

Použití Terraformu pro zřizování infrastruktury minimalizuje lidské chyby, což vede ke zlepšení kvality, konzistence a efektivity cloudové i vlastní infrastruktury. Terraform využívá jazyk HCL, který se podobá JSONu a je snadno pochopitelný. Na rozdíl od jiných IaC nástrojů nabízených poskytovateli cloudu, jako je Cloudformation pro AWS, lze Terraform použít s různými cloudovými platformami současně. Tím se vyhnete nutnosti učit se více nástrojům IaC a zlepší se možnosti spolupráce.

#3. Jak Terraform funguje?

Terraform využívá pluginy, nazývané poskytovatelé Terraformu, k interakci s API cloudových platforem a zřizování zdrojů. Z pohledu koncového uživatele má Terraform pracovní postup, který sestává ze tří kroků:

Napsání kódu: Definování infrastruktury jako kódu.

Plánování: Náhled změn, které Terraform provede před aplikací.

Aplikování: Zřízení infrastruktury a aplikování změn.

#4. Co je Terraform Cloud?

Terraform Cloud je vzdálené prostředí, které je optimalizované pro pracovní postup Terraformu. Nabízí funkce, jako jsou pracovní prostory a uzamčení stavu, což umožňuje spolupráci ve velkých týmech.

#5. Co je stav (state) v Terraformu?

Jako nástroj IaC musí Terraform znát aktuální stav konfigurací a infrastruktury, kterou spravuje. Tyto informace Terraform ukládá do souboru, který se nazývá stavový soubor.

#6. Jaké jsou výhody stavového souboru v Terraformu?

Stavový soubor umožňuje Terraformu mapovat reálné zdroje na konfiguraci, sledovat metadata a zlepšovat výkon při plánování změn pro komplexní infrastruktury. Je to zásadní komponenta Terraformu.

#7. Co je Terraform Backend?

Backend v Terraformu je platforma, kde jsou ukládány snímky stavu Terraformu. Ve výchozím nastavení Terraform využívá backend nazvaný „local“ pro ukládání stavu jako lokálního souboru na disk. Ostatní podporované backendy jsou nějakou formou vzdáleného úložiště.

#8. Co je poskytovatel (provider) v Terraformu?

Poskytovatelé v Terraformu jsou pluginy, které umožňují Terraformu komunikovat s poskytovateli cloudu, poskytovateli SaaS a dalšími API. Pokud například chcete použít Terraform pro zřízení infrastruktury v AWS, musíte v konfiguračních souborech deklarovat poskytovatele AWS.

#9. Kdo udržuje poskytovatele Terraformu?

Poskytovatelé jsou distribuováni odděleně od samotného Terraformu. Uživatel Terraformu si může vyvinout své vlastní poskytovatele. Některé standardní poskytovatele udržuje přímo společnost HashiCorp.

#10. Co je Sentinel?

Sentinel je nástroj pro definování zásad jako kódu, který se používá k vynucení standardních konfigurací pro zdroje nasazené Terraformem. Organizace ho mohou využít pro dodržování předpisů a kontrolu.

#11. Co jsou moduly v Terraformu?

Modul Terraform je kontejner pro seskupení zdrojů, které se používají společně pro zřizování a konfiguraci. Můžete například vytvořit „modul VPC“ pro vaši organizaci, který zřídí standardní VPC a další zdroje, jako jsou podsítě a internetové brány. Moduly lze sdílet veřejně prostřednictvím registru veřejných modulů nebo soukromě prostřednictvím registru soukromých modulů.

#12. Jaké jsou výhody používání modulů v Terraformu?

Moduly v Terraformu umožňují vytvářet logickou abstrakci nad sadou zdrojů. Použití modulů umožňuje udržovat a opakovaně využívat standardní konfiguraci zdrojů. Moduly lze verzovat a sdílet s členy týmu, což umožňuje zřizování zdrojů standardizovaným způsobem.

#13. Co je registr soukromých modulů?

Funkce registru soukromých modulů v Terraform Cloudu umožňuje sdílet moduly Terraformu v rámci organizace.

Pokročilé otázky a odpovědi pro pohovory o Terraformu

#14. Jak můžeme exportovat data z jednoho modulu do druhého?

Data z jednoho modulu můžeme exportovat pomocí definování výstupních bloků v konfiguračních souborech modulu. Tato data lze následně použít jako parametr v cílovém modulu.

#15. Jak se v Terraformu definují závislosti?

Terraform má vestavěnou správu závislostí. Mezi zdroji rozlišujeme dva typy závislostí – implicitní a explicitní.

Implicitní závislosti Terraform detekuje automaticky. Dochází k nim, když je výstup „zdroje A“ použit ve „zdroji B“. Terraform pak automaticky detekuje, že „zdroj B“ je třeba vytvořit až po „zdroji A“.

Explicitní závislosti se zadávají v případech, kdy jsou dva zdroje na sobě interně závislé, aniž by sdílely jakékoli výstupy. To se provádí pomocí parametru `depend_on` v konfiguračním bloku.

#16. Co jsou provisioners v Terraformu?

Provisioners jsou prostředky Terraformu, které se používají ke spouštění skriptů během vytváření nebo odstraňování zdrojů. V Terraformu existují dva hlavní typy provisioners:

  • `local-exec`: Spustí skript na počítači, kde běží Terraform.
  • `remote-exec`: Spustí skript na vzdáleném zdroji po jeho vytvoření.

Provisioners by se v Terraformu měli používat pouze v krajním případě.

#17. Co je externí datový blok v Terraformu?

Podobně jako provisioner `local-exec` se i externí datový blok používá ke spouštění skriptů na počítači, kde běží Terraform. Rozdíl je v tom, že skripty v externím datovém bloku mohou vracet data ve formátu JSON, zatímco provisioners žádný výstup nevrací. Externí datové bloky by se také měly používat pouze v krajním případě, pokud není k dispozici lepší alternativa.

#18. Jak mohou dva uživatelé používající Terraform Cloud vytvořit dvě různé sady infrastruktury pomocí stejného pracovního adresáře?

Pomocí různých pracovních prostorů. Tito uživatelé mohou spouštět běhy Terraformu ve dvou oddělených pracovních prostorech. Každý pracovní prostor má svůj vlastní stavový soubor, takže pokud se zdroje nepřekrývají, mohou oba uživatelé úspěšně zřizovat dvě různé sady infrastruktury s použitím stejného kódu.

#19. Co se stane, když více inženýrů začne nasazovat infrastrukturu pomocí stejného stavového souboru?

Terraform má funkci „uzamčení stavu“. Tato funkce zajišťuje, že během běhu nebudou provedeny žádné změny ve stavovém souboru, čímž se zabrání poškození stavového souboru. Je důležité si uvědomit, že ne všechny backendy Terraformu podporují funkci uzamčení stavu. Pokud je tato funkce vyžadována, je nutné vybrat vhodný backend.

#20. Co je nulový zdroj (null resource) v Terraformu?

Nulový zdroj v Terraformu je konfigurace, která funguje jako standardní zdroj Terraformu, ale nevytváří žádné zdroje. I když se může zdát jako zbytečný, může být užitečný v různých situacích, kdy je potřeba obejít omezení Terraformu.

#21. Jak lze v Terraformu používat stejného poskytovatele s různými konfiguracemi?

Pomocí argumentu `alias` v bloku poskytovatele.

#22. Máte konfigurační soubor Terraformu bez zdrojů. Co se stane po spuštění příkazu `terraform apply`?

Terraform zničí všechny zdroje. Spuštění příkazu `terraform apply` s prázdnou konfigurací je stejné, jako spuštění příkazu pro zničení (destroy).

#23. Co se stane, když se zdroj úspěšně vytvoří, ale následné zřizování selže?

Tento scénář není příliš pravděpodobný, ale pokud k němu dojde, je zdroj označen jako „poskvrněný“ (tainted) a je možné ho znovu vytvořit spuštěním dalšího běhu Terraformu.

#24. Která hodnota proměnné `TF_LOG` poskytuje nejpodrobnější protokolování?

`TRACE` je nejpodrobnější hodnota proměnné `TF_LOG` a je také výchozí hodnotou.

#25. Jak lze importovat existující zdroje pod správu Terraformu?

Pomocí příkazu `terraform import`.

#26. Který příkaz se používá pro náhled plánu provádění Terraformu?

Příkaz `terraform plan` vygeneruje plán provádění změn, které Terraform provede v infrastruktuře.

#27. Který příkaz slouží k synchronizaci stavu Terraformu s reálnou infrastrukturou?

Příkaz `terraform apply -refresh-only` slouží k synchronizaci stavu Terraformu s reálnou infrastrukturou. Jedná se o novou alternativu k příkazu `terraform refresh`, který je nyní zastaralý.

#28. Který příkaz se používá k přepínání mezi pracovními prostory v Terraform Cloudu?

Příkaz `terraform workspace select ` se používá k výběru jiného pracovního prostoru.

#29. Který příkaz se používá k ověření syntaxe konfiguračních souborů Terraformu?

Příkaz `terraform validate` se používá k ověření, zda je konfigurace syntakticky platná a vnitřně konzistentní.

#30. Který příkaz se používá pro vytváření nových pracovních prostorů v Terraform Cloudu?

Příkaz `terraform workspace new ` se používá k vytvoření nového pracovního prostoru.

Další důležité příkazy Terraformu pro technické pohovory

  • `terraform init`: Inicializuje vzdálené backendy; stáhne poskytovatele a vzdálené moduly definované v konfiguraci.
  • `terraform init -upgrade`: Používá se k aktualizaci stávajících stažených poskytovatelů.
  • `terraform plan`: Vygeneruje plán provádění pro vytvoření nebo aktualizaci infrastruktury.
  • `terraform apply`: Vytvoří nebo aktualizuje infrastrukturu po vyžádání potvrzení od uživatele.
  • `terraform apply -auto-approve`: Vytvoří nebo aktualizuje infrastrukturu; fáze schvalování uživatelem se přeskočí.
  • `terraform destroy`: Odstraní infrastrukturu po vyžádání potvrzení od uživatele.
  • `terraform destroy -auto-approve`: Odstraní infrastrukturu; fáze schvalování uživatelem se přeskočí.
  • `terraform fmt`: Vyhledá v aktuálním adresáři konfigurační soubory a naformátuje je podle kanonického stylu a formátu HCP.
  • `terraform fmt -recursive`: Prohledá aktuální adresář i podadresáře pro konfigurační soubory a naformátuje je podle kanonického stylu a formátu HCP.
  • `terraform show`: Poskytuje čitelný výstup ze souboru stavu nebo plánu.

Doufám, že vám tyto informace pomohou získat práci v oblasti Terraformu.