Du kan definere tre typer brugerdefinerede fakta i Ansible.
1) Globale fakta: Disse fakta er tilgængelige fra alle værter i din beholdningsfil.
2) Gruppefakta: Disse fakta er kun tilgængelige fra et bestemt sæt værter eller en værtsgruppe.
3) Værtsfakta: Disse fakta er kun tilgængelige fra en bestemt vært.
I denne artikel vil jeg vise dig, hvordan du arbejder med Ansible tilpassede fakta. Så lad os komme i gang.
Forudsætninger:
Hvis du vil prøve eksemplerne på denne artikel,
1) Du skal have Ansible installeret på din computer.
2) Du skal have mindst 6 Linux-værter konfigureret til Ansible-automatisering.
Der er mange artikler om LinuxHint dedikeret til installation af Ansible og konfigurering af værter til Ansible-automatisering. Du kan tjekke dem ud, hvis det er nødvendigt.
Opsætning af et projektkatalog:
Lad os oprette en projektmappe, inden vi kommer i gang, så vi kan organisere vores projektfiler.
For at oprette et projektmappe brugerdefinerede fakta / i din HJEM bibliotek, kør følgende kommando:
$ mkdir -pv custom-facts / playbooks, host_vars, group_vars
Naviger nu til brugerdefinerede fakta / katalog som følger:
$ cd brugerdefinerede fakta /
Opret en Ansible konfigurationsfil ansible.cfg i din projektmappe som følger:
$ nano ansible.cfg
Indtast de følgende linjer din ansible.cfg fil.
[standard]beholdning = værter
host_key_checking = Falsk
Når du er færdig, skal du trykke på
Opret nu en Ansible beholdningsfil værter i din projektmappe som følger:
$ nano værter
Indtast følgende linjer i din værtens opgørelsesfil.
vm1.nodekite.comvm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[database]
vm [5: 6].nodekite.com
Når du er færdig, skal du trykke på
For at liste alle de tilgængelige værter i din beholdningsfil skal du køre følgende kommando:
$ ansible all --list-hostsSom du kan se, har jeg seks værter i min beholdningsfil.
For at liste de værter, der er tilgængelige i web gruppe af din beholdningsfil, kør følgende kommando:
$ ansible web - liste-værterSom du kan se, har jeg to værter (vm3.nodekite.com og vm4.nodekite.com) i web gruppe af min beholdningsfil.
For at liste de værter, der er tilgængelige i database gruppe af din beholdningsfil, kør følgende kommando:
$ ansible database - liste-værterSom du kan se, har jeg to værter (vm5.nodekite.com og vm6.nodekite.com) i database gruppe af min beholdningsfil.
Arbejde med synlige globale fakta:
I dette afsnit vil jeg vise dig, hvordan du definerer Ansible globale fakta / variabler i din beholdningsfil og får adgang til dem fra dine Ansible playbooks. Jeg vil også vise dig, hvordan du definerer globale fakta / variabler i en separat fil.
Først skal du åbne værtens opgørelsesfil med følgende kommando:
$ nano værter
Tilføj nu de markerede linjer i din værtens opgørelsesfil. Når du er færdig, skal du trykke på
''
Du tilføjer globale fakta i alle: vars afsnit. Her har jeg tilføjet web_url global kendsgerning.
Opret nu en ny playbook print_global_fact.yaml i legebøger / katalog som følger:
$ nano playbooks / print_global_fact.yaml
Indtast derefter de følgende linjer i print_global_fact.yaml fil.
- værter: allebruger: ansible
opgaver:
- navn: Udskriv værdien af det globale faktum 'web_url'
fejlfinde:
msg: 'Web-URL: web_url'
Formålet med denne playbook er at udskrive web_url global kendsgerning.
Når du er færdig, skal du trykke på
Kør nu print_global_fact.yaml playbook som følger:
$ ansible-playbook playbooks / print_global_fact.yaml
Som du kan se, kan alle værter i min beholdningsfil få adgang til den globale kendsgerning web_url.
Du kan også tilføje globale fakta i en separat fil. På denne måde kan du holde lagerfilen ren. Lad os se, hvordan man gør det.
Lad os først fjerne de globale fakta fra værtens opgørelsesfil.
$ nano værter
Fjern nu de markerede linjer fra lagerfilen, og tryk på
Opret derefter en ny fil alle i gruppe_varsler / katalog som følger:
$ nano group_vars / all
For at tilføje den globale kendsgerning web_url, skriv følgende linje i group_vars / alle fil.
web_url: https: // www.linuxhint.comNår du er færdig, skal du trykke på
For at kontrollere, om du kan få adgang til den globale kendsgerning web_url, køre print_global_fact.yaml playbook igen som følger:
$ ansible-playbook playbooks / print_global_fact.yaml
Som du kan se, kan alle værter i min beholdningsfil få adgang til den globale kendsgerning web_url.
Arbejde med Ansible Group Fakta:
I dette afsnit vil jeg vise dig, hvordan du definerer Ansible gruppefakta / variabler i din beholdningsfil og får adgang til dem fra dine Ansible playbooks. Jeg vil også vise dig, hvordan du definerer gruppefakta / variabler i en separat fil.
Først skal du åbne værtens opgørelsesfil med følgende kommando:
$ nano værter
Hvis du har en værtsgruppe gruppe1, derefter tilføjer du gruppefakta / variabler for den værtsgruppe i en gruppe1: vars sektion af din beholdningsfil.
[gruppe1]..
[gruppe1: vars]
variabel1 = værdi1
variabel2 = værdi2
For eksempel at tilføje gruppens fakta / variabler domænenavn og database_backends til web værtsgruppe, kan du indtaste de markerede linjer i din beholdningsfil.
Når du er færdig, skal du trykke på
For at udskrive og teste, om vi kan få adgang til gruppens fakta, skal du oprette en ny playbook print_group_facts.yaml i legebøger / katalog som følger:
$ nano playbooks / print_group_facts.yaml
Indtast følgende linjer i din print_group_facts.yaml fil.
- værter: webbruger: ansible
opgaver:
- navn: Udskriv gruppefakta
fejlfinde:
msg: 'Domain Name: domain_name Database Backend: database_backend'
Når du er færdig, skal du trykke på
Kør nu print_group_facts.yaml playbook som følger:
$ ansible-playbook playbooks / print_group_facts.yaml
Som du kan se, er værterne i web gruppe har adgang til domænenavn og database_backend gruppefakta / variabler.
Lad os nu rydde op i beholdningsfilen og se, hvordan man tilføjer gruppefakta / variabler i en separat fil.
Først skal du åbne værtens opgørelsesfil som følger:
$ nano fakta
Fjern de markerede linjer fra værtens opgørelsesfil. Når du er færdig, skal du trykke på
Når vi tilføjer gruppevariabler til web værtsgruppe, opret en ny fil web (samme som gruppenavnet) i gruppe_varsler / katalog som følger:
$ nano group_vars / web
For at tilføje gruppens fakta domænenavn og database_backend til web værtsgruppe, tilføj følgende linjer i group_vars / web fil.
domænenavn: web.linuxhint.comdatabase_backend: pgsql
Når du er færdig, skal du trykke på
For at kontrollere, om værterne i web gruppe kan få adgang til gruppens fakta, køre print_group_facts.yaml playbook som følger:
$ ansible-playbook playbooks / print_group_facts.yaml
Som du kan se, er værterne i web gruppe har adgang til domænenavn og database_backend gruppefakta / variabler.
Arbejde med synlige værtsfakta:
I dette afsnit vil jeg vise dig, hvordan du definerer Ansible værtsfaktaer / -variabler i din beholdningsfil og får adgang til dem fra dine Ansible playbooks. Jeg vil også vise dig, hvordan du definerer værtsfakta / variabler i en separat fil.
Først skal du åbne værtens opgørelsesfil med følgende kommando:
$ nano værter
Du kan tilføje værtsfakta / variabler efter DNS-navnet eller IP-adressen på værten i din lagerfil som følger:
www.domæne1.com variabel1 = værdi1 variabel2 = værdi2192.168.22.2 variabel1 = værdi3 variabel2 = værdi4
For eksempel kan du tilføje værtsfakta / variabler domænenavn og database_backend for værterne vm3.nodekite.com og vm4.nodekite.com, som markeret i skærmbilledet nedenfor.
Bemærk, at værdien af domænenavn og database_backend fakta / variabler er forskellige for hver vært.
Når du er færdig med at tilføje værtsfakta / variabler, skal du trykke på
Da jeg har tilføjet de samme fakta / variabler som i gruppens fakta / variabeleksempel, kan vi bruge print_group_facts.yaml playbook for også at teste tilgængeligheden af disse fakta / variabler.
Kør print_group_facts.yaml playbook som følger:
$ ansible-playbook playbooks / print_group_facts.yaml
Som du kan se, er værtsfakta / variabler tilgængelige for deres angivne vært. Værdierne er også forskellige for hver vært.
Da hver af værterne er i en separat linje i min beholdningsfil, kunne jeg nemt tilføje værtsfakta / variabler i min lagerfil. Men hvis du bruger intervaller til at definere værter i din lagerfil som markeret i skærmbilledet nedenfor, kan du ikke tilføje værtsfakta / variabler som den.
Du kan tilføje værtsfaktaer / variabler i en separat fil, ligesom du har gjort for de globale fakta / variabler.
For at tilføje værtsfakta / variabler til vm5.nodekite.com vært, opret en ny fil vm5.nodekite.com (samme som værts-DNS-navnet) i host_vars / katalog som følger:
$ nano host_vars / vm5.nodekite.com
Du kan tilføje værtsfakta / variabler db_port og db_name for værten vm5.nodekite.com med følgende linjer.
db_port: 3306db_name: demo1
Når du er færdig, skal du trykke på
På samme måde at tilføje værtsfakta / variabler til værten vm6.nodekite.com, Opret en ny fil vm6.nodekite.com i host_vars / katalog som følger:
$ nano host_vars / vm6.nodekite.com
Du kan tilføje værtsfakta / variabler db_port og db_name for værten vm6.nodekite.com med følgende linjer.
db_port: 8877db_name: app1
Når du er færdig, skal du trykke på
For at udskrive og teste, om vi kan få adgang til værtsfaktaerne / variablerne, skal du oprette en ny playbook print_host_facts.yaml i legebøger / katalog som følger:
$ nano playbooks / print_host_facts.yaml
Skriv nu de følgende linjer i print_host_facts.yaml fil.
- værter: databasebruger: ansible
opgaver:
- navn: Udskriv værtsfakta
fejlfinde:
msg: 'Database navn: db_name Databaseport: db_port'
Når du er færdig, skal du trykke på
For at kontrollere, om værten vm5.nodekite.com og vm6.nodekite.com kan få adgang til værtsfakta / variabler, køre print_host_facts.yaml playbook som følger:
$ ansible-playbook playbooks / print_host_facts.yaml
Som du kan se, værterne vm5.nodekite.com og vm6.nodekite.com kan få adgang til db_name og db_port vært fakta / variabler.
At sætte det hele sammen: Ansible Fakta forrang
I dette afsnit vil jeg tale om Ansible fakta / variabel forrang. Så lad os komme i gang.
Lad os rydde op i beholdningsfilen, inden vi kommer i gang.
Åbn værtens opgørelsesfil med følgende kommando:
$ nano værter
Fjern det markerede afsnit fra lagerfilen.
Sådan skal din beholdningsfil se ud på dette tidspunkt.
Tilføj nu den markerede linje i din beholdningsfil. Disse linjer tilføjer de globale fakta / variabler fakta_omfang og Havn.
Tilføj derefter de markerede linjer i din beholdningsfil. Disse linjer tilføjer fakta_omfang og Havn fakta / variabler for værterne i database gruppe.
Til sidst tilføj fakta_omfang og Havn værtsfakta / variabler til vm3.nodekite.com og vm4.nodekite.com værter, som markeret i skærmbilledet nedenfor.
Når du er færdig, skal du trykke på
For at udskrive værdien af de globale fakta / variabler, gruppe og vært skal du oprette en ny playbook fakta_tilstedeværelse.yaml i legebøger / katalog som følger:
$ nano playbooks / fact_precedence.yaml
Indtast følgende linjer i fact_precedence.yaml fil.
- værter: allebruger: ansible
opgaver:
- navn: Udskriv alle fakta
fejlfinde:
msg: 'Faktaomfang: fact_scope Havn: port'
Når du er færdig, skal du trykke på
For at udskrive de globale fakta / variabler, grupper og værter skal du køre fact_precedence.yaml playbook som følger:
$ ansible-playbook playbooks / fact_precedence.yaml
Som du kan se, udskrives de globale, gruppe- og værtsfaktaer / -variabler.
Bemærk, at gruppens fakta / variabler erstattede de globale fakta / variabler (1). Bemærk også, at værtsfakta / -variabler erstattede både gruppe- og globale fakta / variabler (2).
Faktisk / variabel forrang for Ansible er som følger:
Værtsfakta> Gruppefakta> Globale faktaKonklusion:
Efter at have læst denne artikel, skal du være i stand til komfortabelt at arbejde med Ansible globale, gruppe- og værtsfakta / variabler. Husk Ansible brugerdefinerede faktiske forrang. Det hjælper dig med at fejle dine Ansible-playbøger lettere.