Ansible (software)
Author
Albert FloresAnsible (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. +more, 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. +more 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. +more 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. +more 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. +more 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. +more 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. +more). 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. +more 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. +more 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. +more7. Ří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šší. +more 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. +more 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
[url=http://github.com/ansible/ansible]Oficiální veřejný repozitář kódu[/url] na GitHub
Kategorie:Orchestrační software Kategorie:Správa systému Kategorie:Distribuce software Kategorie:Software v Pythonu Kategorie:Svobodný software