Porozumění nástrojům DevOps: Ansible a Terraform

Nástroje Ansible a Terraform – slyšeli jste o nich v kontextu DevOps? Tento článek se zaměřuje na tyto dva nástroje a jejich vzájemné odlišnosti.

Infrastruktura jako kód (Infrastructure as Code – IaC) představuje klíčový prvek v oblasti DevOps a je nezbytnou dovedností pro inženýry pracující v této sféře. IaC umožňuje zřizování a správu IT infrastruktury prostřednictvím konfiguračního kódu, který má podobu strojově čitelných definičních souborů. S tímto softwarově inženýrským přístupem k operacím je možné automatizovat IT infrastrukturu pomocí programovacích skriptů.

V diskusích o automatizaci v DevOps se často objevují dva nástroje – Terraform a Ansible. Oba patří mezi nejlépe hodnocené a nejvíce používané nástroje v oblasti DevOps. Nicméně, pro ty, kdo s těmito nástroji teprve začínají, může být obtížné rozlišit mezi jejich hlavními rozdíly. V následujících odstavcích se zaměříme na podrobnější popis nástrojů Terraform a Ansible a zdůrazníme jejich klíčové rozdíly.

Co je to Terraform?

Terraform je open-source nástroj pro správu infrastruktury jako kódu, vytvořený společností HashiCorp. S pomocí deklarativního jazyka, který je v Terraformu snadno použitelný, je možné orchestrovat celou IT infrastrukturu. V Terraformu definujete a konfigurujete potřebné zdroje pro danou infrastrukturu. Následně se nástroj postará o všechny potřebné závislosti a vybuduje infrastrukturu za vás.

Terraform byl uveden na trh relativně nedávno, v roce 2014, ale jeho adopce byla obrovská. Nabízí rozsáhlé funkce, které usnadňují orchestraci IT infrastruktury, zejména vzhledem ke komplexnosti konfigurace celé infrastruktury ve velkých organizacích. Tento nástroj je také integrovatelný s mnoha populárními poskytovateli cloudových služeb, jako jsou AWS, GCP a další.

Většina IT organizací má rozdílná pracovní prostředí pro jednotlivé týmy, takže vývojové, testovací, QA a produkční týmy mají svá oddělená prostředí. Správa produkčního prostředí se s časem stává náročnější. Pro usnadnění této správy používají organizace Terraform ke kodifikaci všeho, co se nachází v produkčním prostředí. S pomocí Terraformu je možné rychle zřídit vývojová a testovací prostředí, která budou velmi podobná produkčnímu prostředí. To napomáhá vývoji a testování aplikací na platformě, která je obdobná produkčnímu prostředí.

Mnoho významných společností, jako jsou Starbucks, Slack a Uber, využívá funkce Terraformu v rozsáhlém měřítku.

Následují některé z výhod Terraformu:

  • Umožňuje správu služeb pomocí jednoduchého uživatelského rozhraní.
  • Poskytuje popis infrastruktury pro GCP, AWS, Azure a další pomocí jednoduchého (deklarativního) jazyka.
  • Podporuje řízení přístupu na základě rolí (RBAC) pro zvýšení bezpečnosti.
  • Lze jej snadno propojit s OpenStack, Azure, AWS, GCP pomocí jejich API.
  • Využívá masterless architekturu, což eliminuje potřebu hlavního uzlu pro sledování všech aktualizací konfigurace.
  • Umožňuje týmům v rámci organizace snadno spolupracovat na infrastruktuře díky registru Terraform.
  • Usnadňuje integraci s platformami pro kontinuální integraci, jako jsou GitLab, Jenkins a Travis, pro implementaci DevOps pipeline.

Co je to Ansible?

Ansible je nástroj pro správu konfigurace, který se používá v oblasti DevOps pro automatizaci různých IT úloh. Jedná se o open-source nástroj, který využívá deklarativní i procedurální jazyky pro správu konfigurací. Ansible má dobrou podporu od většiny populárních poskytovatelů cloudových služeb a umožňuje automatizaci aplikací, sítí, infrastruktury, zabezpečení, kontejnerů atd. Značně snižuje složitost procesů DevOps, což vede k tomu, že mnoho DevOps inženýrů dává přednost používání tohoto nástroje.

Ansible dokáže snadno automatizovat i velmi komplexní infrastruktury pomocí jednoduchých konfiguračních souborů YAML (které jsou čitelné pro člověka). Pro správu konfigurací využívá soubory kódu v jazyce YAML, které se nazývají Ansible Playbooks. Ansible je bezagentový a má master, který předává konfigurace nutné pro správu a aktualizaci aplikací na vzdálených serverech.

V Ansible se pro připojení k uzlům v IT infrastruktuře používá SSH. Jakmile je spojení s uzlem navázáno, Ansible pomocí Ansible modulů předá nejnovější konfigurace k instalaci, aktualizaci nebo odebrání aplikace. Ansible také umožňuje spouštět ad-hoc příkazy pro rychlé provedení menších úloh.

