V aplikácii Ansible môžete definovať tri typy vlastných faktov.
1) Globálne fakty: Tieto fakty sú prístupné z každého hostiteľa vo vašom inventárnom súbore.
2) Skupinové fakty: Tieto fakty sú prístupné iba konkrétnej skupine hostiteľov alebo skupine hostiteľov.
3) Informácie o hostiteľovi: Tieto fakty sú prístupné iba konkrétnemu hostiteľovi.
V tomto článku vám ukážem, ako pracovať s vlastnými faktami Ansible. Takže poďme na to.
Predpoklady:
Ak si chcete vyskúšať príklady tohto článku,
1) Musíte mať v počítači nainštalovaný program Ansible.
2) Musíte mať aspoň 6 hostiteľov Linuxu nakonfigurovaných na automatizáciu Ansible.
Existuje veľa článkov o LinuxHint venovaných inštalácii Ansible a konfigurácii hostiteľov pre automatizáciu Ansible. V prípade potreby ich môžete skontrolovať.
Nastavenie adresára projektu:
Predtým, ako začneme, vytvorme adresár projektu, aby sme mohli usporiadať súbory projektu.
Vytvorenie adresára projektu zvykové fakty / vo vašom DOMOV adresára, spustite nasledujúci príkaz:
$ mkdir -pv custom-Facts / Playbooks, host_vars, group_vars
Teraz prejdite na ikonu zvykové fakty / adresár takto:
$ cd vlastné fakty /
Vytvorte konfiguračný súbor Ansible zodpovedné.porov v adresári projektu nasledovne:
$ nano zodpovedné.porov
Do nasledujúcich riadkov zadajte svoj zodpovedné.porov spis.
[predvolené hodnoty]inventár = hostitelia
host_key_checking = False
Po dokončení stlačte
Teraz vytvorte súbor zásob Ansible hostitelia v adresári projektu nasledovne:
$ nano hostitelia
Zadajte nasledujúce riadky do súboru hostiteľa inventárny súbor.
vm1.nodekite.comvm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[databáza]
vm [5: 6].nodekite.com
Po dokončení stlačte
Ak chcete uviesť zoznam všetkých dostupných hostiteľov v súbore inventára, spustite nasledujúci príkaz:
$ ansible všetci --list-hostsAko vidíte, v inventárnom súbore mám šesť hostiteľov.
Ak chcete zobraziť zoznam hostiteľov dostupných v serveri web skupiny inventárneho súboru, spustite nasledujúci príkaz:
$ ansible web --list-hostsAko vidíte, mám dvoch hostiteľov (vm3.nodekite.com a vm4.nodekite.com) v web skupina môjho inventárneho súboru.
Ak chcete zobraziť zoznam hostiteľov dostupných v serveri databázy skupiny inventárneho súboru, spustite nasledujúci príkaz:
$ ansible database --list-hostsAko vidíte, mám dvoch hostiteľov (vm5.nodekite.com a vm6.nodekite.com) v databázy skupina môjho inventárneho súboru.
Práca s možnými globálnymi faktami:
V tejto časti vám ukážem, ako definovať možné globálne fakty / premenné v súbore inventára a ako k nim pristupovať zo svojich príručiek Ansible. Ukážem vám tiež, ako definovať globálne fakty / premenné v samostatnom súbore.
Najskôr otvorte hostiteľa inventárny súbor s nasledujúcim príkazom:
$ nano hostitelia
Teraz pridajte označené riadky do súboru hostiteľa inventárny súbor. Po dokončení stlačte
„
Globálne fakty pridávate do všetky: vars oddiel. Tu som pridal web_url globálny fakt.
Teraz vytvorte nový playbook print_global_fact.yaml v knihy o hre / adresár takto:
$ nano playbooks / print_global_fact.yaml
Potom zadajte nasledujúce riadky do súboru print_global_fact.yaml spis.
- hostitelia: všetciužívateľ: zodpovedný
úlohy:
- name: Vytlačiť hodnotu globálneho faktu 'web_url'
ladenie:
msg: 'Webová adresa URL: web_url'
Účelom tejto príručky je vytlačiť web_url globálny fakt.
Po dokončení stlačte
Teraz spustite print_global_fact.yaml príručka takto:
$ ansible-playbook playbooks / print_global_fact.yaml
Ako vidíte, všetci hostitelia v mojom inventárnom súbore majú prístup k globálnemu faktu web_url.
Globálne fakty môžete pridať aj do samostatného súboru. Týmto spôsobom môžete udržiavať súbor so zásobami čistý. Pozrime sa, ako na to.
Najskôr odstráňte globálne fakty z hostiteľa inventárny súbor.
$ nano hostitelia
Teraz odstráňte označené riadky zo súboru inventára a stlačte
Potom vytvorte nový súbor všetko v group_vars / adresár takto:
$ nano group_vars / všetko
Ak chcete pridať globálny fakt web_url, zadajte nasledujúci riadok do poľa group_vars / all spis.
web_url: https: // www.linuxhint.comPo dokončení stlačte
Ak chcete skontrolovať, či máte prístup k globálnemu faktu web_url, spustiť print_global_fact.yaml playbook znova nasledovne:
$ ansible-playbook playbooks / print_global_fact.yaml
Ako vidíte, všetci hostitelia v mojom inventárnom súbore majú prístup k globálnemu faktu web_url.
Fakty o práci s možnými skupinami:
V tejto časti vám ukážem, ako definovať fakty / premenné skupiny Ansible v súbore inventára a ako k nim pristupovať zo svojich kníh Ansible. Ukážem vám tiež, ako definovať skupinové fakty / premenné v samostatnom súbore.
Najskôr otvorte hostiteľa inventárny súbor s nasledujúcim príkazom:
$ nano hostitelia
Ak máte hostiteľskú skupinu skupina1, potom pridáte fakty alebo premenné skupiny pre túto hostiteľskú skupinu do a skupina1: vars časť inventárneho súboru.
[skupina1]…
[skupina 1: vars]
premenná1 = hodnota1
premenná2 = hodnota2
Napríklad pridať skupinové fakty / premenné doménové meno a databázové_zakončenia pre web hostiteľskej skupiny, môžete napísať do označených riadkov v súbore inventára.
Po dokončení stlačte
Ak chcete vytlačiť a otestovať, či máme prístup k faktom o skupine, vytvorte nový playbook print_group_facts.yaml v knihy o hre / adresár takto:
$ nano playbooks / print_group_facts.yaml
Zadajte nasledujúce riadky do súboru print_group_facts.yaml spis.
- hostitelia: webužívateľ: zodpovedný
úlohy:
- názov: Vytlačiť údaje o skupine
ladenie:
msg: 'Domain Name: domain_name Database Backend: database_backend' '
Po dokončení stlačte
Teraz spustite print_group_facts.yaml príručka takto:
$ ansible-playbook playbooks / print_group_facts.yaml
Ako vidíte, hostitelia v web skupina má prístup k súboru doménové meno a backend databázy skupinové fakty / premenné.
Teraz poďme vyčistiť inventárny súbor a uvidíme, ako pridať skupinové fakty / premenné do samostatného súboru.
Najskôr otvorte hostiteľa nasledujúci inventárny súbor:
$ nano fakty
Odstráňte označené čiary z hostiteľa inventárny súbor. Po dokončení stlačte
Keď pridávame skupinové premenné pre web hostiteľská skupina, vytvorte nový súbor web (rovnaký ako názov skupiny) v group_vars / adresár takto:
$ nano group_vars / web
Ak chcete pridať skupinové fakty doménové meno a backend databázy pre web hostiteľská skupina, pridajte nasledujúce riadky do súboru group_vars / web spis.
názov_domény: web.linuxhint.combackend databázy: pgsql
Po dokončení stlačte
Ak chcete skontrolovať, či hostitelia v web skupina môže získať prístup k skupinovým skutočnostiam, spustiť print_group_facts.yaml príručka takto:
$ ansible-playbook playbooks / print_group_facts.yaml
Ako vidíte, hostitelia v web skupina má prístup k súboru doménové meno a backend databázy skupinové fakty / premenné.
Práca s možnými faktami o hostiteľovi:
V tejto časti vám ukážem, ako definovať fakty / premenné hostiteľa Ansible v súbore inventára a ako k nim pristupovať zo svojich kníh Ansible. Ukážem vám tiež, ako definovať fakty alebo premenné hostiteľa v samostatnom súbore.
Najskôr otvorte hostiteľa inventárny súbor s nasledujúcim príkazom:
$ nano hostitelia
Fakty / premenné hostiteľa môžete pridať za názov DNS alebo IP adresu hostiteľa do súboru inventára takto:
www.doména1.com premenná1 = hodnota1 premenná2 = hodnota2192.168.22.2 premenná1 = hodnota3 premenná2 = hodnota4
Môžete napríklad pridať fakty alebo premenné hostiteľa doménové meno a backend databázy pre hostiteľov vm3.nodekite.com a vm4.nodekite.com, ako je vyznačené na snímke obrazovky nižšie.
Všimnite si, že hodnota doménové meno a backend databázy fakty / premenné sú pre každého hostiteľa odlišné.
Po dokončení pridávania skutočností / premenných hostiteľa stlačte
Pretože som pridal rovnaké fakty / premenné ako v príklade skupiny fakty / premenné, môžeme použiť print_group_facts.yaml príručka na testovanie prístupnosti aj týchto skutočností / premenných.
Spustiť print_group_facts.yaml príručka takto:
$ ansible-playbook playbooks / print_group_facts.yaml
Ako vidíte, fakty alebo premenné o hostiteľovi sú prístupné ich určenému hostiteľovi. Hodnoty sa tiež líšia pre každého hostiteľa.
Pretože každý z hostiteľov je v mojom inventárnom súbore v samostatnom riadku, mohol by som do svojho inventárneho súboru ľahko pridať fakty / premenné hostiteľa. Ak však používate rozsahy na definovanie hostiteľov v súbore inventára tak, ako je to vyznačené na snímke obrazovky nižšie, nemôžete pridať fakty alebo premenné hostiteľa, ako je tento.
Fakty / premenné hostiteľa môžete pridať do samostatného súboru, rovnako ako ste to urobili pre globálne a skupinové fakty / premenné.
Ak chcete pridať hostiteľa fakty / premenné pre vm5.nodekite.com hostiteľ, vytvorte nový súbor vm5.nodekite.com (rovnaký ako názov DNS hostiteľa) v priečinku host_vars / adresár takto:
$ nano host_vars / vm5.nodekite.com
Môžete pridať hostiteľa fakty / premenné db_port a názov_db pre hostiteľa vm5.nodekite.com s nasledujúcimi riadkami.
db_port: 3306db_name: demo1
Po dokončení stlačte
Rovnakým spôsobom môžete pridať hostiteľa fakty / premenné vm6.nodekite.com, vytvoriť nový súbor vm6.nodekite.com v host_vars / adresár takto:
$ nano host_vars / vm6.nodekite.com
Môžete pridať hostiteľa fakty / premenné db_port a názov_db pre hostiteľa vm6.nodekite.com s nasledujúcimi riadkami.
db_port: 8877db_name: app1
Po dokončení stlačte
Ak chcete vytlačiť a otestovať, či máme prístup k skutočnostiam / premenným hostiteľa, vytvorte nový playbook print_host_facts.yaml v knihy o hre / adresár takto:
$ nano playbooks / print_host_facts.yaml
Teraz zadajte nasledujúce riadky do súboru print_host_facts.yaml spis.
- hostitelia: databázaužívateľ: zodpovedný
úlohy:
- názov: Vytlačiť fakty o hostiteľovi
ladenie:
msg: 'Názov databázy: db_name Port databázy: db_port'
Po dokončení stlačte
Ak chcete skontrolovať, či je hostiteľ vm5.nodekite.com a vm6.nodekite.com môže pristupovať k skutočnostiam / premenným hostiteľa, spustiť print_host_facts.yaml príručka takto:
$ ansible-playbook playbooks / print_host_facts.yaml
Ako vidíte, hostitelia vm5.nodekite.com a vm6.nodekite.com má prístup k súboru názov_db a db_port hostiteľské fakty / premenné.
Dáme všetko dohromady: možné fakty prednosť
V tejto časti budem hovoriť o možnej skutočnosti / premennej prednosti. Takže poďme na to.
Než začneme, vyčistíme inventárny súbor.
Otvor hostiteľa inventárny súbor s nasledujúcim príkazom:
$ nano hostitelia
Odstráňte označenú časť zo súboru inventára.
Takto by mal v tomto okamihu vyzerať váš inventárny súbor.
Teraz pridajte označený riadok do súboru inventára. Tieto riadky pridávajú globálne fakty / premenné skutočnosť_oblasť a prístav.
Potom pridajte označené riadky do súboru inventára. Tieto riadky pridávajú znak skutočnosť_oblasť a prístav fakty / premenné pre hostiteľov v serveri databázy skupina.
Nakoniec pridajte skutočnosť_oblasť a prístav hostiteľské fakty / premenné pre vm3.nodekite.com a vm4.nodekite.com hostitelia, ako je to vyznačené na snímke obrazovky nižšie.
Po dokončení stlačte
Ak chcete vytlačiť hodnotu globálnych, skupinových a hostiteľských faktov / premenných, vytvorte nový playbook skutočnosť_prednosť.yaml v knihy o hre / adresár takto:
$ nano playbooks / fact_precedence.yaml
Zadajte nasledujúce riadky do súboru skutočnosť_prednosť.yaml spis.
- hostitelia: všetciužívateľ: zodpovedný
úlohy:
- názov: Vytlačiť všetky fakty
ladenie:
msg: 'Fact Scope: fact_scope Port: port'
Po dokončení stlačte
Ak chcete vytlačiť globálne, skupinové a hostiteľské fakty / premenné, spustite skutočnosť_prednosť.yaml príručka takto:
$ ansible-playbook playbooks / fact_precedence.yaml
Ako vidíte, vytlačia sa globálne, skupinové a hostiteľské fakty / premenné.
Všimnite si, že skupinové fakty / premenné nahradili globálne fakty / premenné (1). Všimnite si tiež, že hostiteľské fakty / premenné nahradili skupinové aj globálne fakty / premenné (2).
Skutočnosť / premenná prednosť príspevku Ansible je nasledovná:
Hostiteľský fakt> Skupinový fakt> Globálny faktZáver:
Po prečítaní tohto článku by ste mali byť schopní pohodlne pracovať s globálnymi, skupinovými a hostiteľskými faktami / premennými. Pamätajte na prednosť anible custom fact. Pomôže vám to ľahšie odladiť vaše hracie knižky Ansible.