Ansible je automatizační nástroj bez agentů napsaný v Pythonu. Připojuje se k vašim klientům přes SSH a umožňuje vám automatizovat nudné, opakující se úkoly, které nechcete dělat. Umožňuje vám vzít úkol vykonaný člověkem, jehož provedení může trvat hodinu, a převést ho do jediného příkazu, který se dokončí během několika minut. To zlepšuje váš výkon a umožňuje vám začít pracovat na dalším velkém projektu.
Výhody Ansible
Ansible nabízí mnoho výhod, pojďme si věnovat čas pohledu na ty nejdůležitější. Rozdělím to do sekcí, jednu pro ty, kteří nemají žádnou nebo jen minimální automatizaci, a druhou pro ty, kteří již používají automatizační nástroj, jako je Salt nebo Puppet.
Nováček v automatizaci
Pokud s automatizací začínáte, použití jednoduchého nástroje vám může pomoci s učeními. Pojďme se podívat na několik důvodů, proč byste si měli zvolit Ansible před ostatními dostupnými nástroji.
1. Jednoduchá syntaxe
Díky jednoduchému způsobu definování úloh v Ansible je velmi snadné s ním začít. Vezměte si například následující úryvek:
-
– hostitelé: všichni
úkoly:
– název: Instalace Nginxu
mňam:
název: nginx
stav: nejnovější
Kompletní úloha Ansible, ekvivalentní spuštění příkazu `yum install nginx` na všech vašich hostitelích.
Pravděpodobně už poznáte, co dělá. Instaluje nejnovější verzi webového serveru Nginx s otevřeným zdrojovým kódem na všechny vaše definované hostitele. Definování hostitelů se podíváme později. Protože všechny úlohy, které vytváříte, jsou v YAML, jsou snadno čitelné a snadno se vytvářejí. To je zásadní, když se začínáte učit používat nový nástroj, protože vám to umožní rychle získat zkušenosti a zároveň si vybudovat sebevědomí a porozumění.
2. Láska ke Gitu
Protože vaše automatizace jsou jednoduché textové soubory, je možné je uložit do Gitu (nebo jiného systému repozitářů zdrojového kódu), kde mají kontrolu změn a lze je z centrálního zdroje vyzvednout a aktualizovat.
3. Jednoduchý příkaz k provedení
Protože se úlohy provádějí v pořadí, které si definujete, nemusíte se starat o pořadí provádění. Jednoduše definujte kroky stejně jako pro člověka a Ansible je pokaždé provede přesně v tomto pořadí, aniž by se museli obávat, že nějaký krok vynecháte.
4. Bez agenta
Mít bezagentový způsob správy hostitelů je dvojnásob důležité, pokud ještě nemáte způsob, jak agenta nasadit automatizovaným způsobem. Pokus o spuštění automatizovaného nasazení v existujícím prostředí může být noční můrou, zvláště pokud existují desítky nebo stovky počítačů, které nového agenta potřebují.
Nadšenec do automatizace
Pokud jste již nějakou automatizaci provedli, třeba s využitím Bashu, Pythonu nebo Powershellu, možná vás zajímá, co Ansible přináší. Pojďme se na to podívat.
1. Jednoduchá orchestrace
Už jste někdy zkoušeli aktualizovat webovou stránku pomocí bash skriptu? Řekněme, že máte webový load balancer nebo reverzní proxy, 5 webových serverů, databázový load balancer a 2 databázové servery. Můžete strávit stovky řádků pouhou kontrolou, zda byla každá komponenta úspěšně aktualizována.
S Ansible můžete definovat kontroly stavu, průběžné aktualizace a nastavit vyvažovače zátěže tak, aby během každého kroku aktualizace odebíraly přidávané a odebírané uzly. Příklad naleznete v oficiální dokumentaci k průběžnému doručování a průběžným aktualizacím.
2. Idempotence
Idempotence je vlastnost určitých operací v matematice a informatice, díky které je lze použít vícekrát, aniž by se změnil výsledek nad rámec původní aplikace. - Wikipedie V podstatě je cílem spustit playbook jednou, abyste nastavili věci podle potřeby, a poté jej spouštět každých *X* hodin/dní/týdnů, abyste se ujistili, že se nic nezměnilo. Pokud se něco změní, měli byste hledat zdroj *konfiguračního driftu* ve vašem prostředí.
Konfigurační drifting je stav, kdy se servery v infrastruktuře s postupem času stále více liší. - Shadow Soft
3. Vestavěné úložiště tajných kódů
Vestavěné úložiště tajných kódů Ansible s názvem Ansible Vault umožňuje bezpečně ukládat citlivá data, jako jsou hesla, klíče API nebo dokonce soukromé klíče, spolu se zbytkem kódové základny ve správě zdrojového kódu. To je v Bashi nebo Pythonu nevídané a obvykle vyžaduje nástroje třetích stran, jako je například úložiště hesel s podporou API.
4. Rozšiřitelnost
Ansible lze snadno rozšířit pro moduly pro Windows i Linux a také pro komunikaci s nástroji třetích stran. To znamená, že pokud chcete něco automatizovat, je pravděpodobné, že již existuje komunitní modul, který můžete použít, nebo si můžete vytvořit či upravit stávající modul tak, aby vyhovoval vašim potřebám.
Informace o vývoji vlastních modulů naleznete v oficiální dokumentaci nebo se můžete podívat na Ansible Galaxy, kde najdete komunitní moduly.
Začínáme s Ansible
Instalace Ansible
Začít je stejně jednoduché jako instalace Ansible na vaši pracovní stanici nebo server. Ukážu vám příkazy RedHat/CentOS, ale další kroky instalace si můžete prohlédnout v oficiální dokumentaci.
`sudo yum install ansible`
To je vše! Máte nainstalovaný plně funkční řídicí uzel Ansible a jste připraveni k použití.
Inventář
Ansible potřebuje vědět, se kterými počítači má komunikovat a na kterých má vaše playbooky spouštět. Pojďme se tedy podívat na nastavení základního inventáře. Výchozí soubor inventáře je v Linuxu k dispozici v adresáři `/etc/ansible/hosts`. Pokud se na tento soubor podíváte, uvidíte, že je ve formátu podobném INI a pravděpodobně vypadá nějak takto:
mail.example.com
[webové servery]
foo.example.com
bar.example.com
[dbservery]
one.example.com
dva.example.com
tři.example.com
Jak je vysvětleno v dokumentaci, nadpisy v závorkách jsou názvy skupin, které vám umožňují třídit systémy do libovolných skupin. Doporučuji vám, abyste si udělali čas a nastavili si soubor inventáře, protože je důležité, aby Ansible věděl, proti kterým hostitelům chcete spouštět úlohy.
Vytvoření herního plánu
Playbook je soubor úloh, které se mají spustit na vašich hostitelích. Můžete vytvořit playbook, který je jednoduchý jako jeden soubor s jedním přehráním, nebo mnoho souborů s více podmíněnými klauzulemi a importy z jiných playbooků. Začneme s jednoduchým playbookem, který nainstaluje, spustí a přidá pravidla firewallu pro nginx na našich webových serverech. V našem souboru hosts bychom mohli mít něco jako toto:
[webové servery]
web01.example.com
web02.example.com
a v našem souboru `nginx-install.yaml` máme následující:
-
– hostitelé: webové servery
úkoly:
– název: Instalace Nginxu
mňam:
název: nginx
stav: nejnovější
– název: Spustit Nginx
služba:
název: nginx
stav: zahájeno
– název: Povolit port 80 přes firewalld
firewalld:
port: 80/tcp # Alternativně můžete použít syntaxi „service: http“
trvalé: ano
stav: povoleno
Přehled připojení hostitele Ansible k vašim webovým serverům a instalace NGINX. Chcete-li spustit tento návod, jednoduše spusťte příkaz `ansible-playbook nginx-install.yaml` a Ansible nainstaluje Nginx na všechny hostitele ve vaší skupině webových serverů. Jedná se o jednoduchý návod s jedním spuštěním, nicméně je dobrým příkladem toho, jak snadno lze Ansible používat ve vašem prostředí.
Závěr
Jak vidíte, Ansible je velmi flexibilní a snadno použitelný automatizační nástroj, který může fungovat v jakémkoli prostředí. Díky snadné křivce učení a schopnosti růstu podle vašich potřeb je Ansible jedním z nejlepších automatizačních nástrojů pro nasazení infrastruktury do plně spravovaného prostředí DevOps.
-Justin Gauthier




Amazon