Hvordan du bruker skumle tilpassede fakta

Hvordan du bruker skumle tilpassede fakta
Fakta er som variabler i Ansible. Ansible genererer mange fakta, avhengig av verten den automatiserer. Hvis du trenger det, kan du også definere tilpassede fakta/variabler i Ansible.

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]
Inventory = verter
host_key_checking = falsk

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.com
VM2.Nodekite.com
[Web]
VM3.Nodekite.com
VM4.Nodekite.com
[Database]
VM [5: 6].Nodekite.com

Nå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.Yaml

Skriv deretter inn følgende linjer i print_global_fact.Yaml fil.

- Verter: Alle
Bruker: Ansible
oppgaver:
- Navn: Skriv ut verdien av det globale faktum 'Web_URL'
Debug:
msg: 'Web url: web_url'

Hensikten 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.Yaml

Som 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.Yaml

Som 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]
..
[gruppe1: vars]
variabel1 = verdi1
variabel2 = verdi2

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.Yaml

Skriv inn følgende linjer i din print_group_facts.Yaml fil.

- Verter: Web
Bruker: Ansible
oppgaver:
- Navn: utskriftsgruppefakta
Debug:
msg: 'Domenenavn: domain_name Database backend: Database_backend'

Nå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.Yaml

Som 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.com
Database_backend: PGSQL

Nå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.Yaml

Som 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 = verdi2
192.168.22.2 Variable1 = Value3 Variable2 = Value4

Du 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.Yaml

Som 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.com

Du kan legge til vertsfakta/variabler db_port og db_name for verten VM 6.Nodekite.com med følgende linjer.

DB_PORT: 8877
DB_NAME: APP1

Nå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.Yaml

Nå, skriv inn følgende linjer i print_host_facts.Yaml fil.

- Verter: Database
Bruker: Ansible
oppgaver:
- Navn: Skriv ut vertsfakta
Debug:
msg: 'Databasenavn: db_name databaseport: db_port'

Nå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.Yaml

Som 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.Yaml

Skriv inn følgende linjer i FAKT_PRESENT.Yaml fil.

- Verter: Alle
Bruker: Ansible
oppgaver:
- Navn: Skriv ut alle fakta
Debug:
msg: 'Fact Scope: fact_scope port: port'

Nå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.Yaml

Som 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 faktum

Konklusjon:

Etter å 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.