Ansible (software)

Ansible (výslovnost [ˈaːnsəbl Amer ˈæ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í.[1] 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šší.[2] 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.[3]

Ansible
VývojářAnsible komunita/ Ansible Inc. / Red Hat Inc.
První vydání20. února 2012
Aktuální verze5.0.1 (2. prosince 2021)
Operační systémGNU/Linux, Unix-like, macOS, MS Windows
Vyvíjeno vPython, PowerShell, Shell, Ruby
Typ softwaruKonfigurační správa, Infrastructure as Code, Orchestrační stroj
Licenceproprietární / GNU GPL
Lokalizaceangličtina
Webansible.com
Některá data mohou pocházet z datové položky.

Ansible vyvinul Michael DeHaan, autor provisioning serveru Cobbler pro Linux a spoluautor frameworku Func pro vzdálenou administraci.[4] 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.[5]

Pro komerční podporu a financování Ansiblu byla vytvořena společnost AnsibleWorks, Inc., později přejmenovaná na Ansible, Inc.,[6][7] kterou v říjnu 2015 odkoupila firma Red Hat.[8][9]

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.[10]

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. [ˈɪnvəntri Amer ˈɪnvəntɔːri]IPA).

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.[11] 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.[12]

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í.[12]

Designové cíle

K designovým cílům Ansiblu patří:[11]

  • Minimalismus Systém správy by neměl vyžadovat instalaci žádného dodatečného softwaru.[12]
  • Konzistence
  • Bezpečnost Ansible nevyužívá na uzlech agenty. Vyžaduje pouze OpenSSH, který je výborně otestován.[12]
  • Vysoká spolehlivost. Pečlivě napsaný Ansible playbook [ˈpleɪbʊk]IPA je idempotentní, což zabraňuje neočekávaným vedlejším efektům na spravovaných systémech.[1] Š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.[11]

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.[13]

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.[14] 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 a Unixu, mj. na Red Hatu, Debianu, CentOSu, macOSu, BSD a Ubuntu.

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.[15] Ansible může od verze 1.7 spravovat také uzly se systémem MS Windows.[16][15]

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.[11]

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ů.[11]

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Ansible (software) na anglické Wikipedii.

  1. Achieving Rolling Updates and Continuous Deployment with Zero Downtime [online]. [cit. 2018-07-01]. Dostupné online. (anglicky)
  2. Getting Started - Ansible [online]. Red Hat, Inc., 2014-02-06 [cit. 2018-07-01]. Dostupné v archivu. (anglicky)
  3. SKOWRONSKI, Jason. Ansible: CM, Deployment, and Ad-hoc Task Execution All in One [online]. DevOps Zone. DZone, 2012-04-18. Dostupné online.
  4. An Interview with Ansible Author Michael DeHaan [online]. Colo a Cloud, 2012-04-17 [cit. 2018-07-01]. Archivovaná stránka. Dostupné v archivu pořízeném z originálu dne 2013-01-19. (anglicky)
  5. Ansible Download (DEB, RPM, TXZ, XZ) [online]. Packages Search [cit. 2018-07-01]. Dostupné v archivu pořízeném dne 2015-09-04. (anglicky)
  6. Apache Brooklyn. About Ansible [online]. [cit. 2018-07-01]. Dostupné online. (anglicky)
  7. Company Overview of Ansible, Inc. [online]. Bloomberg, Inc. [cit. 2018-07-01]. Dostupné online. (anglicky)
  8. VentureBeat. Source: Red Hat is buying Ansible for more than $100M [online]. 2015-10-15 8:53 [cit. 2018-07-01]. Dostupné online. (anglicky)
  9. Red Hat to Acquire IT Automation and DevOps Leader Ansible [online]. Red Hat, Inc., 2015-10-16 [cit. 2018-07-01]. Dostupné online. (anglicky)
  10. Ansible FAQ [online]. Red Hat, Inc. [cit. 2018-07-01]. Dostupné v archivu. (anglicky)
  11. Ansible in Depth [online]. [cit. 2018-07-01]. Dostupné online. (anglicky)
  12. The Benefits of Agentless Architecture [online]. [cit. 2018-07-01]. Dostupné online. (anglicky)
  13. Working with Inventory [online]. 2014-04-26 [cit. 2018-07-01]. Dostupné online. (anglicky)
  14. Working With Playbooks [online]. Red Hat, Inc [cit. 2018-07-01]. Dostupné online. (anglicky)
  15. Getting Started [online]. Red Hat, Inc [cit. 2018-07-01]. Dostupné online. (anglicky)
  16. DEHAAN, Michael. Ansible 1.7 is released - Windows beta and more! [online]. Red Hat, Inc, 2014-08-06 [cit. 2018-07-01]. Dostupné online. (anglicky)

Externí odkazy

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.