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.