Vyhledávání na webu

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


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

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

Spravovaní hostitelé mohou být buď uvedeni jako jednotlivé položky, nebo kategorizováni pod názvem skupiny, jak uvidíme později. V Ansible existují dva typy souborů inventáře: Statický a Dynamický.

Pojďme se podívat na každý z nich a uvidíme, jak je můžeme spravovat. Nyní předpokládáme, že jste již nainstalovali Ansible na svůj uzel Control a nakonfigurovali připojení SSH bez hesla ke spravovaným hostitelům.

Statický soubor inventáře hostitele

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

Název hostitelské skupiny je uzavřen v hranatých závorkách, tj. [název skupiny]. Položky spravovaného hostitele jsou později uvedeny pod názvem skupiny, každá na samostatném řádku. Jak již bylo uvedeno výše, hostitelé jsou uvedeni pomocí názvů hostitelů nebo IP adres.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Pro účely ilustrace vytvoříme statický inventární soubor.

mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Uložte soubor a ukončete.

Jak můžete vidět v souboru inventáře výše, vytvořili jsme 2 skupiny hostitelů: webové servery a databázové_servery. Také jsme vytvořili další skupinu nazvanou datacenter, která zahrnuje skupinu hostitelských skupin označenou 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 souboru inventáře byly skupiny webservers a database_servers umístěny pod 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 hostitelských jmen nebo IP adres.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Nyní použijeme několik příkazů Ansible pro odkazování na soubor inventáře hostitele. Základní syntaxe pro správu zásob je uvedena.

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

Například,

ansible all -i /root/test_labs/hosts --list-hosts

Případně můžete použít zástupný znak * k nahrazení argumentu ‘all’.

ansible * -i /root/test_labs/hosts --list-hosts

Chcete-li vypsat hostitele ve skupině, zadejte hostitelskou skupinu na místě hostitelského vzoru.

ansible webservers -i /root/test_labs/hosts --list-hosts

Dynamický soubor inventáře hostitele

V konfiguraci – zejména v cloudovém nastavení, jako je AWS, kde se soubor inventáře neustále mění, jak přidáváte nebo vyřazujete servery z provozu, se sledování hostitelů definovaných v souboru inventáře stává skutečnou výzvou. Vracet se k hostitelskému souboru a aktualizovat seznam hostitelů s jejich IP adresami se stává nepohodlným.

A tady přichází na řadu dynamický inventář. Co je tedy dynamický inventář? Dynamický inventář je skript napsaný v Pythonu, PHP nebo jiném programovacím jazyce. Je to užitečné v cloudových prostředích, jako je AWS, kde se IP adresy změní, jakmile je virtuální server zastaven a znovu spuštěn.

Ansible již vyvinul inventární skripty pro veřejné cloudové platformy, jako jsou mimo jiné Google Compute Engine, instance Amazon EC2, OpenStack, RackSpace, cobbler.

Jaké jsou výhody dynamického inventáře oproti statickému inventáři?
  • Dynamické inventury odvádějí dokonalou práci při snižování lidských chyb, protože informace jsou shromažďovány pomocí skriptů.
  • Správa zásob vyžaduje minimální úsilí.

Můžete si napsat svůj vlastní přizpůsobený dynamický inventář v programovacím jazyce dle vašeho výběru. Po předání vhodných možností by inventář měl vrátit formát v JSON.

Využijte existující skript 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.

Chcete-li načíst informace o hostitelích uvnitř skriptu dynamického inventáře, jednoduše spusťte.

./script --list 

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

Slovník obsahující skupiny (tj. webservery, database_Servers)
  • Seznam spravovaných hostitelů na skupinu
  • Slovník proměnných
Metaslovník
  • Hostitelé a hostitelé
Ukázkový výstup
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}
Závěr

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

Na druhou stranu se dynamický soubor hostitele neustále mění, když přidáváte nové hostitele nebo vyřazujete z provozu ty staré. IP adresy hostitelů jsou také dynamické, když zastavujete a spouštíte nové hostitelské systémy. Doufáme, že vám tento návod přinesl informace.