Az Ansible háromféle egyedi tényt definiálhat.
1) Globális tények: Ezek a tények a készletfájl minden állomásán elérhetők.
2) A csoport tényei: Ezek a tények csak egy adott gazdagépcsoportból vagy egy gazdagépcsoportból érhetők el.
3) Fogadó tények: Ezek a tények csak egy adott gazdagéptől érhetők el.
Ebben a cikkben megmutatom, hogyan kell működni az Ansible egyéni tényekkel. Tehát kezdjük.
Előfeltételek:
Ha ki szeretné próbálni a cikk példáit,
1) A számítógépére telepítve kell lennie az Ansible programnak.
2) Legalább 6 Linux hosztnak kell konfigurálnia az Ansible automatizáláshoz.
A LinuxHint-en számos cikk foglalkozik az Ansible telepítésével és a gazdagépek konfigurálásával az Ansible automatizáláshoz. Szükség esetén megnézheti őket.
Projektkönyvtár beállítása:
Mielőtt elkezdenénk, hozzunk létre egy projekt könyvtárat, hogy rendezhessük a projekt fájljainkat.
Projekt könyvtár létrehozása egyedi tények / a te ITTHON könyvtárba, futtassa a következő parancsot:
$ mkdir -pv egyéni tények / playbooks, host_vars, group_vars
Most keresse meg a egyedi tények / könyvtárat az alábbiak szerint:
$ cd egyedi tények /
Hozzon létre egy Ansible konfigurációs fájlt lehetséges.vö a projekt könyvtárban az alábbiak szerint:
$ nano ansible.vö
Írja be a következő sorokat a lehetséges.vö fájl.
[alapértelmezések]leltár = hosztok
host_key_checking = Hamis
Ha végzett, nyomja meg a gombot
Most hozzon létre egy Ansible készletfájlt otthont ad a projekt könyvtárban az alábbiak szerint:
$ nano házigazdák
Írja be a következő sorokat a otthont ad leltárfájl.
vm1.nodekite.comvm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[adatbázis]
vm [5: 6].nodekite.com
Ha végzett, nyomja meg a gombot
Az összes elérhető gazdagép felsorolásához a készletfájlban futtassa a következő parancsot:
$ ansible all --list-hostsMint láthatja, hat gazdagép van a készletfájlomban.
A listában elérhető gazdagépek felsorolásához web a készletfájl csoportjához futtassa a következő parancsot:
$ ansible web --list-hostsAmint láthatja, két gépem van (vm3.nodekite.com és vm4.nodekite.com) ban,-ben web a leltárfájlom csoportja.
A listában elérhető gazdagépek felsorolásához adatbázis a készletfájl csoportjához futtassa a következő parancsot:
$ ansible adatbázis - list-hostsAmint láthatja, két gépem van (vm5.nodekite.com és vm6.nodekite.com) ban,-ben adatbázis a leltárfájlom csoportja.
Munka lehetséges globális tényekkel:
Ebben a részben bemutatom, hogyan definiálhatja az Ansible globális tényeket / változókat a készletfájljában, és hogyan érheti el azokat az Ansible playbookokból. Azt is megmutatom, hogyan definiálhatjuk a globális tényeket / változókat egy külön fájlban.
Először nyissa meg a otthont ad leltárfájl a következő paranccsal:
$ nano házigazdák
Most adja hozzá a megjelölt vonalakat a otthont ad leltárfájl. Ha végzett, nyomja meg a gombot
"
Globális tényeket ad hozzá a mind: vars szakasz. Itt adtam hozzá a web_url globális tény.
Hozzon létre egy új játékkönyvet print_global_fact.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:
$ nano playbooks / print_global_fact.yaml
Ezután írja be a következő sorokat a print_global_fact.yaml fájl.
- házigazdák: mindfelhasználó: ansible
feladatok:
- név: A "web_url" globális tény értékének kinyomtatása
hibakeresés:
msg: 'Web URL: web_url'
A játékkönyv célja a web_url globális tény.
Ha végzett, nyomja meg a gombot
Most futtassa a print_global_fact.yaml játékkönyv az alábbiak szerint:
$ ansible-playbook playbooks / print_global_fact.yaml
Amint láthatja, a leltárfájlomban található összes gazdagép hozzáférhet a globális tényhez web_url.
Globális tényeket külön fájlba is felvehet. Így tisztán tarthatja a leltárfájlt. Nézzük meg, hogyan kell csinálni.
Először távolítsuk el a globális tényeket a otthont ad leltárfájl.
$ nano házigazdák
Most távolítsa el a megjelölt sorokat a leltárfájlból, és nyomja meg az gombot
Ezután hozzon létre egy új fájlt minden ban,-ben group_vars / könyvtárat az alábbiak szerint:
$ nano group_vars / all
A globális tény hozzáadásával web_url, írja be a következő sort a group_vars / all fájl.
web_url: https: // www.linuxhint.comHa végzett, nyomja meg a gombot
Annak ellenőrzése, hogy hozzáférhet-e a globális tényhez web_url, futtassa a print_global_fact.yaml játékkönyv a következőképpen:
$ ansible-playbook playbooks / print_global_fact.yaml
Mint láthatja, a leltárfájlomban található összes gazdagép hozzáférhet a globális tényhez web_url.
A csoport lehetséges tényeivel való munka:
Ebben a részben bemutatom, hogyan definiálhatja az Ansible csoport tényeket / változókat a leltárfájljában, és hogyan érheti el azokat az Ansible játékkönyvekből. Azt is megmutatom, hogyan definiálhatjuk a csoportos tényeket / változókat egy külön fájlban.
Először nyissa meg a otthont ad leltárfájl a következő paranccsal:
$ nano házigazdák
Ha van fogadó csoportod csoport1, akkor hozzáad egy csoport tényeket / változókat az adott gazdagéphez az a csoport1: vars szakasz a leltárfájlban.
[csoport1]…
[group1: vars]
változó1 = érték1
változó2 = érték2
Például a csoport tények / változók hozzáadásához domain név és database_backends a web gazdagépcsoportot, beírhatja a készletfájlban a megjelölt sorokat.
Ha végzett, nyomja meg a gombot
Nyomtatáshoz és annak teszteléséhez, hogy hozzáférhetünk-e a csoport tényeihez, hozzon létre egy új játékkönyvet print_group_facts.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:
$ nano playbooks / print_group_facts.yaml
Írja be a következő sorokat a print_group_facts.yaml fájl.
- gazdagépek: webfelhasználó: ansible
feladatok:
- név: Csoporttények nyomtatása
hibakeresés:
msg: 'Domain név: domain_name Adatbázis háttérkép: database_backend'
Ha végzett, nyomja meg a gombot
Most futtassa a print_group_facts.yaml játékkönyv az alábbiak szerint:
$ ansible-playbook playbooks / print_group_facts.yaml
Mint látható, a házigazdák a web csoport elérheti a domain név és database_backend csoport tények / változók.
Most tisztítsuk meg a leltárfájlt, és nézzük meg, hogyan adhatunk hozzá csoportos tényeket / változókat egy külön fájlba.
Először nyissa meg a otthont ad leltárállomány az alábbiak szerint:
$ nano tények
Távolítsa el a megjelölt vonalakat a otthont ad leltárfájl. Ha végzett, nyomja meg a gombot
Ahogy hozzáadunk csoportváltozókat a web gazdagépcsoportot, hozzon létre egy új fájlt web (ugyanaz, mint a csoport neve) a group_vars / könyvtárat az alábbiak szerint:
$ nano group_vars / web
A csoport tényeinek hozzáadása domain név és database_backend a web gazdagépcsoport, adja hozzá a következő sorokat a group_vars / web fájl.
domain_name: web.linuxhint.comdatabase_backend: pgsql
Ha végzett, nyomja meg a gombot
Annak ellenőrzése, hogy a web A csoport elérheti a csoport tényeit, futtathatja a print_group_facts.yaml játékkönyv az alábbiak szerint:
$ ansible-playbook playbooks / print_group_facts.yaml
Mint látható, a házigazdák a web csoport elérheti a domain név és database_backend csoport tények / változók.
Munka lehetséges gazda tényekkel:
Ebben a részben bemutatom, hogyan definiálhatja az Ansible host tényeket / változókat a készletfájljában, és hogyan érheti el azokat az Ansible playbookokból. Azt is megmutatom, hogyan definiálhatja a gazdagép tényeket / változókat egy külön fájlban.
Először nyissa meg a otthont ad leltárfájl a következő paranccsal:
$ nano házigazdák
A készletfájlban a gazdagép DNS-neve vagy IP-címe után adhatja hozzá a gazdagép tényeit / változóit az alábbiak szerint:
www.domain1.com változó1 = érték1 változó2 = érték2192.168.22.2 változó1 = érték3 változó2 = érték4
Például felveheti a gazdagép tényeit / változóit domain név és database_backend a házigazdáknak vm3.nodekite.com és vm4.nodekite.com, az alábbi képernyőképen jelölt módon.
Figyelje meg, hogy a domain név és database_backend a tények / változók minden gazdagép esetében eltérőek.
Ha elkészült a gazdagép / változók hozzáadásával, nyomja meg a gombot
Mivel ugyanazokat a tényeket / változókat adtam hozzá, mint a csoport tények / változók példában, használhatjuk a print_group_facts.yaml játékkönyv e tények / változók hozzáférhetőségének tesztelésére is.
Futtassa a print_group_facts.yaml játékkönyv az alábbiak szerint:
$ ansible-playbook playbooks / print_group_facts.yaml
Amint láthatja, a gazdagép tényei / változói hozzáférhetők a megadott gazdagéphez. Az értékek minden gazdagép esetében is eltérőek.
Mivel a gazdagépek mindegyike külön sorban található a készletfájlomban, könnyen hozzáadhatom a gazdagép tényeit / változóit a készletfájlomba. De ha tartományokat használ a gazdagépek meghatározásához a készletfájlban, az alábbi képernyőképen jelölve, akkor nem adhat hozzá ilyen gazdagép-tényeket / változókat.
Fogadó tényeket / változókat külön fájlba is felvehet, csakúgy, mint a globális és csoportos tények / változók esetében.
Gazdatények / változók hozzáadása a vm5.nodekite.com gazdagép, hozzon létre egy új fájlt vm5.nodekite.com (ugyanaz, mint a gazdagép DNS-neve) a host_vars / könyvtárat az alábbiak szerint:
$ nano host_vars / vm5.nodekite.com
Hozzáadhatja a gazdagép tényeit / változóit db_port és db_name a házigazda számára vm5.nodekite.com a következő sorokkal.
db_port: 3306db_név: demo1
Ha végzett, nyomja meg a gombot
Ugyanígy hozzá kell adni a gazdagép tényeit / változóit a gazdagéphez vm6.nodekite.com, hozzon létre egy új fájlt vm6.nodekite.com ban,-ben host_vars / könyvtárat az alábbiak szerint:
$ nano host_vars / vm6.nodekite.com
Hozzáadhatja a gazdagép tényeit / változóit db_port és db_name a házigazda számára vm6.nodekite.com a következő sorokkal.
db_port: 8877db_név: app1
Ha végzett, nyomja meg a gombot
Nyomtatáshoz és annak teszteléséhez, hogy hozzáférhetünk-e a gazdagép tényekhez / változókhoz, hozzon létre egy új játékkönyvet print_host_facts.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:
$ nano playbooks / print_host_facts.yaml
Írja be a következő sorokat a print_host_facts.yaml fájl.
- hosztok: adatbázisfelhasználó: ansible
feladatok:
- név: A gazdagép tényeinek nyomtatása
hibakeresés:
msg: 'Adatbázis neve: db_name Adatbázis port: db_port'
Ha végzett, nyomja meg a gombot
Annak ellenőrzésére, hogy a gazdagép vm5.nodekite.com és vm6.nodekite.com hozzáférhet a gazdagép tényekhez / változókhoz, futtathatja a print_host_facts.yaml játékkönyv az alábbiak szerint:
$ ansible-playbook playbooks / print_host_facts.yaml
Mint látható, a házigazdák vm5.nodekite.com és vm6.nodekite.com hozzáférhet a db_name és db_port fogadó tények / változók.
Az összeset összefoglalva: Ansible Facts Precedence
Ebben a részben az Ansible fact / változó elsőbbségről fogok beszélni. Tehát kezdjük.
Mielőtt nekilátnánk, tisztítsuk meg a leltárfájlt.
Nyissa meg a otthont ad leltárfájl a következő paranccsal:
$ nano házigazdák
Távolítsa el a megjelölt szakaszt a készletfájlból.
Így kell kinéznie a készletfájljának ezen a ponton.
Most adja hozzá a megjelölt sort a készletfájljához. Ezek a sorok hozzáadják a globális tényeket / változókat tény_kör és kikötő.
Ezután adja hozzá a megjelölt sorokat a készletfájljához. Ezek a sorok hozzáadják a tény_kör és kikötő tények / változók a adatbázis csoport.
Végül adja hozzá a tény_kör és kikötő fogadó tények / változók a vm3.nodekite.com és vm4.nodekite.com gazdagépek, az alábbi képernyőképen látható módon.
Ha végzett, nyomja meg a gombot
A globális, csoportos és gazda tények / változók értékének kinyomtatásához hozzon létre egy új játékkönyvet tény_precendencia.yaml ban,-ben játékkönyvek / könyvtárat az alábbiak szerint:
$ nano playbooks / fact_precedence.yaml
Írja be a következő sorokat a tény_precedencia.yaml fájl.
- házigazdák: mindfelhasználó: ansible
feladatok:
- név: Minden tény kinyomtatása
hibakeresés:
msg: 'Ténykör: fact_scope Port: port'
Ha végzett, nyomja meg a gombot
A globális, csoportos és gazdagép tények / változók kinyomtatásához futtassa a tény_precedencia.yaml játékkönyv az alábbiak szerint:
$ ansible-playbook playbooks / fact_precedence.yaml
Amint láthatja, a globális, csoportos és gazdagép tények / változók kinyomtatásra kerülnek.
Vegyük észre, hogy a csoportos tények / változók helyettesítették a globális tényeket / változókat (1). Ezenkívül vegye figyelembe, hogy a fogadó tények / változók helyettesítették a csoportos és a globális tényeket / változókat is (2).
Az Ansible tény / változó elsőbbsége a következő:
Host tény> Csoport tény> Globális tényKövetkeztetés:
A cikk elolvasása után képesnek kell lennie arra, hogy kényelmesen dolgozzon az Ansible globális, csoportos és fogadó tényekkel / változókkal. Ne feledje az Ansible egyéni ténybeli elsőbbséget. Ez segít az Ansible játékkönyvek egyszerűbb hibakeresésében.