GNU/Linux >> Znalost Linux >  >> Linux

Terraform vs Ansible:Jaký je rozdíl a který byste měli použít?

Způsob, jakým DevOps jako kultura nabírá na síle, nástroje jako Ansible a Terraform jsou svědky obrovské poptávky a popularity.

Oba nástroje jsou považovány za Infrastructure as Code (IaC) řešení, která pomáhají při nasazování kódu a infrastruktury. Zatímco Ansible funguje jako řešení pro správu konfigurace běžně označované jako „CM“, Terraform je nástroj pro orchestraci nebo poskytování služeb.

Všimněte si, že dochází k překrývání a tyto termíny se nemusí nutně vzájemně vylučovat. To je to, co lidi mate, a proto srovnám Ansible a Terraform.

Vysvětlím, k čemu tyto nástroje slouží, jaké jsou jejich klady a zápory. To vám pomůže rozhodnout se, zda byste měli ve svých projektech používat Ansible nebo Terraform.

Ansible a Terraform:Co jsou tyto nástroje?

Pojďme se nejprve krátce podívat na to, jaké jsou tyto oblíbené nástroje DevOps.

Co je Ansible?

Ansible je nástroj pro automatizaci IT. Dokáže konfigurovat systémy, nasazovat software a provádět pokročilejší úlohy IT, jako je průběžné nasazování nebo průběžné aktualizace s nulovými prostoji.

Co je Terraform?

Terraform je nástroj pro bezpečné a efektivní vytváření, změny a verzování infrastruktury. Terraform může spravovat stávající a oblíbené poskytovatele služeb i vlastní interní řešení.

Než zdůrazníme rozdíly mezi těmito dvěma nástroji, nejprve porozumíme tomu, co je Configuration Management a Orchestration.

Správa konfigurace vs. Orchestration

Správa konfigurace je soubor procesů a procedur, které zajistí, že bude vždy splněn požadovaný a konzistentní stav vaší infrastruktury, která zahrnuje servery a software. Jinými slovy, je to způsob, jak zajistit, aby systém fungoval tak, jak se od něj očekává, když se v průběhu času provádějí změny.

Nástroje CM zajišťují, že nasazení IT bude rychlejší, přírůstkové, opakovatelné, škálovatelné, předvídatelné a udrží požadovaný stav, což přivede spravovaná aktiva do očekávaného stavu.

Nástroje jako Ansible se používají pro správu konfigurace.

Pokud jde o orchestraci, můžete nástroje pro orchestraci použít nejen k poskytování serverů, ale také databází, mezipaměti, vyrovnávačů zatížení, front, monitorování, konfigurace podsítě, nastavení brány firewall, pravidel směrování, certifikátů SSL a téměř všech ostatních aspektů vaší infrastruktury. , především veřejnou cloudovou infrastrukturu.

Terraform je nástroj pro orchestraci. Je navržen tak, aby zajišťoval samotné instance serveru a ponechal práci s konfigurací těchto serverů jiným nástrojům.

Procedurální vs. deklarativní jazyk

Nástroje DevOps lze kategorizovat jako procedurální nebo deklarativní podle toho, jak při použití provádějí své akce.

Procedurální popisuje aplikaci, která vyžaduje, aby byly v kódu uvedeny přesné kroky, zatímco deklarativní „deklaruje“ přesně to, co je potřeba, nikoli proces, kterým je dosaženo výsledku.

Ansible používá procedurální styl, ve kterém píšete kód, který specifikuje úlohy krok za krokem, abyste dosáhli požadovaného konečného stavu.

Zatímco nástroje jako Terraform, AWS CloudFormation jsou všechny deklarativní při definování procesu, kdy píšete kód, který specifikuje požadovaný koncový stav. Pokud byste například potřebovali 5 instancí EC2, přesně tolik byste jich měli po provedení kódu.

Ansible a Terraform:Porovnání

Podívejme se, jaké jsou výhody a nevýhody používání Terraform:

Výhody Terraform

  • Terraform spravuje celou cloudovou infrastrukturu a zpřístupňuje tyto zdroje jako kód. Díky tomu je proces postupné změny velmi snadný.
  • Modulární design.
  • Jednoduché a snadno naučitelné
  • Udržuje stav vytvořených zdrojů. Všechny objekty vytvořené Terraformem budou znovu vytvořeny, pokud budou odstraněny jakýmkoli jiným procesem.
  • Bezproblémová integrace s kanály CI/CD.
  • Umožňuje import existujících zdrojů a jejich uvedení do stavu Terraform.
  • Když spustíte terraform plan , ukazuje změny, které se chystají použít na zdroje, které již existují. Inženýři DevOps tak získají přehled o změnách, které se chystají provést, zejména pokud změny nejsou podle očekávání.

