Ansible (výslovnost [ˈaːnsəbl ˈænsəbl]) je svobodný software, který vytváří platformu pro konfigurační správu a řízení počítačů kombinující víceuzlové nasazení softwaru, ad hoc provádění úloh a správu konfigurací. Ansible spravuje počítače v síti pomocí SSH nebo přes PowerShell. Má minimální nároky na nainstalovaný software, na linuxových uzlech vystačí s Pythonem verze 2.4 nebo vyšší, na uzlech s MS Windows s PowerShell verze 3.0 nebo vyšší. Používá moduly využívající JSON a standardní výstup, které mohou být napsány v libovolném programovacím jazyce. Pro znovupoužitelné popisy stavů uzlů se používá YAML.
Ansible vyvinul Michael DeHaan, autor provisioning serveru Cobbler pro Linux a spoluautor frameworku Func pro vzdálenou administraci. Ansible je součást linuxové distribuce Fedora vytvářené firmou Red Hat Inc., v podobě balíčků EPEL (Extra Packages for Enterprise Linux) je dostupný i pro Red Hat Enterprise Linux, CentOS a Scientific Linux, i pro další operační systémy.
Pro komerční podporu a financování Ansiblu byla vytvořena společnost AnsibleWorks, Inc., později přejmenovaná na Ansible, Inc., kterou v říjnu 2015 odkoupila firma Red Hat.
Název „Ansible“ se odkazuje na komunikační zařízení umožňující přenos nadsvětelnou rychlostí, které vymyslela spisovatelka Ursula K. Le Guinová pro svůj román Rocannonův svět z roku 1966, a které popisuje Orson Scott Card v románu Enderova hra.
Architektura Jako většina systémů pro správu konfigurací rozlišuje Ansible dva typy serverů: řídicí stroj a uzly. Veškerá orchestrace je řízena z jednoho řídicího stroje, který pro přístup na spravované uzly používá SSH. Spravované uzly jsou popsány na řídicím stroji v inventory (výsl. ).
Pro orchestraci uzlů používá Ansible moduly, které na uzly dostává a spouští pomocí SSH. Moduly se dočasně ukládají na uzly a komunikují s řídicím strojem pomocí protokolu JSON na standardním výstupu. V okamžiku, kdy Ansible uzly neřídí, nespotřebovává žádné prostředky, protože na spravovaných uzlech neběží žádné programy nebo démoni.
Jiné často používané systémy pro správu konfigurací – jako například Chef, Puppet a CFEngine – používají agenty. U těchto systémů musí být na každém uzlu nainstalován démon, který komunikuje s řídicím strojem. Ansible naproti tomu používá bezagentovou architekturu, která vystačí s démonem pro přihlášení na příslušný uzel. Výhodou je i nižší provoz po síti díky tomu, že uzly s řídicím strojem samostatně nekomunikují.
Designové cíle K designovým cílům Ansiblu patří:
Minimalismus Systém správy by neměl vyžadovat instalaci žádného dodatečného softwaru. Konzistence Bezpečnost Ansible nevyužívá na uzlech agenty. Vyžaduje pouze OpenSSH, který je výborně otestován. Vysoká spolehlivost. Pečlivě napsaný Ansible playbook je idempotentní, což zabraňuje neočekávaným vedlejším účinkům na spravovaných systémech. Špatně napsaný playbook však může nebýt idempotentní. Plochá učicí křivka. Playbooky používají snadno zvládnutelný a popisný jazyk založený na YAML a šablonách Jinja.
Moduly Moduly jsou v Ansiblu považovány za jednotky činnosti. Jednotlivé moduly jsou obvykle samostatné a mohou být napsány v běžných skriptovacích jazycích (Python, Perl, Ruby, bash, atd.). K základním vlastnostem modulů patří jejich idempotence, což znamená, že několikanásobné opakování operace (např. při zotavení z výpadku) uvede systém do stejného stavu.
Inventory Inventory je popis uzlů, ke kterým lze v Ansiblu přistupovat. Inventory je popsané konfiguračním souborem v INI formátu, jehož implicitní umístění je /etc/ansible/hosts. Konfigurační soubor obsahuje pro každý spravovaný uzel buď jeho IP adresu nebo jméno počítače. Uzly lze navíc sdružovat do skupin.
Příklad konfiguračního souboru:
192.168.6.1
[webservers] foo.example.com bar.example.com
Tento konfigurační soubor definuje tři uzly. První uzel je zadaný IP adresou a další dva jmény. Druhý a třetí uzel jsou navíc sdruženy do skupiny webservers.
Ansible může být také použit pro skript realizující Dynamické Inventory, který může načítat data z libovolného informačního systému.
Playbooky Playbooky popisují v Ansiblu konfigurace, nasazení softwaru a orchestraci jednotlivých složek. Playbooky mají formát YAML. Každý Playbook přiřazuje skupině uzlů sadu rolí. Jednotlivé role jsou reprezentovány voláními úloh v Ansiblu.
Dostupnost pro jednotlivé platformy Na řídicím stroji musí být nainstalován Python 2.6 nebo 2.7. Řídicí stroj lze provozovat na většině distribucí Linuxu, mj. na Red Hatu, Debianu, CentOSu, a Ubuntu, případně další Unixové systémy, např. BSD a macOS.
Na spravovaných uzlech musí být Python verze 2.4 nebo vyšší. Uzly s Pythonem do verze 2.5 musí mít nainstalovaný balíček python-simplejson. Ansible může od verze 1.7 spravovat také uzly se systémem MS Windows.
Podpora cloud computingu Ansible může pracovat na virtuálních strojích, ve veřejných i soukromých cloudech jako jsou Amazon Web Services, CloudStack, DigitalOcean, Eucalyptus Cloud, Google Cloud Platform, KVM Switch, Microsoft Azure Platform, OpenStack, Rackspace, SoftVrstva, VMware a XenServer.
Podpora big data Ansible může být nasazen pro zpracování rozsáhlých data, pro rozsáhlá úložiště a analytická prostředí, včetně Hadoop, Riak a Aerospike. V těchto prostředích lze Ansible použít pro správu prostředků jednotlivých uzlů, nenáročnou na spotřebu času CPU a paměti. Ansible navíc poskytuje monitorovací funkcionality, které mohou měřit dostupné prostředky systému, což může pomáhat při správě těchto uzlů.
Odkazy
Reference
Externí odkazy Oficiální veřejný repozitář kódu na GitHub
Kategorie:Orchestrační software Kategorie:Správa systému Kategorie:Distribuce software Kategorie:Software v Pythonu Kategorie:Svobodný software Kategorie:Software pod licencí GPL