Následují některé z výhod a vlastností Ansible:

  • Ansible je bezagentový, proto není nutné na uzlech instalovat a spouštět agenty pro provádění úloh.
  • Ansible je postaven na jazyce Python a má k dispozici rozsáhlou knihovnu v Pythonu, díky čemuž je velmi přívětivý k vývojářům.
  • Poskytuje bezpečné ověřování pomocí SSH.
  • Ansible Tower nabízí vizualizační funkce na podnikové úrovni.
  • Hlavní server odesílá nejnovější konfigurace na vzdálené servery, čímž je zajištěn model založený na push.
  • Pro správu konfigurací se používají soubory YAML, které jsou čitelné pro člověka, což eliminuje potřebu dalších znalostí kódování.

Terraform vs. Ansible: Rozdíly

Orchestrace vs. Správa konfigurace

Ansible je nástroj pro správu konfigurace, zatímco Terraform je nástroj pro orchestraci. Toto je zásadní rozdíl mezi těmito dvěma nástroji. I když se některé funkce v obou nástrojích překrývají, jejich hlavní zaměření se liší.

Ansible se používá k přidávání, aktualizaci, odstraňování a správě konfigurace IT infrastruktury, zatímco Terraform se používá k deklarování a organizování komponent infrastruktury v rámci různých poskytovatelů cloudu.

Procedurální vs. Deklarativní

Terraform používá deklarativní konfigurační jazyk pro definici zdrojů IT infrastruktury. Ansible pro správu konfigurací používá jak procedurální, tak deklarativní jazyky. Procedurální přístup se v Ansible používá ke spouštění ad-hoc příkazů a dosažení požadované konfigurace infrastruktury. Moduly Ansible používají deklarativní přístup.

Proměnlivá vs. Neměnná infrastruktura

S pomocí Ansible můžete vytvářet proměnlivou infrastrukturu, zatímco s Terraformem neměnnou infrastrukturu. Ansible spravuje a konfiguruje software infrastruktury na stejném serveru. S každou další aktualizací konfigurace se produkční prostředí stává komplexnějším, což může vést k chybám, které je obtížné identifikovat a opravit.

Terraform pro každé nasazení na server primárně používá novou image Dockeru. Pro aktualizaci jakéhokoli softwaru v infrastruktuře vytvoří Terraform novou image Dockeru, nasadí ji na všechny servery a odstraní starou image konfiguračního Dockeru. Díky tomu zůstává prostředí stabilní i po několika aktualizacích konfigurace.

Master vs. Masterless

Ansible má architekturu s hlavním serverem, který je zodpovědný za ukládání celkového stavu infrastruktury a odesílání nových aktualizací konfigurace na vzdálené servery. Z toho důvodu se v Ansible používá model nasazení založený na push.

V Terraformu žádný samostatný hlavní systém neexistuje. Při spolupráci s poskytovateli cloudu, jako jsou GCP a AWS, je však hlavním serverem v tomto případě API server.

Komunita

V porovnání s Terraformem má Ansible silnější komunitu. Například Ansible má na GitHubu 45 větví, 49,7 tisíc hvězdiček, 51 836 commitů a 21 tisíc forků, zatímco Terraform má 183 větví, 28,7 tisíc hvězdiček, 28 778 commitů a 6,9 tisíc forků. Nicméně komunity obou nástrojů se v současné době rychle rozrůstají.

Který nástroj vybrat, Ansible nebo Terraform?

Nelze jednoznačně říct, který nástroj je lepší, protože záleží na konkrétních požadavcích. Můžete použít Ansible pro správu konfigurace a Terraform pro orchestraci IT infrastruktury. Pokud vaše organizace využívá služby poskytovatelů cloudu, pak je spolupráce s Terraformem vhodnější. Oba nástroje mají svá omezení a výhody a oba jsou populární v oblasti DevOps. Výběr jednoho z nástrojů závisí na problému, který se snažíte vyřešit.

Následující srovnávací tabulka shrnuje rozdíly mezi Ansible a Terraform:

Kritérium Ansible Terraform
Založeno 2012 2014
Vyvinuto Ansible Inc. / Red Hat Inc. HashiCorp
Napsáno v Python Go
Typ Nástroj pro správu konfigurace Orchestrační nástroj
Jazyk Používá procedurální a deklarativní jazyky Používá deklarativní jazyk
Infrastruktura Podporuje proměnlivou infrastrukturu Podporuje neměnnou infrastrukturu
Správa životního cyklu Ne Ano
Balení a šablonování Plně podporováno Částečně
Zřizování virtuálních počítačů a vytváření sítí Částečně Plně podporováno

Komunita a podpora

49 tisíc hvězdiček +
28 tisíc hvězdiček

Závěr 👩‍💻

To je vše o Ansible, Terraformu a jejich rozdílech. Oba nástroje pro DevOps jsou široce používány v produkčních prostředích a často se nacházejí ve většině větších organizací. Tak na co čekáte? Vyberte si nástroj, který nejlépe vyhovuje vašim obchodním potřebám. Můžete začít tím, že se naučíte jeden z nástrojů, ale znalost obou vám dává výhodu v různých situacích.

Mohlo by vás zajímat:

Nejlepší repozitář hostingu balíčků pro vaše projekty DevOps.