Du kan definere tre typer tilpassede fakta i Ansible.
1) Globale fakta: Disse fakta er tilgjengelige fra hver vert i varelagerfilen din.
2) Gruppefakta: Disse fakta er bare tilgjengelige fra et spesifikt sett med verter eller en vertsgruppe.
3) Vertsfakta: Disse fakta er bare tilgjengelige fra en bestemt vert.
I denne artikkelen skal jeg vise deg hvordan du jobber med skarpe 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 som er konfigurert for ANSIBLE Automation.
Det er mange artikler om Linuxhint dedikert til å installere Ansible og konfigurere verter for Ansible Automation. Du kan sjekke dem ut om nødvendig.
Sette opp en prosjektkatalog:
Før vi kommer i gang, la oss lage en prosjektkatalog slik at vi kan organisere prosjektfilene våre.
For å lage en prosjektkatalog skreddersydde/ i din HJEM Katalog, kjør følgende kommando:
$ mkdir -pv Custom -Facts/Playbooks, Host_Vars, Group_Vars
Naviger nå til skreddersydde/ 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.
[standardverdier]Når du er ferdig, trykk + X etterfulgt av Y og For å redde Ansible.CFG konfigurasjonsfil.
Lag nå en Ansible Inventory -fil verter I prosjektkatalogen din som følger:
$ Nano -verter
Skriv inn følgende linjer i din Vertens Inventarfil.
VM1.Nodekite.comNår du er ferdig, trykk + X etterfulgt av Y og For å redde verter Inventarfil.
For å liste opp alle tilgjengelige verter i varelagerfilen din, kjør følgende kommando:
$ ansible alle-liste-verter
Som du ser har jeg seks verter i lagerfilen min.
For å liste vertene som er tilgjengelige i Web Gruppe av lagerfilen din, kjør følgende kommando:
$ ansible web-list-verter
Som du ser har jeg to verter (VM3.Nodekite.com og VM4.Nodekite.com) i Web gruppe av lagerfilen min.
For å liste vertene som er tilgjengelige i database Gruppe av lagerfilen din, kjør følgende kommando:
$ ansible database-liste-verter
Som du ser har jeg to verter (VM5.Nodekite.com og VM 6.Nodekite.com) i database gruppe av lagerfilen min.
Arbeide med Ansible globale fakta:
I denne delen skal jeg vise deg hvordan du kan definere Ansible Global Facts/Variables i lagerfilen din og få tilgang til dem fra Ansible Playbooks. Jeg vil også vise deg hvordan du kan definere globale fakta/variabler i en egen fil.
Først, åpne Vertens Lagerfil med følgende kommando:
$ Nano -verter
Legg nå de merkede linjene i din Vertens Inventarfil. Når du er ferdig, trykk + X etterfulgt av Y og For å lagre filen.
'
Du legger til globale fakta i Alle: vars seksjon. Her har jeg lagt til web_url Globalt faktum.
Lag nå en ny spillbok print_global_fact.Yaml i Playbooks/ Katalog som følger:
$ nano playbooks/print_global_fact.YamlSkriv deretter inn følgende linjer i print_global_fact.Yaml fil.
- Verter: AlleHensikten med denne spillboken er å skrive ut web_url Globalt faktum.
Når du er ferdig, trykk + X etterfulgt av Y og For å redde print_global_fact.Yaml fil.
Nå, løp print_global_fact.Yaml Playbook som følger:
$ Ansible-Playbook Playbooks/print_global_fact.YamlSom du kan se, kan alle vertene i lagerfilen min få 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 varelagerfilen 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 inventarfilen og trykk + X, etterfulgt av Y og For å lagre varelagerfilen.
Opprett deretter en ny fil alle i gruppe_vars/ Katalog som følger:
$ nano group_vars/alle
For å legge til det globale faktum web_url, Skriv inn følgende linje i GRUPPE_VARS/ALL fil.
web_url: https: // www.Linuxhint.com
Når du er ferdig, trykk + X etterfulgt av Y og For å redde GRUPPE_VARS/ALL fil.
For å sjekke om du får tilgang til det globale faktum web_url, Kjør print_global_fact.Yaml Playbook igjen som følger:
$ Ansible-Playbook Playbooks/print_global_fact.YamlSom du kan se, kan alle vertene i lagerfilen min få tilgang til det globale faktum web_url.
Arbeider med FAKTA FAKTA:
I dette avsnittet skal jeg vise deg hvordan du kan definere Ansible Group Facts/Variables i lagerfilen din og få tilgang til dem fra Ansible Playbooks. Jeg vil også vise deg hvordan du kan definere gruppefakta/variabler i en egen fil.
Først, åpne Vertens Lagerfil 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 varelagerfilen din.
[gruppe1]For eksempel for å legge til gruppefakta/variabler domenenavn og Database_backends for Web Vertsgruppe, du kan skrive inn de merkede linjene i varelagerfilen.
Når du er ferdig, trykk + X etterfulgt av Y og For å lagre varelagerfilen.
For å skrive ut og teste om vi får tilgang til gruppefakta, oppretter du en ny spillbok print_group_facts.Yaml i Playbooks/ Katalog som følger:
$ nano playbooks/print_group_facts.YamlSkriv inn følgende linjer i din print_group_facts.Yaml fil.
- Verter: WebNår du er ferdig, trykk + X etterfulgt av Y og For å redde print_group_facts.Yaml fil.
Nå, løp print_group_facts.Yaml Playbook som følger:
$ ansible-playbook playbooks/print_group_facts.YamlSom du kan se, vertene i Web Gruppe kan få tilgang til domenenavn og Database_backend gruppefakta/variabler.
La oss nå rydde opp i varelagerfilen og se hvordan du legger til gruppefakta/variabler i en egen fil.
Først, åpne Vertens Varebeholdningsfilen som følger:
$ nano fakta
Fjern de merkede linjene fra Vertens Inventarfil. Når du er ferdig, trykk + X etterfulgt av Y og For å redde verter Inventarfil.
Når vi legger til gruppevariabler for Web vertsgruppe, oppretter en ny fil Web (samme som gruppenavnet) i gruppe_vars/ Katalog som følger:
$ nano group_vars/web
For å legge til gruppefakta domenenavn og Database_backend for Web vertsgruppe, legg til følgende linjer i group_vars/web fil.
Domain_name: Web.Linuxhint.comNår du er ferdig, trykk + X etterfulgt av Y og For å redde group_vars/web fil.
For å sjekke om vertene i Web Gruppe kan få tilgang til gruppefakta, kjøre print_group_facts.Yaml Playbook som følger:
$ ansible-playbook playbooks/print_group_facts.YamlSom du kan se, vertene i Web Gruppe kan få tilgang til domenenavn og Database_backend gruppefakta/variabler.
Arbeide med Ansible vertsfakta:
I dette avsnittet skal jeg vise deg hvordan du kan definere Ansible Host Facts/Variables i varelagerfilen din og få tilgang til dem fra Ansible Playbooks. Jeg vil også vise deg hvordan du kan definere vertsfakta/variabler i en egen fil.
Først, åpne Vertens Lagerfil med følgende kommando:
$ Nano -verter
Du kan legge til vertsfakta/variabler etter DNS -navnet eller IP -adressen til verten i varelagerfilen din som følger:
www.Domain1.com variabel1 = verdi1 variabel2 = verdi2Du kan for eksempel legge til vertsfakta/variabler domenenavn og Database_backend for vertene VM3.Nodekite.com og VM4.Nodekite.com, Som merket på 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 vertsfakta/variabler, trykk + X, etterfulgt av Y og For å redde Vertens Inventarfil.
Ettersom jeg har lagt til de samme fakta/variabler som i gruppens fakta/variabler, kan vi bruke print_group_facts.Yaml Playbook for å teste tilgjengeligheten til disse fakta/variabler også.
Kjør print_group_facts.Yaml Playbook som følger:
$ ansible-playbook playbooks/print_group_facts.YamlSom du kan se, er vertsfakta/variabler tilgjengelige for deres spesifiserte vert. Verdiene er også forskjellige for hver vert.
Siden hver av vertene er i en egen linje i lagerfilen min, kan jeg lett legge til vertsfakta/variabler i lagerfilen min. Men hvis du bruker områder for å definere verter i varelagerfilen din som merket i skjermbildet nedenfor, kan du ikke legge til vertsfakta/variabler som det.
Du kan legge til vertsfakta/variabler i en egen fil, akkurat som du har gjort for de globale og gruppefakta/variablene.
For å legge til vertsfakta/variabler for VM5.Nodekite.com Vert, lag en ny fil VM5.Nodekite.com (samme som verten DNS -navn) 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: 3306
DB_NAME: Demo1
Når du er ferdig, trykk + X etterfulgt av Y og For å redde VM5.Nodekite.com fil.
På samme måte å legge til vertsfakta/variabler for verten VM 6.Nodekite.com, Lag en ny fil VM 6.Nodekite.com i host_vars/ Katalog som følger:
$ nano host_vars/vm6.Nodekite.comDu kan legge til vertsfakta/variabler db_port og db_name for verten VM 6.Nodekite.com med følgende linjer.
DB_PORT: 8877Når du er ferdig, trykk + X etterfulgt av Y og For å redde VM 6.Nodekite.com fil.
For å skrive ut og teste om vi får tilgang til vertsfakta/variabler, oppretter du en ny spillbok print_host_facts.Yaml i Playbooks/ Katalog som følger:
$ nano playbooks/print_host_facts.YamlNå, skriv inn følgende linjer i print_host_facts.Yaml fil.
- Verter: DatabaseNår du er ferdig, trykk + X etterfulgt av Y og For å redde print_host_facts.Yaml fil.
For å sjekke om verten VM5.Nodekite.com og VM 6.Nodekite.com kan få tilgang til vertsfakta/variabler, kjøre print_host_facts.Yaml Playbook som følger:
$ ansible-playbook playbooks/print_host_facts.YamlSom du ser, vertene VM5.Nodekite.com og VM 6.Nodekite.com kan få tilgang til db_name og db_port Vertsfakta/variabler.
Sette det hele sammen: Ansible fakta Precedence
I dette avsnittet skal jeg snakke om ansibelt faktum/variabel forrang. Så la oss komme i gang.
Før vi kommer i gang, la oss rydde opp i varelagerfilen.
Åpne Vertens Lagerfil med følgende kommando:
$ Nano -verter
Fjern den merkede delen fra inventarfilen.
Slik skal lagerfilen din se på dette punktet.
Legg nå den merkede linjen i varelagerfilen din. Disse linjene legger til de globale fakta/variabler Fact_scope og havn.
Legg deretter til de merkede linjene i varelagerfilen din. Disse linjene legger til Fact_scope og havn fakta/variabler for vertene i database gruppe.
Til slutt, legg til Fact_scope og havn vert fakta/variabler for VM3.Nodekite.com og VM4.Nodekite.com verter, som merket i skjermbildet nedenfor.
Når du er ferdig, trykk + X etterfulgt av Y og For å lagre varelagerfilen.
For å skrive ut verdien av den globale, gruppen og vertsfakta/variablene, oppretter du en ny spillbok FAKT_PRECENDENCE.Yaml i Playbooks/ Katalog som følger:
$ nano playbooks/fact_precedence.YamlSkriv inn følgende linjer i FAKT_PRESENT.Yaml fil.
- Verter: AlleNår du er ferdig, trykk + X etterfulgt av Y og For å redde FAKT_PRESENT.Yaml fil.
For å skrive ut den globale, gruppen og vertsfakta/variablene, kjører du FAKT_PRESENT.Yaml Playbook som følger:
$ Ansible-Playbook Playbooks/Fact_Precedence.YamlSom du kan se, skrives den globale, gruppen og vertsfakta/variablene.
Legg merke til at gruppefakta/variabler erstattet de globale fakta/variabler (1). Legg også merke til at vertsfakta/variabler erstattet både gruppen og globale fakta/variabler (2).
Fakta/variabel forrang for Ansible er som følger:
Vertsfakta> Gruppe FAKT> Globalt faktumEtter å ha lest denne artikkelen, bør du kunne jobbe med Ansible Global, Group og vert fakta/variabler. Husk den som er tilpassede faktumpresedence. Det vil hjelpe deg å feilsøke dine Ansible Playbooks lettere.