Jak používat statické a dynamické inventáře v Ansible – 4. část

V této 4. části seriálu o Ansible si vysvětlíme, jak používat statické a dynamické inventáře k definování skupin hostitelů v Ansible.

V Ansible jsou spravovaní hostitelé nebo servery, které jsou řízeny řídicím uzlem Ansible, definováni v souboru inventáře hostitele, jak je vysvětleno v části. Soubor inventáře hostitele je textový soubor, který se skládá z názvů hostitelů nebo IP adres spravovaných hostitelů nebo vzdálených serverů.

Spravované hostitele lze uvést buď jako jednotlivé položky, nebo je lze zařadit do kategorie pod názvem skupiny, jak uvidíme později. V systému Ansible existují dva typy inventárních souborů:

Podívejme se na každý z nich a zjistěme, jak je můžeme spravovat. Nyní předpokládáme, že jste již nainstalovali Ansible na řídicí uzel a nakonfigurovali bezheslové připojení SSH ke spravovaným hostitelům.

Statický inventární soubor hostitele

V Ansible je statický inventární soubor prostý textový soubor, který obsahuje seznam spravovaných hostitelů deklarovaných ve skupině hostitelů pomocí názvů hostitelů nebo IP adres.

Název skupiny hostitelů je uzavřen v hranatých závorkách, tedy . Záznamy spravovaných hostitelů jsou později uvedeny pod názvem skupiny, každý na vlastním řádku. Jak již bylo řečeno, hostitelé jsou uvedeni buď pomocí názvů hostitelů, nebo IP adres.

Host A ip_address Host B ip_addressHost c ip_address

Pro ilustraci vytvoříme statický inventární soubor.

# mkdir test_lab && cd test_lab# vim hosts
Statický inventární soubor
173.82.115.165173.82.220.239webserversdatabase_servers

Uložení souboru a ukončení.

Jak vidíte ve výše uvedeném inventárním souboru, vytvořili jsme 2 skupiny hostitelů: webservers a database_servers. Také jsme vytvořili další skupinu s názvem datacenter, která obsahuje skupinu skupin hostitelů označených příponou ': children', jak je vidět výše.

Ansible také umožňuje umístit skupiny hostitelů pod název skupiny. Ve výše uvedeném inventárním souboru byly skupiny webservers a database_servers umístěny pod název datacenter.

POZNÁMKA: Umístění spravovaných hostitelů do skupiny hostitelů není povinné. Můžete je jednoduše uvést například pomocí jejich názvů hostitelů nebo IP adres.

173.82.202.239172.82.115.165load_balancer.pnl.com

Nyní použijeme několik příkazů Ansible pro odkazování na soubor inventáře hostitelů. Základní syntaxe pro správu inventáře je následující.

$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Například,

$ ansible all -i /root/test_labs/hosts --list-hosts
Seznam hostitelů Ansible

Alternativně můžete místo argumentu 'all' použít zástupný znak *.

$ ansible * -i /root/test_labs/hosts --list-hosts
Seznam hostitelů Ansible pomocí zástupných znaků

Chcete-li vypsat hostitele ve skupině, zadejte místo vzoru host-pattern skupinu hostitelů.

$ ansible webservers -i /root/test_labs/hosts --list-hosts
Seznam hostitelů Ansible ve skupině

Dynamický inventární soubor hostitele

V konfiguraci – zejména v cloudové konfiguraci, jako je AWS, kde se inventární soubor neustále mění s přidáváním nebo vyřazováním serverů, se udržování přehledu o hostitelích definovaných v inventárním souboru stává skutečným problémem. Stává se nepohodlným vracet se k souboru hostitele a aktualizovat seznam hostitelů s jejich IP adresami.

A právě zde přichází ke slovu dynamický inventář. Co je tedy dynamický inventář? Dynamický soupis je skript napsaný v jazyce Python, PHP nebo jiném programovacím jazyce. Hodí se v cloudových prostředích, jako je AWS, kde se IP adresy mění, jakmile je virtuální server zastaven a znovu spuštěn.

Ansible již vyvinul inventarizační skripty pro veřejné cloudové platformy, jako je Google Compute Engine, instance Amazon EC2, OpenStack, RackSpace, cobbler a další.

Jaké jsou výhody dynamického inventáře oproti statickému inventáři?
  • Dynamické inventáře dokonale snižují chybovost lidského faktoru, protože informace jsou shromažďovány pomocí skriptů.
  • Správa inventářů vyžaduje minimální úsilí.

Dynamický inventář si můžete napsat na míru ve zvoleném programovacím jazyce. Inventář by měl po předání příslušných voleb vrátit formát ve formátu JSON.

Využití existujícího skriptu dynamického inventáře

Skript, který se používá k vytvoření dynamického inventáře, musí být spustitelný, aby jej Ansible mohl používat.

Pro získání informací o hostitelích uvnitř skriptu dynamického inventáře jej stačí spustit.

# ./script --list 

Jak již bylo uvedeno, výstup by měl být ve formátu JSON v níže uvedeném formátu.

Slovník obsahující skupiny (tj.Webservers, database_Servers)
  • Seznam spravovaných hostitelů v jednotlivých skupinách
  • Slovník proměnných
Meta slovník
  • Hostitelé a hostvars
Ukázkový výstup
Závěr

V tomto článku jsme si ukázali, jak vytvořit statický i dynamický inventář. Stručně řečeno, statický inventární soubor je textový soubor obsahující seznam spravovaných hostitelů nebo vzdálených uzlů, jejichž čísla a IP adresy zůstávají poměrně konstantní.

Naproti tomu dynamický soubor hostitelů se neustále mění, jak přidáváte nové hostitele nebo vyřazujete staré. IP adresy hostitelů jsou také dynamické, protože zastavujete a spouštíte nové hostitelské systémy. Doufáme, že pro vás byl tento návod poučný.