Jak víme, že Ansible je nejvýkonnější automatizační nástroj které mohou snadno konfigurovat hostitele. Hlavní výhodou použití Ansible jako automatizačních nástrojů je to, že na hostitele nemusíme instalovat žádného agenta. Komunikace mezi Ansible serverem a jeho klienty nebo spravovanými hostiteli je bez agenta, funguje přes ssh mechanismus.
V terminologii Ansible se systém, do kterého instalujeme software ansible, nazývá „Control Node “ a servery, které jsou spravovány a konfigurovány serverem Ansible nebo řídicím uzlem, jsou známé jako „Spravovaný hostitel “. Položky Managed Hosts jsou uloženy v souboru inventáře hostitele, je to textový soubor na řídicím uzlu, který se skládá ze spravovaného názvu hostitele nebo IP adres. V Ansible můžeme spravovat dva typy inventáře hostitelů, tj. statický a dynamické .
V tomto článku budeme diskutovat o tom, jak spravovat statický a dynamický inventář hostitelů v Ansible. Předpokládám, že v mém řídicím uzlu je již nainstalován software Ansible. Kdykoli nainstalujeme software ansible, vytvoří se výchozí soubor hostitele ansible s názvem “hosts “ ve složce “/etc/ansible ” V případě, že software Ansible není nainstalován na vašem serveru, postupujte podle níže
- Jak nainstalovat Ansible (Automation Tool) na CentOS 8/RHEL 8
- Jak nainstalovat nástroj Ansible Automation na CentOS 7.x
V tomto tutoriálu budu používat následující:
Jeden ovládací uzel – control-node.example.com (192.168.0.10)
Dva spravovaní hostitelé – servera.example.com (192.168.0.20) a serverb.example.com (192.168.0.30)
Statický inventář hostitele
Statický inventář hostitele v Ansible je jako INI textový soubor, ve kterém každý deklaruje jednu skupinu hostitelů ( skupina hostitelů). Každá sekce začíná názvem skupiny hostitelů uzavřeným v hranatých závorkách ([]), poté jsou uvedeny položky hostitelů každého spravovaného hostitele ve skupině, každá na jednom řádku. Položky hostitele mohou hostit název nebo IP adresy spravovaných hostitelů. Pojďme vytvořit soubor inventáře s názvem „inventory“ ve složce „test-lab“ v domovském adresáři vašeho uživatele.
[[email protected] ~]$ mkdir test-lab [[email protected] ~]$ cd test-lab/ [[email protected] test-lab]$ vi inventory control-node.example.com 192.168.0.10 [webserver] servera.example.com [dbserver] serverb.example.com [datacenter:children] webserver dbserver
Uložte a ukončete soubor.
V inventárním souboru jsem vytvořil dvě skupiny hostitelů s názvem webserver a dbserver, kromě toho jsme vytvořili ještě jednu skupinu s názvem datacenter, která obsahuje skupiny skupin hostitelů. Inventáře hostitelů Anisble mohou zahrnovat skupiny hostitelských skupin, toho dosáhnete pomocí „:children Příklad přípony je uveden ve výše vytvořeném inventáři. Také není povinné umístit hostitele do skupiny, můžeme jednoduše umístit hostitele bez uvedení hostitelské skupiny, stejně jako záznam „control-node.exmaple.com“ v souboru inventáře
Udělejme základní operace s příkazem ansible odkazem na hostitele inventáře.
Chcete-li použít příkaz ansible pro správu hostitele, cesta k souboru inventáře hostitele musí být zadána pomocí „-i “.
$ ansible {host-pattern} -i /
Příklad:1 Seznam všech spravovaných hostitelů
Chcete-li vypsat všechny spravované hostitele, zadejte v příkazu ansible klíčové slovo „all“ místo vzoru hostitele, příklad je uveden níže
[[email protected] test-lab]$ ansible all -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (4): control-node.example.com 192.168.0.10 servera.example.com serverb.example.com [[email protected] test-lab]$
Dalším způsobem, jak vypsat seznam všech spravovaných hostitelů, je použít zástupný znak „*“.
[[email protected] test-lab]$ ansible '*' -i /home/linuxtechi/test-lab/inventory --list-hosts
Příklad:2 Seznam spravovaných hostitelů na základě skupiny hostitelů.
Místo vzoru hostitele
zadejte název hostitelské skupiny[[email protected] test-lab]$ ansible webserver -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): servera.example.com [[email protected] test-lab]$ [[email protected] test-lab]$ ansible datacenter -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (2): servera.example.com serverb.example.com [[email protected] test-lab]$
Příklad:3 Seznam spravovaných hostitelů na základě vzoru hostitelů se zástupnými znaky.
Vypište všechny hostitele, kteří jsou na doméně „*.example.com“
[[email protected] test-lab]$ ansible '*.example.com' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (3): control-node.example.com servera.example.com serverb.example.com [[email protected] test-lab]$
Seznam všech hostitelů, kteří jsou v síti „192.168.0.0“
[[email protected] test-lab]$ ansible '192.168.0.*' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): 192.168.0.10 [[email protected] test-lab]$
Příklad:4 Pokročilý vzor hostitele, jako je zahrnutí a vyloučení
Kromě zástupných znaků nám Ansible umožňuje vytvářet složité vzory hostitelů pomocí logiky zahrnutí a vyloučení. Zahrnutí se provádí pomocí znaku „:“ k oddělení skupin v hostitelském vzoru, který označuje logiku NEBO.
Příklad vzoru zahrnutí hostitele
[[email protected] test-lab]$ ansible 'webserver:dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (2): servera.example.com serverb.example.com [[email protected] test-lab]$
Příklad vzoru hostitelské křižovatky
‘:&’ představuje průnik dvou skupin v inventárním souboru
[[email protected] test-lab]$ ansible 'datacenter:&dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): serverb.example.com [[email protected] test-lab]$
Příklad vzoru vyloučení hostitele
Vyloučení se provádí pomocí znaku „:“ ve spojení se znakem „!“
[[email protected] test-lab]$ ansible 'datacenter:!dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts hosts (1): servera.example.com [[email protected] test-lab]$
Dynamický hostitelský inventář
Hostitelský inventář v Ansible lze generovat dynamicky. Zdroje informací o dynamickém inventáři zahrnují veřejné/soukromé poskytovatele cloudu, informace o ševcovském systému, databázi LDAP nebo databázi CMDB (Configuration Management). Ansible zahrnuje skripty, které zpracovávají dynamické informace o hostitelích, skupinách a proměnných od nejběžnějších poskytovatelů, jako jsou Amazon EC2, Cobbler, Rackspace a OpenStack.
U poskytovatelů cloudu by měly být informace o ověřování a přístupu definovány v souborech, ke kterým má skript přístup. Řada existujících skriptů je k dispozici na webu GitHub společnosti Ansible na adrese https://github.com/ansible/ansible/tree/devel/contrib/inventory, tyto skripty podporují dynamické generování inventáře na základě informací o hostiteli dostupných z velké platformy, jako je Openstack , AWS , Ovirt , Red Hat Satellite a OpenShift .
Můžeme napsat svůj vlastní program pro přizpůsobení dynamického inventáře v jakémkoli programovacím jazyce a musí se vrátit ve formátu JSON, když projdou vhodnými možnostmi. Aby Ansible mohl použít skript k načtení informací o hostitelích z externího inventárního systému, musí tento skript podporovat –list Parametr vrací hostitelskou skupinu a informace o hostitelích podobné hash/slovníku JSON. Příklad je uveden níže:
[[email protected] test-lab]$ ./inventoryscript --list { "webservers" :["web1.example.com", "web2.example.com" ], "dbservers" :["db1.example.com", "db2.example.com"] }
Skript vytvářející dynamický inventář musí být spustitelný, aby jej Ansible mohl používat.
Poznámka:Ansible podporuje použití více inventářů ve stejném běhu. Pokud buď hodnota předaná parametru ‚-i‘, nebo hodnota parametru inventáře v souboru /etc/ansible/ansible.cfg . Pokud existuje více souborů inventáře, prozkoumají se v abecedním pořadí. Proto je důležité, aby název souboru odpovídal názvu jiného souboru v abecedním pořadí, pokud jeho obsah závisí na obsahu jiného souboru.