Nevýhody Terraformu

  • Žádná vrácení zpět. Musíte vše zničit a je vyžadováno opětovné spuštění skriptu tf.
  • Zpracování chyb není zralé. Od Terraform v.12.20 pro spotřebitele jsou k dispozici dvě nové funkce try() a can() .
  • Vytváření skriptů Terraform není povoleno přímo ze stavových souborů.
  • Nástroj Terraform je stále ve vývoji a každý měsíc prochází mnoha beta verzemi.
  • Ne každou položku lze importovat. terrafom import příkaz může importovat pouze jeden zdroj najednou. To znamená, že zatím nemůžete nasměrovat import Terraform na celou sbírku zdrojů, jako je AWS VPC, a importovat je všechny.

Pro a proti používání Ansible

Nyní se pojďme podívat na pozitiva a negativa Ansible.

Výhody Ansible

  • Jednoduché a snadno naučitelné
  • Bez agenta
  • Zajistěte, aby byl celý proces nasazení automatizován a byl přátelský pro vývojáře
  • Jednoduché a čitelné skripty založené na YAML (Ansible Playbooks)
  • Obrovská podpora modulů
  • Dostupnost centrálního úložiště zvaného Ansible galaxy pro nalezení a opětovné použití obsahu Ansible.

Nevýhody Ansible

  • Chybí nabídka uživatelského rozhraní. AWX, který se nakonec vyvinul v Ansible tower, má stále obrovský prostor pro zlepšení.
  • Žádná státní údržba. Ansible nesleduje závislosti. Pouze provádí sekvenční řadu úkolů, zastaví se, když skončí, selže nebo narazí na chybu.
  • Nedosahuje úrovně, pokud jde o podporu operačního systému Windows. Ansible je stále v raných fázích rozšíření podpory pro Windows.
  • Není to tak jednoduché, pokud musíte v učebnicích psát složité skripty s rozsáhlou logikou.
  • Podpora podniků ještě není vyzrálá/spolehlivá.
  • Chybí popisné chybové zprávy, pokud jde o ladění složitých příruček.

Terraform nebo Ansible? Který je pro vás lepší?

Věřte, že odpověď na tuto otázku není jednoduchá. Protože to do značné míry závisí na vašich požadavcích.

V reálném světě v IT organizacích se nikdy nespoléháte na jeden nástroj, místo toho používáte kombinaci různých nástrojů k dosažení požadovaných výsledků.

Nástroje Ansible i Terraform umí spoustu věcí docela dobře. A moje osobní preference je používat Terraform pro orchestraci/provisioning a Ansible pro správu konfigurace.

Terraform při použití pro orchestraci infrastruktury (správa cloudových zdrojů) podává své nejlepší schopnosti, protože k tomu byl vytvořen.

Na druhou stranu Ansible se nejlépe hodí a optimalizuje pro úlohy správy konfigurace (poskytování softwaru a strojů). Lze s ním také provádět úkoly orchestru, ale to je jen část toho, co dělá.

Můj návrh – použijte to, co je nejlepší a původně vytvořené pro úkol, který chcete provést.

Ale ani to není pravidlem, protože se můžete setkat s lidmi, kteří dávají přednost použití jednoho nástroje na všechno a ten jim funguje!

Závěr

Oba nástroje mají své výhody i omezení při navrhování infrastruktury jako prostředí kódu pro automatizaci. A ano, úspěch zcela závisí na tom, jaké nástroje použít pro které úlohy.

Doufám, že jsem vám pár věcí kolem Ansible a Terraform objasnil. Pokud máte další dotazy nebo návrhy, napište mi prosím do sekce komentářů.


Linux
  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Vysvětlení typů souborových systémů Linux, který byste měli použít

  3. Proč by člověk měl používat sudo?

  1. Co je to jádro Linuxu a měli byste upgradovat na nejnovější jádro?

  2. Distribuovaná databáze NoSQL Elasticsearch – co to je a měli byste ji používat?

  3. Jaký je rozdíl mezi ls a l?

  1. Ubuntu nebo Fedora:Který byste měli používat a proč

  2. Manjaro vs Arch Linux:Jaký je rozdíl? Který je lepší?

  3. Jaký je rozdíl mezi unlink a rm?