Du kan definere tre typer tilpassede fakta i Ansible.
1) Globale fakta: Disse fakta er tilgjengelige fra alle verter i lagerfilen din.
2) Gruppefakta: Disse fakta er bare tilgjengelige fra et bestemt sett med verter eller en vertsgruppe.
3) Vertfakta: Disse fakta er bare tilgjengelige fra en bestemt vert.
I denne artikkelen skal jeg vise deg hvordan du jobber med Ansible tilpassede fakta. Så la oss komme i gang.
Forutsetninger:
Hvis du vil prøve eksemplene på denne artikkelen,
1) Du må ha Ansible installert på datamaskinen din.
2) Du må ha minst 6 Linux-verter konfigurert for Ansible automatisering.
Det er mange artikler om LinuxHint dedikert til å installere Ansible og konfigurere verter for Ansible automatisering. Du kan sjekke dem ut om nødvendig.
Sette opp en prosjektkatalog:
Før vi begynner, la oss lage en prosjektkatalog slik at vi kan organisere prosjektfilene våre.
Å lage en prosjektkatalog tilpassede fakta / i din HJEM katalog, kjør følgende kommando:
$ mkdir -pv custom-facts / playbooks, host_vars, group_vars
Nå, naviger til tilpassede fakta / katalog som følger:
$ cd tilpassede fakta /
Opprett en Ansible-konfigurasjonsfil ansible.cfg i prosjektkatalogen din som følger:
$ nano ansible.cfg
Skriv inn følgende linjer din ansible.cfg fil.
[standard]inventar = verter
host_key_checking = Usann
Når du er ferdig, trykk
Opprett nå en Ansible beholdningsfil verter i prosjektkatalogen din som følger:
$ nano verter
Skriv inn følgende linjer i vertens inventarfil.
vm1.nodekite.comvm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[database]
vm [5: 6].nodekite.com
Når du er ferdig, trykk
For å liste alle tilgjengelige verter i lagerfilen din, kjør følgende kommando:
$ ansible all - list-hostsSom du kan se, har jeg seks verter i beholdningsfilen min.
For å liste vertene som er tilgjengelige i nett gruppe av lagerfilen din, kjør følgende kommando:
$ ansible web - liste-verterSom du ser har jeg to verter (vm3.nodekite.com og vm4.nodekite.com) i nett gruppe av beholdningsfilen min.
For å liste vertene som er tilgjengelige i database gruppe av lagerfilen din, kjør følgende kommando:
$ ansible database - list-hostsSom du ser, har jeg to verter (vm5.nodekite.com og VM 6.nodekite.com) i database gruppe av beholdningsfilen min.
Arbeide med Ansible Global Facts:
I denne delen skal jeg vise deg hvordan du definerer Ansible globale fakta / variabler i lagerfilen din og får tilgang til dem fra Ansible-spillbøker. Jeg vil også vise deg hvordan du definerer globale fakta / variabler i en egen fil.
Først åpner du vertens inventarfil med følgende kommando:
$ nano verter
Legg nå til de markerte linjene i vertens inventarfil. Når du er ferdig, trykk
'
Du legger til globale fakta i alle: vars seksjon. Her har jeg lagt til web_url globalt faktum.
Lag nå en ny lekebok print_global_fact.yaml i lekebøker / katalog som følger:
$ nano playbooks / print_global_fact.yaml
Skriv deretter inn følgende linjer i print_global_fact.yaml fil.
- verter: allebruker: ansible
oppgaver:
- navn: Skriv ut verdien av det globale faktumet 'web_url'
feilsøke:
msg: 'Nettadresse: web_url'
Formålet med denne lekeboken er å skrive ut web_url globalt faktum.
Når du er ferdig, trykk
Kjør nå print_global_fact.yaml spillbok som følger:
$ ansible-playbook playbooks / print_global_fact.yaml
Som du kan se, har alle vertene i lagerfilen min tilgang til det globale faktum web_url.
Du kan også legge til globale fakta i en egen fil. På denne måten kan du holde beholdningsfilen ren. La oss se hvordan vi gjør det.
La oss først fjerne de globale fakta fra vertens inventarfil.
$ nano verter
Fjern nå de merkede linjene fra lagerfilen og trykk
Opprett deretter en ny fil alle i group_vars / katalog som følger:
$ nano group_vars / all
For å legge til det globale faktum web_url, skriv inn følgende linje i group_vars / alle fil.
web_url: https: // www.linuxhint.comNår du er ferdig, trykk
For å sjekke om du kan få tilgang til det globale faktum web_url, kjør print_global_fact.yaml spillbok igjen som følger:
$ ansible-playbook playbooks / print_global_fact.yaml
Som du kan se, har alle vertene i lagerfilen min tilgang til det globale faktum web_url.
Arbeide med Ansible Group Facts:
I denne seksjonen skal jeg vise deg hvordan du definerer Ansible gruppefakta / -variabler i lagerfilen din og får tilgang til dem fra dine Ansible-spillbøker. Jeg vil også vise deg hvordan du definerer gruppefakta / variabler i en egen fil.
Først åpner du vertens inventarfil med følgende kommando:
$ nano verter
Hvis du har en vertsgruppe gruppe1, så legger du til gruppefakta / variabler for den vertsgruppen i en gruppe1: vars delen av beholdningsfilen din.
[gruppe1]..
[gruppe1: vars]
variabel1 = verdi1
variabel2 = verdi2
For eksempel for å legge til gruppens fakta / variabler domenenavn og database_backends for nett vertsgruppe, kan du skrive inn de merkede linjene i lagerfilen.
Når du er ferdig, trykk
For å skrive ut og teste om vi kan få tilgang til gruppens fakta, opprett en ny lekebok utskriftsgruppefakta.yaml i lekebøker / katalog som følger:
$ nano playbooks / print_group_facts.yaml
Skriv inn følgende linjer i utskriftsgruppefakta.yaml fil.
- verter: webbruker: ansible
oppgaver:
- navn: Skriv ut gruppefakta
feilsøke:
msg: 'Domain Name: domain_name Database Backend: database_backend'
Når du er ferdig, trykk
Kjør nå utskriftsgruppefakta.yaml spillbok som følger:
$ ansible-playbook playbooks / print_group_facts.yaml
Som du kan se, er vertene i nett gruppen har tilgang til domenenavn og database_backend gruppefakta / variabler.
La oss nå rydde opp i inventarfilen og se hvordan du legger til gruppefakta / variabler i en egen fil.
Først åpner du vertens inventarfil som følger:
$ nano fakta
Fjern de merkede linjene fra vertens inventarfil. Når du er ferdig, trykk
Når vi legger til gruppevariabler for nett vertsgruppe, opprett en ny fil nett (samme som gruppenavnet) i group_vars / katalog som følger:
$ nano group_vars / web
For å legge til gruppens fakta domenenavn og database_backend for nett vertsgruppe, legg til følgende linjer i group_vars / web fil.
domain_name: web.linuxhint.comdatabase_backend: pgsql
Når du er ferdig, trykk
For å sjekke om vertene i nett gruppen kan få tilgang til gruppens fakta, kjøre utskriftsgruppefakta.yaml spillbok som følger:
$ ansible-playbook playbooks / print_group_facts.yaml
Som du kan se, er vertene i nett gruppen har tilgang til domenenavn og database_backend gruppefakta / variabler.
Arbeide med fakta om synlige verter:
I denne delen skal jeg vise deg hvordan du definerer Ansible vertsfakta / -variabler i beholdningsfilen din og får tilgang til dem fra Ansible-playbooks. Jeg vil også vise deg hvordan du definerer vertsfakta / variabler i en egen fil.
Først åpner du vertens inventarfil med følgende kommando:
$ nano verter
Du kan legge til vertsfakta / -variabler etter DNS-navnet eller IP-adressen til verten i lagerfilen din som følger:
www.domene1.com variabel1 = verdi1 variabel2 = verdi2192.168.22.2 variabel1 = verdi3 variabel2 = verdi4
For eksempel kan du legge til fakta / variabler for verten domenenavn og database_backend for vertene vm3.nodekite.com og vm4.nodekite.com, som markert i skjermbildet nedenfor.
Legg merke til at verdien av domenenavn og database_backend fakta / variabler er forskjellige for hver vert.
Når du er ferdig med å legge til fakta / variabler for verten, trykker du på
Ettersom jeg har lagt til de samme fakta / variablene som i eksempelet på gruppe fakta / variabler, kan vi bruke utskriftsgruppefakta.yaml spillbok for å teste tilgjengeligheten av disse fakta / variablene også.
Kjør utskriftsgruppefakta.yaml spillbok som følger:
$ ansible-playbook playbooks / print_group_facts.yaml
Som du kan se, er vertsfakta / -variabler tilgjengelige for den angitte verten. Verdiene er forskjellige for hver vert også.
Siden hver av vertene er i en egen linje i lagerfilen min, kan jeg enkelt legge til vertsfakta / variabler i lagerfilen min. Men hvis du bruker områder for å definere verter i lagerfilen din som markert i skjermbildet nedenfor, kan du ikke legge til vertsfakta / -variabler som den.
Du kan legge til vertsfakta / -variabler i en egen fil, akkurat som du har gjort for globale og gruppefakta / -variabler.
For å legge til vertsfakta / -variabler for vm5.nodekite.com vert, opprett en ny fil vm5.nodekite.com (samme som verts-DNS-navnet) i host_vars / katalog som følger:
$ nano host_vars / vm5.nodekite.com
Du kan legge til vertsfakta / -variabler db_port og db_name for verten vm5.nodekite.com med følgende linjer.
db_port: 3306db_name: demo1
Når du er ferdig, trykk
På samme måte, for å legge til vertsfakta / variabler for verten VM 6.nodekite.com, opprette en ny fil VM 6.nodekite.com i host_vars / katalog som følger:
$ nano host_vars / vm6.nodekite.com
Du kan legge til vertsfakta / -variabler db_port og db_name for verten VM 6.nodekite.com med følgende linjer.
db_port: 8877db_name: app1
Når du er ferdig, trykk
For å skrive ut og teste om vi kan få tilgang til vertsfaktaene / variablene, lager du en ny spillbok print_host_facts.yaml i lekebøker / katalog som følger:
$ nano playbooks / print_host_facts.yaml
Skriv inn følgende linjer i print_host_facts.yaml fil.
- verter: databasebruker: ansible
oppgaver:
- navn: Skriv ut fakta for verten
feilsøke:
msg: 'Databasenavn: db_name Databaseport: db_port'
Når du er ferdig, trykk
For å sjekke om verten vm5.nodekite.com og VM 6.nodekite.com kan få tilgang til vertsfakta / -variabler, kjøre print_host_facts.yaml spillbok som følger:
$ ansible-playbook playbooks / print_host_facts.yaml
Som du kan se, er vertene vm5.nodekite.com og VM 6.nodekite.com kan få tilgang til db_name og db_port vert fakta / variabler.
Sette det hele sammen: Ansible Facts Precedence
I denne delen skal jeg snakke om Ansible fakta / variabel forrang. Så la oss komme i gang.
La oss rydde opp i inventarfilen før vi begynner.
Åpne vertens inventarfil med følgende kommando:
$ nano verter
Fjern den merkede delen fra lagerfilen.
Slik skal beholdningsfilen din se ut på dette punktet.
Legg nå til den markerte linjen i lagerfilen. Disse linjene legger til de globale fakta / variablene fakta_omfang og havn.
Deretter legger du til de merkede linjene i lagerfilen. Disse linjene legger til fakta_omfang og havn fakta / variabler for vertene i database gruppe.
Til slutt, legg til fakta_omfang og havn vert fakta / variabler for vm3.nodekite.com og vm4.nodekite.com verter, som markert i skjermbildet nedenfor.
Når du er ferdig, trykk
For å skrive ut verdien av globale, gruppe- og vertsfakta / -variabler, opprett en ny spillbok fakta_ tilstedeværelse.yaml i lekebøker / katalog som følger:
$ nano playbooks / fact_precedence.yaml
Skriv inn følgende linjer i fakta_precedence.yaml fil.
- verter: allebruker: ansible
oppgaver:
- navn: Skriv ut alle fakta
feilsøke:
msg: 'Faktaomfang: fact_scope Port: port'
Når du er ferdig, trykk
For å skrive ut fakta / variabler for global, gruppe og vert, kjør fakta_precedence.yaml spillbok som følger:
$ ansible-playbook playbooks / fact_precedence.yaml
Som du kan se, skrives globale, gruppe- og vertsfakta / -variabler ut.
Legg merke til at gruppens fakta / variabler erstattet de globale fakta / variablene (1). Legg også merke til at vertsfaktaene / -variablene erstattet både gruppen og globale fakta / variabler (2).
Faktisk / variabel forrang for Ansible er som følger:
Vertfakta> Gruppefakta> Globalt faktumKonklusjon:
Etter å ha lest denne artikkelen, bør du kunne arbeide komfortabelt med Ansible globale, gruppe- og vertsfakta / -variabler. Husk Ansible tilpassede fakta forrang. Det vil hjelpe deg med å feilsøke Ansible-spillbøkene dine lettere.