Ansible je open source software, který tvoří platformu pro konfigurační správu a řízení počítačů. Kombinuje víceuzlové nasazení softwaru, správu konfigurací a ad hoc provádění úloh. Ansible využívá k správě počítačů v síti SSH nebo PowerShell. Na nainstalovaný software má minimální nároky, pro linuxové uzly si vystačí s Pythonem verze 2.4 nebo vyšší a u uzlů s MS Windows s PowerShellem verze 3.0 nebo vyšší.

Ansible využívá moduly, které pracují s JSONem a mají standardní výstup. Mohou být napsány v libovolném programovacím jazyce. YAML se používá pro znovupoužitelné popisy stavů uzlů.

Michael DeHaan je autorem Ansible, stejně jako autorem provisioning serveru Cobbler pro Linux a spoluautorem Func frameworku pro vzdálenou administraci. Ansible spadá do linuxové distribuce Fedora, kterou vytváří firma Red Hat, zároveň je v podobě balíčků EPEL, tedy Extra Packages for Enterprise Linux, k dispozici pro Red Hat Enterprise Linux, CentOS, Scientific Linux i další operační systémy.

Architektura

Stejně jako většina systémů pro správu konfigurací dokáže Ansible rozlišit dva různé typy serverů: řídící stroj a uzly. Orchestrace je řízena z jediného centrálního nebo řídícího stroje, který využívá SSH pro přístup ke spravovaným uzlům. Spravované uzly popisuje řídícímu stroji inventory.

Ansible využívá moduly pro orchestraci uzlů. Pomocí těchto modulů se na uzly dostává a spouští je pomocí SSH. Tyto moduly se pak dočasně uloží na uzlech a komunikují s řídícím strojem za využití protokolu JSON na standardním výstupu. Ve chvíli, kdy Ansible uzly dále neřídí, nespotřebovává žádné prostředky, jelikož na těchto spravovaných uzlech nejsou spuštěné žádné programy ani démoni.

Velká část často používaných systémů pro správu konfigurací, jako je například Chef, Puppet nebo CFEngine, využívají agenty. Pro tento typ systémů je nutné na každý uzel instalovat démona, který pak komunikuje s řídícím strojem. Ansible využívá architekturu bez agentů, který přináší nižší provoz po síti, protože jednotlivé uzly samostatně nekomunikují s řídícím strojem.

Designové cíle

Mezi designové cíle Ansiblu můžeme zařadit:

  • Minimalismus. Systém správy by neměl požadovat instalaci žádného přídavného software.
  • Konzistence.
  • Bezpečnost. Ansible ve svých uzlech nevyužívá agenty. Jediné, co vyžaduje, je OpenSSH, který je na výborné bezpečnostní úrovni a široce otestovaný.
  • Spolehlivost. Neočekávaným vedlejším efektům na spravovaných systémech zabraňuje pečlivě napsaný Ansible playbook, který je IPA idempotentní. Pokud je ale playbook špatně napsaný, může k idempotenci dojít.
  • Plochá učící křivka. Pro playbooky je používán snadno zvládnutelný a popisný jazyk, který je založený na YAML a šablonách Jinja.

Výhody použití Ansible

  • Imperativní orchestrace. Imperativní orchestrace funguje dobře, nedochází k problémům se zdroji podobně jako například u Puppet nebo Chef.
  • Jednoduchý začátek. Implementovat Ansible je jednoduché a je možné iterovat s playbookem a rolemi.
  • Absence agentů. Pro správu uzlů není potřeba využití agentů, což znamená, že Ansible tak šetří výkon.
  • Psaný v Pythonu. Ansible je psaný na rozdíl od většiny ostatních řešení v Pythonu. Díky tomu je spuštění je jednodušší, protože potřebné knihovny jsou standardně součástí většiny Linux distribucí.
  • Konfigurační soubory. Konfigurační soubory playbook jsou psané v YAML, což dělá správu konfigurace a automatizaci snadnější. Je snadné je číst, podporují komentáře a používají kotvy pro reference na další položky.

Nevýhody použití Ansible

  • UI. Ansible je původně nástroj ovládaný pouze za pomoci příkazové řádky. V současnosti má sice grafické uživatelské rozhraní, není ale příliš vyspělé.
  • Stavy. Na rozdíl například od Puppetu nepodporuje Ansible stavy.
  • Podpora Windows. Přestože je možné využívat Ansible i pro Windows, je zaměřený spíše na použití na Linuxu.