Ansible fakta jsou data shromážděná o cílových uzlech (hostitelské uzly, které je třeba nakonfigurovat) a vrácená zpět do uzlů řadiče. Dostupná fakta jsou uložena ve formátu JSON a používají se k přijímání důležitých rozhodnutí o úkolech na základě jejich statistik. Fakta jsou v ansible_facts proměnnou, kterou spravuje Ansible Engine. Při synchronizaci s hostiteli v souladu s údaji v reálném čase hrají důležitou roli dostupná fakta .
[ Také by se vám mohlo líbit: Úvod do Ansible Tower ]
Co přesně jsou fakta Ansible a jak se používají?
Dostupná fakta jsou data a vlastnosti systému specifické pro hostitele, ke kterým se připojujete. Faktem může být IP adresa, informace o systému BIOS, informace o softwaru systému a dokonce i informace o hardwaru. Dostupná fakta pomáhají administrátorovi spravovat hostitele na základě jejich aktuálního stavu, spíše než provádět akce přímo bez jakýchkoli informací o stavu systému.
Zde je scénář:Na všechny hostitele Linuxu musíte nainstalovat webový server Apache. Víte, že hostitelé na platformě Red Hat Enterprise Linux (RHEL) spolupracují s Red Hat Package Manager (RPM) a yum/dnf
. Jiné distribuce Linuxu používají své vlastní správce balíčků, a proto by nebylo možné provádět stejnou úlohu na různých systémech bez úprav a odkazu na tyto rozdíly. Názvy balíčků se také liší mezi distribucemi. Například na systémech RHEL je balíček webového serveru Apache httpd, zatímco v jiných distribucích se jmenuje apache2.
Zde je příručka Ansible, která tento problém demonstruje:
- hosts: all
tasks:
- package:
name: "httpd"
state: present
when ansible_facts["os_name"] == "RedHat"
- package:
name: "apache2"
state: present
when ansible_facts["os_name"] == "Ubuntu"
Zde skript shromáždí informace o systému pomocí Ansible facts a podle toho provede operaci. Při instalaci na systémy RHEL automaticky přeskočí balíček založený na Ubuntu a naopak. Podobně můžete použít fakta Ansible k provedení operace, pokud má systém k dispozici minimální množství zdrojů.
Stručně řečeno, pomocí faktů Ansible může správce systému učinit Ansible chytřejší tím, že určí parametry, kdy úkoly provádět a kdy ne.
Přístup k faktům
Dostupná fakta používají setup
modul pro shromažďování faktů pokaždé před spuštěním příruček.
Použití ad-hoc příkazů Ansible
1. Přístup k Ansible faktům pomocí ad-hoc příkazů
setup
modul načte všechny podrobnosti ze vzdálených hostitelů do našich uzlů kontroléru a uloží je přímo na naši obrazovku, aby byla fakta viditelná pro uživatele.
ansible all -m setup
2. Odfiltrování konkrétní hodnoty z Ansible facts
Zde je setup
modul se používá k načtení faktů o systému a dále použije filtr argument pro zobrazení hodnoty z faktů Ansible.
ansible all -m setup -a "filter=ansible_cmdline"
Poznámka :Dostupná fakta se získávají pouze při práci s učebnicemi. Pro přístup k faktům Ansible pomocí ad-hoc příkazů použijte setup
modul.
Použití příručky Ansible
Abychom získali přístup k proměnným z faktů Ansible v příručce Ansible, musíme použít skutečný název bez použití ansible klíčové slovo.
ansible_facts["ansible_system"] ❌
ansible_facts["systém"] ✔️
gather_facts
modul z příručky Ansible spustí setup
modul ve výchozím nastavení na začátku každé příručky, aby shromáždil fakta o vzdálených hostitelích.
3. Přístup k faktům pomocí Ansible playbook
Získejte fakta Ansible a zobrazte je pomocí příručky.
- hosts: all
tasks:
- debug:
var: ansible_facts
4. Přístup ke konkrétní skutečnosti pomocí Ansible playbook
Načítání faktů Ansible, jejich filtrování a zobrazování pomocí příručky.
- hosts: all
tasks:
- debug:
var: ansible_facts["cmdline"]
Dostupná fakta a datový typ
Dostupná fakta jsou uložena ve formátu JSON a lze je rozdělit do tří hlavních kategorií:
Seznam :Ukládá seznam položek a uložené informace jsou zapsány do hranatých závorek [] . Většinou se jedná o fakta, která mohou mít více hodnot, např. system_capablities
. Seznam je přístupný pomocí hranatých závorek a zadáním indexu.
ansible_facts["all_ipv6_addresses"][1]
ansible_facts["all_ipv6_addresses"][2]
Slovník :Ukládá data jako kolekci párů klíč–hodnota a informace jsou uloženy ve složených závorkách {} . Většinou se jedná o fakta, která v sobě obsahují dílčí fakta, např. memory_mb
. Do slovníku se přistupuje pomocí operátoru tečka.
ansible_facts.memory_mb.real
Ansible Unsafe Text :Tento typ proměnné nemá žádnou podčást a ukládá data přímo, např. machine
. Ansible Unsafe Text je přístupný přímo pomocí názvu faktu.
ansible_facts["machine"]
Použijte type_debug filtr pro kontrolu datového typu pro fakta Ansible.
- hosts: all
tasks:
- debug:
var: ansible_facts["all_ipv6_addresses"]|type_debug
- debug:
var: ansible_facts["memory_mb"]|type_debug
- debug:
var: ansible_facts["machine"]|type_debug
type_debug filtr vyzve k datovému typu zadaný fakt, aniž by vypsal hodnotu faktu.
[ Hledáte více o automatizaci systému? Začněte s The Automated Enterprise, bezplatnou knihou od Red Hat. ]
Sbalit
Dostupná fakta jsou data o systému, který chcete konfigurovat. Díky těmto skutečnostem je váš systém Ansible inteligentní tím, že poskytuje podmínky, kdy zpracovat nějaký úkol. Můžete také zpracovat tak, že neuvedete nebo nepoužijete fakta Ansible, ale to by práci správce systému učinilo hektičtější, protože skript může selhat nebo změnit některé soubory, které nebyly nikdy zamýšleny k úpravě.
Další informace o faktech Ansible naleznete v oficiální dokumentaci.