Ansible a Terraform – slyšeli jste o těchto nástrojích DevOps? Tento článek je o nich a jejich rozdílech.
Infrastructure as Code (IaC) je základní součástí domény DevOps a je základní dovedností, kterou musí mít inženýři DevOps. IaC se používá k poskytování a správě IT infrastruktury pomocí konfiguračního kódu, což jsou strojově čitelné definiční soubory. Pomocí tohoto přístupu softwarového inženýrství k operacím můžete automatizovat IT infrastrukturu pomocí programovacích skriptů.
Když technik DevOps přemýšlí o automatizaci pomocí kódu v DevOps, vždy se zvýrazní dva nástroje DevOps, Terraform a Ansible. Oba jsou nejlépe hodnocené a široce používané nástroje v doméně DevOps. Ale mnoho lidí je s těmito nástroji nových a nezná hlavní rozdíly mezi nimi. V tomto článku proberu Terraform, Ansible a jejich klíčové rozdíly.
Table of Contents
Co je Terraform?
Terraform je open-source infrastruktura jako softwarový nástroj pro kód vytvořený společností HashiCorp. Můžete zorganizovat kompletní IT infrastrukturu pomocí velmi snadno použitelného deklarativního jazyka v Terraformu. V Terraformu musíte deklarovat a nakonfigurovat potřebné zdroje pro infrastrukturu. Poté se postará o všechny požadované závislosti a vybuduje infrastrukturu za vás.
Terraform byl spuštěn teprve před několika lety, v roce 2014, ale míra přijetí tohoto nástroje byla fantastická. Nabízí vynikající funkce, které usnadňují kompletní orchestraci IT infra, protože konfigurace celé infrastruktury ve velké organizaci je složitá. Tento nástroj můžete také integrovat se všemi oblíbenými poskytovateli cloudu, jako jsou AWS, GCP atd.
Většina IT organizací má různá pracovní prostředí pro různé týmy, takže vývojové, přípravné nebo QA a produkční týmy budou mít svá samostatná prostředí. Po nějaké době není snadné spravovat produkční prostředí. Pro usnadnění správy používají organizace Terraform ke kodifikaci všeho v produkčním prostředí. Pomocí terraformu můžete velmi rychle roztočit vývojářská a stagingová prostředí, která budou velmi podobná produkčnímu prostředí. To pomáhá při vývoji a testování aplikace na podobné platformě jako produkce.
Mnoho velkých organizací, jako je Starbucks, Slack, Uber atd., využívá funkce terraform ve velkém.
Zde jsou některé výhody Terraformu:
- Spravuje služby pomocí jednoduchého GUI.
- Popisuje infrastrukturu pro GCP, AWS, Azure a další pomocí jednoduchého jazyka (deklarativní).
- Podporuje řízení přístupu na základě rolí (RBAC) pro zabezpečení.
- Lze jej snadno zřídit s OpenStack, Azure, AWS, GCP pomocí jejich API
- Využívá architekturu masterless, takže neexistuje žádný hlavní uzel pro sledování všech aktualizací konfigurace.
- Týmy v rámci organizace mohou snadno spolupracovat na infrastruktuře pomocí registru terraform.
- Integrace s kontinuálními integračními platformami, jako jsou GitLab, Jenkins, Travis, pro nasazení kanálů DevOps je snadná.
Co je Ansible?
Ansible je nástroj pro správu konfigurace v doméně DevOps, který se používá k automatizaci všech úloh IT. Ansible je také open-source nástroj, který pro správu konfigurace používá deklarativní i procedurální jazyky. Tento nástroj má vynikající podporu od všech populárních poskytovatelů cloudu a automatizuje aplikace, sítě, infrastrukturu, zabezpečení, kontejnery atd. Výrazně snižuje složitost procesů DevOps, takže mnoho inženýrů DevOps raději používá tento nástroj.
Ansible snadno automatizuje nejsložitější infrastrukturu pomocí jednoduchých konfiguračních souborů YAML (čitelných pro lidi). K provádění správy konfigurace používá soubor kódu napsaný v YAML; tento soubor kódu se nazývá Ansible Playbook. Ansible je bez agenta a má master, který přenáší všechny konfigurace potřebné pro správu a aktualizaci aplikací na vzdálených serverech.
V Ansible musíte použít SSH pro připojení k uzlům v IT infrastruktuře. Jakmile je spojení s uzlem úspěšné, Ansible předá nejnovější konfigurace pomocí modulů Ansible k instalaci nebo aktualizaci nebo odebrání aplikace. Máte také možnosti spouštět ad-hoc příkazy v Ansible pro rychlé provádění malých úloh.
Zde jsou některé výhody a vlastnosti Ansible:
- Vzhledem k tomu, že Ansible je bez agentů, nemusíte k provádění úloh instalovat a spouštět agenty na uzlech.
- Protože byl Ansible postaven na Pythonu, má v Pythonu k dispozici nepřeberné množství knihoven, a proto je velmi přátelský pro vývojáře.
- Poskytuje bezpečné ověřování pomocí SSH.
- Ansible Tower poskytuje funkce vizualizace na podnikové úrovni.
- Hlavní server odesílá nejnovější konfigurace na vzdálené servery, aby provedl změny v infrastruktuře, takže podporuje model založený na push.
- Pro správu konfigurace používá soubory YAML čitelné pro člověka, takže nejsou vyžadovány žádné další znalosti kódování.
Terraform vs. Ansible: Rozdíly
Orchestrace vs. Configuration Management
Ansible je nástroj pro správu konfigurace a Terraform je nástroj pro orchestraci. To je nejzásadnější rozdíl mezi Terraformem a Ansiblem. Přestože některé funkce jsou mezi těmito nástroji společné, stále se od sebe 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í komponent infrastruktury a jejich organizování napříč více poskytovateli cloudu.
Procedurální vs deklarativní
Terraform používá deklarativní konfigurační jazyk k deklaraci zdrojů IT infrastruktury. Ansible používá pro správu konfigurace procedurální i deklarativní jazyky. Procedurální způsob se v Ansible používá ke spouštění ad-hoc příkazů a dosažení požadované konfigurace infrastruktury. Ansible moduly používají deklarativní přístup.
Proměnná vs. Neměnná infrastruktura
Můžete vytvořit proměnlivou infrastrukturu pomocí Ansible a neměnnou infrastrukturu pomocí Terraform. Ansible spravuje a konfiguruje software infrastruktury na stejném serveru. Když budete tlačit další aktualizace konfigurace, produkční prostředí se stane komplexním a vede k mnoha chybám, které je obtížné identifikovat a opravit.
Terraform primárně používá čerstvý obraz Docker pro jakékoli nasazení na serveru. Terraform vytvoří novou bitovou kopii dockeru pro aktualizaci jakéhokoli softwaru v infrastruktuře, nasadí tuto bitovou kopii na všechny servery a odstraní starou bitovou kopii konfiguračního dockeru. Takže i po několika aktualizacích konfigurace zůstává prostředí stabilní.
Master vs. Masterless
Ansible má architekturu hlavního stroje, která je zodpovědná za ukládání kompletního stavu infrastruktury a zasílání nových aktualizací konfigurace na vzdálené servery. Proto se v ansible nazývá push-based model nasazení.
V Terraformu neexistuje samostatný hlavní systém. Když však spolupracuje s poskytovateli cloudu, jako je GCP, AWS prostřednictvím rozhraní API, server API je v tomto případě hlavním strojem.
Společenství
Ve srovnání s tím je komunita Ansible silnější než Terraform. Například Ansible má na GitHubu 45 větví, 49,7 000 hvězd, 51 836 potvrzení a 21 000 forků, zatímco Terraform má 183 větví, 28,7 000 hvězd, 28 778 commitů a 6,9 000 forků. V současné době komunita obou nástrojů rychle roste.
Který si vybrat, Ansible nebo Terraform?
Řekl bych, že to není srovnání jablko s jablkem. Odpověď na tuto otázku závisí na obchodních požadavcích. Můžete použít Ansible pro správu konfigurace a přidat Terraform k orchestraci IT infrastruktury. Pokud vaše organizace spolupracuje s poskytovateli cloudu, lepší volbou by byla spolupráce s Terraformem. Oba nástroje mají svá omezení a výhody a oba jsou oblíbenými nástroji v doméně DevOps. Takže v závislosti na problému, který se snažíte vyřešit, si můžete vybrat kterýkoli z nástrojů.
Zde je srovnávací tabulka, která shrnuje rozdíly mezi Ansible a Terraform.
Kritéria
Ansible
Terraform
Založeno dne
2012
2014
Vyvinuto
Ansible Inc. / Red Hat Inc.
HashiCorp
Zapsáno v
Krajta
Jít
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ý
Poskytování virtuálních počítačů a vytváření sítí
Částečný
Plně podporováno
Komunita a podpora
49 tisíc hvězd +
28 tisíc hvězd
Závěr 👩💻
To bylo vše o Ansible, Terraformu a jejich rozdílech. Oba nástroje DevOps jsou velmi používané v produkčních prostředích a jsou často přítomny ve většině větších organizací. Tak na co čekáš? Pokračujte a vyberte si nástroj, který je vhodnější pro obchodní požadavky vaší organizace. Můžete začít tím, že se naučíte kterýkoli z nástrojů, ale znalost obou vám dává výhodu v různých odvětvích.
Může se vám líbit:
Nejlepší repozitář hostování balíčků pro vaše projekty DevOps.