V aplikaci Ansible můžete definovat tři typy vlastních faktů.
1) Globální fakta: Tato fakta jsou přístupná z každého hostitele ve vašem souboru inventáře.
2) Skupinová fakta: Tato fakta jsou přístupná pouze z konkrétní sady hostitelů nebo skupiny hostitelů.
3) Fakta o hostiteli: Tato fakta jsou přístupná pouze od konkrétního hostitele.
V tomto článku vám ukážu, jak pracovat s vlastními fakty Ansible. Pojďme tedy začít.
Předpoklady:
Chcete-li vyzkoušet příklady tohoto článku,
1) Musíte mít ve svém počítači nainstalovanou aplikaci Ansible.
2) Musíte mít alespoň 6 hostitelů Linuxu nakonfigurovaných pro automatizaci Ansible.
Existuje mnoho článků o LinuxHint věnovaných instalaci Ansible a konfiguraci hostitelů pro automatizaci Ansible. V případě potřeby je můžete zkontrolovat.
Nastavení adresáře projektu:
Než začneme, vytvořme adresář projektu, abychom mohli uspořádat soubory projektu.
Chcete-li vytvořit adresář projektu vlastní fakta / ve vašem DOMOV adresáře, spusťte následující příkaz:
$ mkdir -pv custom-Facts / Playbooks, host_vars, group_vars
Nyní přejděte na vlastní fakta / adresář takto:
$ cd vlastní fakta /
Vytvořte konfigurační soubor Ansible zodpovědný.srov v adresáři projektu takto:
$ nanoodpovědný.srov
Do následujících řádků napište svůj zodpovědný.srov soubor.
[výchozí]inventář = hostitelé
host_key_checking = False
Až budete hotovi, stiskněte
Nyní vytvořte Ansible inventární soubor hostitelé v adresáři projektu takto:
$ nano hostitelé
Napište následující řádky do hostitele inventární soubor.
vm1.nodekite.comvm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[databáze]
vm [5: 6].nodekite.com
Až budete hotovi, stiskněte
Chcete-li zobrazit seznam všech dostupných hostitelů v souboru inventáře, spusťte následující příkaz:
$ ansible all --list-hostsJak vidíte, v inventáři mám šest hostitelů.
Seznam hostitelů dostupných v web skupiny souboru inventáře, spusťte následující příkaz:
$ ansible web --list-hostsJak vidíte, mám dva hostitele (vm3.nodekite.com a vm4.nodekite.com) v web skupina mého souboru inventáře.
Seznam hostitelů dostupných v databáze skupiny souboru inventáře, spusťte následující příkaz:
$ ansible database --list-hostsJak vidíte, mám dva hostitele (vm5.nodekite.com a vm6.nodekite.com) v databáze skupina mého inventárního souboru.
Práce s možnými globálními fakty:
V této části vám ukážu, jak definovat globální fakta / proměnné Ansible ve vašem souboru inventáře a jak k nim přistupovat ze svých Anbook playbooků. Ukážu vám také, jak definovat globální fakta / proměnné v samostatném souboru.
Nejprve otevřete hostitele soubor inventáře s následujícím příkazem:
$ nano hostitelé
Nyní přidejte označené řádky do svého hostitele inventární soubor. Až budete hotovi, stiskněte
''
Globální fakta přidáte do vše: vars sekce. Tady jsem přidal web_url globální fakt.
Nyní vytvořte nový scénář print_global_fact.yaml v knihy o hře / adresář takto:
$ nano playbooks / print_global_fact.yaml
Poté zadejte následující řádky do pole print_global_fact.yaml soubor.
- hostitelé: všichniuživatel: odpovědný
úkoly:
- name: Vytiskne hodnotu globálního faktu 'web_url'
ladit:
msg: 'Web URL: web_url'
Účelem této příručky je vytisknout soubor web_url globální fakt.
Až budete hotovi, stiskněte
Nyní spusťte print_global_fact.yaml playbook takto:
$ ansible-playbook playbooks / print_global_fact.yaml
Jak vidíte, všichni hostitelé v mém souboru inventáře mají přístup ke globální skutečnosti web_url.
Globální fakta můžete také přidat do samostatného souboru. Tímto způsobem můžete udržovat čistý inventární soubor. Uvidíme, jak na to.
Nejprve odstraňte globální fakta z hostitele inventární soubor.
$ nano hostitelé
Nyní odeberte označené řádky ze souboru inventáře a stiskněte
Poté vytvořte nový soubor Všechno v group_vars / adresář takto:
$ nano group_vars / vše
Chcete-li přidat globální fakt web_url, zadejte následující řádek do pole group_vars / all soubor.
web_url: https: // www.linuxhint.comAž budete hotovi, stiskněte
Chcete-li zkontrolovat, zda máte přístup ke globální skutečnosti web_url, spustit print_global_fact.yaml playbook znovu takto:
$ ansible-playbook playbooks / print_global_fact.yaml
Jak vidíte, všichni hostitelé v mém souboru inventáře mají přístup ke globální skutečnosti web_url.
Práce s možnými fakty skupiny:
V této části vám ukážu, jak definovat fakta / proměnné skupiny Ansible ve vašem souboru inventáře a jak k nim přistupovat ze svých knih Ansible. Ukážu vám také, jak definovat skupinová fakta / proměnné v samostatném souboru.
Nejprve otevřete hostitele soubor inventáře s následujícím příkazem:
$ nano hostitelé
Pokud máte skupinu hostitelů skupina1, pak přidáte fakta / proměnné skupiny pro tuto skupinu hostitelů do a group1: vars část vašeho inventárního souboru.
[skupina1]…
[group1: vars]
proměnná1 = hodnota1
proměnná2 = hodnota2
Například přidat skupinová fakta / proměnné doménové jméno a backend databáze pro web skupinu hostitelů, můžete zadat do označených řádků v souboru inventáře.
Až budete hotovi, stiskněte
Chcete-li vytisknout a otestovat, zda máme přístup ke skupinovým faktům, vytvořte novou příručku print_group_facts.yaml v knihy o hře / adresář takto:
$ nano playbooks / print_group_facts.yaml
Napište následující řádky do print_group_facts.yaml soubor.
- hostitelé: webuživatel: odpovědný
úkoly:
- name: Vytisknout fakta o skupině
ladit:
msg: 'Domain Name: domain_name Database Backend: database_backend' '
Až budete hotovi, stiskněte
Nyní spusťte print_group_facts.yaml playbook takto:
$ ansible-playbook playbooks / print_group_facts.yaml
Jak vidíte, hostitelé v web skupina má přístup k souboru doménové jméno a backend databáze seskupit fakta / proměnné.
Nyní pojďme vyčistit soubor inventáře a uvidíme, jak přidat skupinová fakta / proměnné do samostatného souboru.
Nejprve otevřete hostitele soubor inventáře takto:
$ nano fakta
Odstraňte označené čáry z hostitele inventární soubor. Až budete hotovi, stiskněte
Jak přidáváme skupinové proměnné pro web hostitelská skupina, vytvořte nový soubor web (stejný jako název skupiny) v group_vars / adresář takto:
$ nano group_vars / web
Chcete-li přidat fakta o skupině doménové jméno a backend databáze pro web hostitelská skupina, přidejte následující řádky do souboru group_vars / web soubor.
název_domény: web.linuxhint.comback_databáze: pgsql
Až budete hotovi, stiskněte
Chcete-li zkontrolovat, zda hostitelé v web skupina má přístup ke skupinovým faktům, spouští print_group_facts.yaml playbook takto:
$ ansible-playbook playbooks / print_group_facts.yaml
Jak vidíte, hostitelé v web skupina má přístup k souboru doménové jméno a backend databáze seskupit fakta / proměnné.
Práce s možnými fakty hostitele:
V této části vám ukážu, jak definovat fakta / proměnné hostitele Ansible v souboru inventáře a jak k nim přistupovat ze svých knih Ansible. Ukážu vám také, jak definovat fakta / proměnné hostitele v samostatném souboru.
Nejprve otevřete hostitele soubor inventáře s následujícím příkazem:
$ nano hostitelé
Fakta / proměnné hostitele můžete přidat za název DNS nebo IP adresu hostitele do souboru inventáře následujícím způsobem:
www.doména1.com variable1 = value1 variable2 = value2192.168.22.2 proměnná1 = hodnota3 proměnná2 = hodnota4
Můžete například přidat fakta / proměnné hostitele doménové jméno a backend databáze pro hostitele vm3.nodekite.com a vm4.nodekite.com, jak je uvedeno na snímku obrazovky níže.
Všimněte si, že hodnota doménové jméno a backend databáze fakta / proměnné se u každého hostitele liší.
Jakmile přidáte fakta / proměnné hostitele, stiskněte
Protože jsem přidal stejná fakta / proměnné jako v příkladu skupiny fakta / proměnné, můžeme použít print_group_facts.yaml příručku, která také otestuje přístupnost těchto faktů / proměnných.
Spusťte print_group_facts.yaml playbook takto:
$ ansible-playbook playbooks / print_group_facts.yaml
Jak vidíte, fakta / proměnné hostitele jsou přístupné jejich určenému hostiteli. Hodnoty se také liší pro každého hostitele.
Protože každý z hostitelů je v samostatném řádku v mém souboru inventáře, mohl bych snadno přidat fakta / proměnné hostitele do mého souboru inventáře. Ale pokud použijete rozsahy k definování hostitelů v souboru inventáře, jak je označen na následujícím obrázku, nemůžete přidat taková fakta / proměnné hostitele.
Fakta / proměnné hostitele můžete přidat do samostatného souboru, stejně jako jste to udělali pro globální a skupinová fakta / proměnné.
Chcete-li přidat hostitelská fakta / proměnné pro vm5.nodekite.com hostitel, vytvořte nový soubor vm5.nodekite.com (stejný jako název DNS hostitele) v host_vars / adresář takto:
$ nano host_vars / vm5.nodekite.com
Můžete přidat fakta / proměnné hostitele db_port a název_db pro hostitele vm5.nodekite.com s následujícími řádky.
db_port: 3306název_db: demo1
Až budete hotovi, stiskněte
Stejným způsobem přidáte fakta / proměnné hostitele pro hostitele vm6.nodekite.com, vytvořit nový soubor vm6.nodekite.com v host_vars / adresář takto:
$ nano host_vars / vm6.nodekite.com
Můžete přidat fakta / proměnné hostitele db_port a název_db pro hostitele vm6.nodekite.com s následujícími řádky.
db_port: 8877název_db: app1
Až budete hotovi, stiskněte
Chcete-li vytisknout a otestovat, zda můžeme přistupovat k faktům / proměnným hostitele, vytvořte novou příručku print_host_facts.yaml v knihy o hře / adresář takto:
$ nano playbooks / print_host_facts.yaml
Nyní zadejte následující řádky do pole print_host_facts.yaml soubor.
- hostitelé: databázeuživatel: odpovědný
úkoly:
- name: Vytisknout fakta o hostiteli
ladit:
msg: 'Název databáze: db_name Port databáze: db_port'
Až budete hotovi, stiskněte
Chcete-li zkontrolovat, zda je hostitel vm5.nodekite.com a vm6.nodekite.com může přistupovat k faktům / proměnným hostitele, spustit print_host_facts.yaml playbook takto:
$ ansible-playbook playbooks / print_host_facts.yaml
Jak vidíte, hostitelé vm5.nodekite.com a vm6.nodekite.com může přistupovat k název_db a db_port hostitelská fakta / proměnné.
Dáme to dohromady: Přednost možných skutečností
V této části budu hovořit o prioritě skutečnosti / proměnné Ansible. Pojďme tedy začít.
Než začneme, vyčistíme inventární soubor.
Otevři hostitele soubor inventáře s následujícím příkazem:
$ nano hostitelé
Odeberte označenou část ze souboru inventáře.
Takto by měl v tomto okamžiku vypadat váš soubor inventáře.
Nyní přidejte označený řádek do souboru inventáře. Tyto řádky přidávají globální fakta / proměnné faktický_obor a přístav.
Poté přidejte označené řádky do souboru inventáře. Tyto řádky přidávají faktický_obor a přístav fakta / proměnné pro hostitele v databáze skupina.
Nakonec přidejte faktický_obor a přístav hostitelská fakta / proměnné pro vm3.nodekite.com a vm4.nodekite.com hostitelé, jak je uvedeno na snímku obrazovky níže.
Až budete hotovi, stiskněte
Chcete-li vytisknout hodnotu globálních, skupinových a hostitelských faktů / proměnných, vytvořte novou příručku skutečnost_precedence.yaml v knihy o hře / adresář takto:
$ nano playbooks / fact_precedence.yaml
Napište následující řádky do skutečnost_precedence.yaml soubor.
- hostitelé: všichniuživatel: odpovědný
úkoly:
- name: Vytisknout všechna fakta
ladit:
msg: 'Fact Scope: fact_scope Port: port'
Až budete hotovi, stiskněte
Chcete-li vytisknout globální, skupinová a hostitelská fakta / proměnné, spusťte skutečnost_precedence.yaml playbook takto:
$ ansible-playbook playbooks / fact_precedence.yaml
Jak vidíte, jsou vytištěna globální, skupinová a hostitelská fakta / proměnné.
Všimněte si, že skupina faktů / proměnných nahradila globální fakta / proměnné (1). Všimněte si také, že hostitelská fakta / proměnné nahradila jak skupinová, tak globální fakta / proměnné (2).
Fakt / proměnná přednost Ansible je následující:
Hostitelský fakt> Skupinový fakt> Globální faktZávěr:
Po přečtení tohoto článku byste měli být schopni pohodlně pracovat s globálními, skupinovými a hostitelskými fakty / proměnnými Ansible. Nezapomeňte na prioritu vlastních skutečností Ansible. Pomůže vám snadněji ladit vaše hrací knížky Ansible.