Nybegynneropplæring - Ansible spillbøker, variabler og inventar

Beginner S Tutorial Ansible Playbooks



Ansible playbooks er filer som inneholder oppgaver som kjøres for å konfigurere vertene med Ansible. Ansible spillbøker er skrevet i YAML -format. YAML er et veldig enkelt filformat akkurat som JSON. Jeg vil vise deg hvordan Ansible YAML -spillbøker ser ut i en senere del av denne artikkelen.

Ansible Inventory -filer har en liste over vertene du vil konfigurere eller administrere med Ansible. Du kan også gruppere disse vertene og administrere dem etter grupper. Du kan også sende forskjellige variabler for hver vert eller for en gruppe verter.







I denne artikkelen vil jeg vise deg hvordan du arbeider med Ansible playbooks, variabler, inventarfiler og noen vanlige Ansible -moduler med praktiske eksempler. Så la oss komme i gang!



Forutsetninger

Hvis du vil prøve eksemplene i denne artikkelen,



1) Du må ha Ansible installert på datamaskinen.
2) Du må ha minst en Ubuntu/Debian -vert og en CentOS/RHEL 8 -vert konfigurert for Ansible -automatisering.





Det er mange artikler om LinuxHint dedikert til å installere Ansible og konfigurere verter for Ansible automatisering. Du kan sjekke disse artiklene om nødvendig for mer informasjon.

Opprette en prosjektkatalog

Opprett først en prosjektkatalog ~/prosjekt/ med følgende kommando:

$mkdir -pv~/prosjekt/lekebøker

Naviger til ~/prosjekt/ katalogen som følger:

$CD~/prosjekt

Grunnleggende lagerfil:

Lag en Ansible -beholdningsfil verter i prosjektkatalogen med følgende kommando:

$nanoverter

Du kan skrive inn IP -adressene til vertene du ønsker å konfigurere/automatisere ved å bruke Ansible i verter beholdningsfil.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

Når du er ferdig med dette trinnet, lagrer du filen ved å trykke + X etterfulgt av OG og .

Hvis du ønsker å bruke DNS -navn i stedet for IP -adresser i beholdningsfilen, kan du gjøre dette også.

Hvis du ikke har en fungerende DNS -server, kan du bruke /etc/hosts filen på datamaskinen din for lokal DNS -oppløsning.

For lokal DNS -oppløsning, åpne /etc/hosts fil med et tekstredigeringsprogram ( nano , i mitt tilfelle) som følger:

$sudo nano /etc/verter

Skriv inn IP -adressene og ønsket DNS -navn som følger:

192.168.20.167 vm1.nodekite.com
192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com

Når du er ferdig med dette trinnet, trykker du på + X etterfulgt av OG og .

Åpne Ansible -beholdningsfilen verter følgende:

$nanoverter

Du kan nå skrive inn DNS -navnene til vertene du vil konfigurere/automatisere ved å bruke Ansible i verter beholdningsfil.

vm1.nodekite.com
vm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com

Når du er ferdig, lagrer du beholdningsfilen for vertene ved å trykke + X etterfulgt av OG og .

Tester tilkobling til alle verter

Nå kan du prøve å pinge alle vertene i beholdningsfilen som følger:

$ansvarsfull-Jegvert alle-uansvarsfull-m ping

Som du kan se, er alle vertene i beholdningsfilen tilgjengelige. Så vi er klare til å gå videre til neste del av denne artikkelen.

Din første Ansible Playbook

La oss lage en enkel Ansible -lekebok ping_all_hosts.yaml i lekebøker/ katalog. Denne handlingen pinger alle vertene i verter beholdningsfil, som før.

$nanolekebøker/ping_all_hosts.yaml

Skriv inn følgende linjer i ping_all_hosts.yaml Ansible playbook -fil:

- verter: alle
bruker: ansible
oppgaver:
- navn: Ping alle verter
ping:

Her,

verter: alle - velger alle vertene fra beholdningsfilen verter .
bruker: ansible - forteller Ansible til SSH til vertene i beholdningsfilen som ansvarsfull bruker.
oppgaver - alle oppgavene som Ansible skal utføre i vertene er oppført her. Hver av oppgavene har vanligvis en Navn og ett eller flere modulspesifikke alternativer.

Lekeboken ping_all_hosts.yaml har bare én oppgave, og pinger alle verter i beholdningsfilen verter . Navnet på oppgaven er Ping alle verter og den bruker ping modul.

De ping modulen trenger ikke andre alternativer. Så jeg har forlatt det tomt (det er ingenting etter tykktarmen, : )

Når du er ferdig med dette trinnet, lagrer du filen ved å trykke + X etterfulgt av OG og .

Du kan kjøre ping_all_hosts.yaml Ansible playbook som følger:

$ansible-playbook-Jegvert for lekebøker/ping_all_hosts.yaml

Som du kan se, er ping -oppgaven vellykket i alle verter i beholdningsfilen.

Enkel ansvarlig konfigurasjonsfil

I det tidligere eksemplet måtte du bruke -Jeg muligheten til å fortelle Ansible hvilken beholdningsfil du skal bruke. I mitt tilfelle er det verter beholdningsfil.

$ansible-playbook-Jegvert for lekebøker/ping_all_hosts.yaml

Hvis du ikke ønsker å sende en beholdningsfil med -Jeg alternativet hver gang du kjører en Ansible playbook, er alt du trenger å gjøre å sette en standard inventarfil for prosjektet ditt.

For å gjøre det, opprett en ny Ansible -konfigurasjonsfil ansible.cfg i prosjektroten din som følger:

$nanoansible.cfg

Skriv inn følgende linjer i ansible.cfg fil:

[standardinnstillinger]
inventar =./verter

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Du kan kjøre den samme Ansible -spillboken som følger:

$ansible-playbook playbooks/ping_all_hosts.yaml

Som du kan se, bruker spillboken verter inventarfil som standard. Du kan fortsatt bruke -Jeg alternativet for å spesifisere en annen beholdningsfil, hvis du ønsker det. Ansible er veldig fleksibel.

Gruppering av verter i beholdningsfilen

Så langt har jeg vist deg hvordan du kjører et sett med oppgaver (playbook) i alle verter i inventarfilen. Men hva om du vil kjøre et sett med oppgaver i noen av vertene og et annet sett med oppgaver i andre verter? Du kan gruppere vertene i beholdningsfilen og kjøre forskjellige oppgaver på vertsgruppene.

I denne delen vil jeg vise deg hvordan du grupperer verter i beholdningsfilen og hvordan du arbeider med vertsgrupper.

Åpne først inventarfilen verter følgende:

$nanoverter

Skriv inn følgende linjer i verter beholdningsfil:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com

Her har jeg opprettet to vertsgrupper: debian10 og centos8 .

I debian10 gruppe, har jeg to verter: vm1.nodekite.com og vm2.nodekite.com

I centos8 gruppe, har jeg to verter: vm3.nodekite.com og vm4.nodekite.com

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Vi skal nå lage en ny lekebok ping_debian10_hosts.yaml , som vil pinge verter som før, men bare vertene i debian10 vertsgruppe.

Lag en lekebok ping_debian10_hosts.yaml i lekebøker/ katalogen som følger:

$nanolekebøker/ping_debian10_hosts.yaml

Skriv inn følgende linjer i ping_debian10_hosts.yaml Ansible playbook:

- verter: debian10
bruker: ansible
oppgaver:
- navn: Ping alle Debian10verter
ping:

I stedet for verter: alle , Jeg har lagt til verter: debian10 her. debian10 er vertsgruppen. Denne spillboken vil bare kjøre på vertene i debian10 vertsgruppe.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør spillboken som følger:

$ansible-playbook playbooks/ping_debian10_hosts.yaml

Som du kan se, er det bare vertene i debian10 vertsgruppen pinger.

Bruk den samme metoden til å lage en ny spillebok ping_centos8_hosts.yaml følgende:

$nanolekebøker/ping_centos8_hosts.yaml

Skriv inn følgende linjer i ping_centos8_hosts.yaml Ansible playbook:

- verter: centos8
bruker: ansible
oppgaver:
- navn: Ping alle CentOS8verter
ping:

På samme måte har jeg lagt til verter: centos8 her. centos8 er vertsgruppen. Denne spillboken vil bare kjøre på vertene i centos8 vertsgruppe.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør spillboken som følger:

$ansible-playbook playbooks/ping_centos8_hosts.yaml

Som du kan se, er det bare vertene i centos8 vertsgruppen pinger.

Ansible variabeltyper

Det er forskjellige typer variabler i Ansible. De viktigste variabeltypene er Ansible Facts variabler og Brukerdefinerte variabler .

Ansible Facts variabler: Avhengig av verten Ansible jobber med, genererer Ansible Ansible fakta -variabler. Ansible fact variabler inneholder informasjon om verten, for eksempel IP -adresser, vertsnavn, domenenavn, dato, tid, shell -miljøvariabler og mer.

Brukerdefinerte variabler: Dette er tilpassede variabler definert av brukeren. Du kan sende brukerdefinerte variabler fra kommandolinjen, eller ved å bruke beholdningsfilen.

Hovedsakelig brukerdefinerte variabler er av to typer: Gruppevariabler og Vertsvariabler .

Ansible variabel forrang

Den variable forrang for Ansible er : Kommandolinjevariabler > Vertsvariabler > Gruppevariabler

Hvis du angir den samme variabelen som vertsvariabelen og gruppevariabelen, blir vertsvariabelen brukt.

På samme måte vil variablene du angir fra kommandolinjen mens du kjører en spillbok, erstatte både verts- og gruppevariablene.

Arbeider med Ansible Facts Variables

I denne delen vil jeg vise deg hvordan du arbeider med variabler for ansvarlige fakta. Så la oss komme i gang!

Du kan vise alle variabelen Ansible Facts for vertene i din verter beholdningsfil som følger:

$ansvarlig alt-uansvarsfull-moppsett

Som du kan se, er alle Ansible Facts -variablene oppført i JSON -format. Det er en veldig lang liste.

Siden listen er ganske lang, kan du åpne den med et personsøkerprogram som f.eks mindre følgende:

$ansvarlig alt-uansvarsfull-moppsett| mindre

Nå kan du rulle utgangen opp, ned, venstre og høyre etter behov.

Du kan også søke etter variabelnavn fra personsøkeren. For å gjøre det, trykk på / tasten på tastaturet. Skriv deretter inn søkestrengen ( vertsnavn i mitt tilfelle) og trykk .

Som du kan se, er variabelen Ansible facts som matchet søkestrengen ansible_hostname . Du kan trykke N å gå til neste kamp og P for å gå til forrige kamp fra personsøkeren. Slik finner du variabelen Ansible facts du trenger for ditt Ansible -prosjekt.

La oss nå se hvordan du får tilgang til variabelen Ansible facts.

Lag en ny spillebok print_variable1.yaml følgende:

$nanolekebøker/print_variable1.yaml

Skriv inn følgende linjer i print_variable1.yaml fil:

- verter: alle
bruker: ansible
oppgaver:
- navn: Skriv utvertsnavnav alle verter
feilsøking:
melding:'{{ansible_hostname}}'

Her har jeg lagt til en oppgave Skriv ut vertsnavn for alle verter . Denne oppgaven bruker Ansible feilsøking modul for å skrive ut en melding når spillboken kjører.

melding er den eneste nødvendige parameteren for feilsøking modul. De melding parameteren godtar en streng i anførselstegn, som er meldingen som skrives ut på konsollen.

Her, {{variable_name}} format brukes for å få tilgang til en variabel. I dette tilfellet, {{ansible_hostname}} brukes til å skrive ut ansible_hostname variabel for hver av vertene i beholdningsfilen.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Du kan også få tilgang til variabelen Ansible facts som ansible_facts [variable_name] . Så ansible_hostname variabel vil bli ansible_facts [vertsnavn] .

Vi kan skrive om print_variable1.yaml playbook som dette også. Vi får samme utgang.

- verter: alle
bruker: ansible
oppgaver:
- navn: Skriv utvertsnavnav alle verter
feilsøking:
melding:'{{ansible_facts [' variable_name ']}}'

Kjør lekeboken print_variable1.yaml følgende:

$ansible-playbook playbooks/print_variable1.yaml

Som du kan se, blir vertsnavnet til hver av vertene i beholdningsfilen skrevet ut på konsollen.

La oss nå skrive ut standard IPv4 -adressen til hver vert sammen med vertsnavnet. Som du kan se, kan du få tilgang til standard IPv4 -adressen til verten ved hjelp av adresse eiendommen til ansible_default_ipv4 gjenstand.

Lag en ny spillebok print_variable2.yaml følgende:

$nanolekebøker/print_variable2.yaml

Skriv inn følgende linjer i print_variable2.yaml fil:

- verter: alle
bruker: ansible
oppgaver:
- navn: Skriv utvertsnavnav alle verter
feilsøking:
melding:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

Denne lekeboken er den samme som før. Den eneste forskjellen er den nye variabelen {{ansible_default_ipv4.address}} i melding alternativet til feilsøking modul.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør print_variable2.yaml spillbok som følger:

$ansible-playbook playbooks/print_variable2.yaml

Som du kan se, skrives standard IPv4 -adressen og vertsnavnet til vertene ut på konsollen.

Så, dette er hvordan du jobber med variabler fra Ansible Facts.

Angi brukerdefinerte variabler fra kommandolinjen:

I denne delen vil jeg vise deg hvordan du angir brukerdefinerte variabler fra kommandolinjen mens du kjører Ansible playbooks.

Lag først en ny spillebok print_variable3.yaml følgende:

$nanolekebøker/print_variable3.yaml

Skriv inn følgende linjer i print_variable3.yaml fil:

- verter: alle
bruker: ansible
oppgaver:
- navn: Skriv utkommandolinjevariabel
feilsøking:
melding:'Velkommen {{brukernavn}}'

Her har jeg brukt feilsøking modul for å skrive ut meldingen Velkommen {{brukernavn}} . brukernavn er en variabel som vil bli erstattet når vi kjører lekeboken.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør lekeboken print_variable3.yaml følgende:

$ansible-playbook-Og 'brukernavn = Bob'lekebøker/print_variable3.yaml

MERK: Her, -Og alternativet brukes for å bestå en brukernavn variabel med verdien Bob til lekeboken print_variable3.yaml fra kommandolinjen.

Som du kan se, meldingen Velkommen Bob er skrevet ut på konsollen.

La oss nå finne ut hvordan du sender flere variabler fra kommandolinjen.

Lag en ny spillebok print_variable4.yaml følgende:

$nanolekebøker/print_variable4.yaml

Skriv inn følgende linjer i print_variable4.yaml fil:

- verter: alle
bruker: ansible
oppgaver:
- navn: Skriv ut brukerdefinerte variabler
feilsøking:
melding:'brukernavn = {{brukernavn}} http_port = {{http_port}}'

Lekeboken burde være veldig kjent for deg akkurat nå. Alt det gjør er å skrive ut de to variablene brukernavn og http_port på konsollen.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Du kan nå passere brukernavn og http_port variabel til spilleboken ved å bruke to forskjellige -Og alternativet som følger:

$ ansible-playbook-Og 'brukernavn = Bob' -Og 'http_port = 8080'
lekebøker/print_variable4.yaml

Eller du kan ganske enkelt skille variablene med et mellomrom, som følger:

$ ansible-playbook-Og 'brukernavn = Bob http_port = 8080'
lekebøker/print_variable4.yaml

Som du kan se, brukernavn og http_port variabler skrives ut på konsollen.

Arbeider med brukerdefinerte gruppevariabler

Si at du vil legge til noen variabler i en gruppe verter. Denne handlingen er veldig enkel å gjøre i Ansible.

Først åpner du din verter beholdningsfil som følger:

$nanoverter

Skriv inn følgende linjer i din verter beholdningsfil:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
brukernavn = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
brukernavn = Bob
http_port =7878

Som du kan se, har jeg opprettet en ny seksjon [debian10: vars] til debian10 vertsgruppe og la til variablene ( brukernavn og http_port ) for debian10 vertsgruppe der.

På samme måte har jeg opprettet en ny seksjon [centos8: vars] til centos8 vertsgruppe og la til variablene ( brukernavn og http_port ) for centos8 vertsgruppe der.

Når du er ferdig, lagrer du verter beholdningsfil ved å trykke + X etterfulgt av OG og .

Kjør print_variable4.yaml spillebøker som følger:

$ansible-playbook playbooks/print_variable4.yaml

Som du kan se, blir de riktige variablene sendt til hver av vertene avhengig av vertsgruppen.

Arbeider med brukerdefinerte vertsvariabler

I denne delen vil jeg vise deg hvordan du angir variabler for spesifikke verter i beholdningsfilen.

Først åpner du verter beholdningsfil som følger:

$nanoverter

For å legge til variabler til en bestemt vert (si, vm1.nodekite.com ), bare legg til et mellomrom/fane etter vertens IP/DNS -navn og skriv inn variablene dine, som vist på skjermbildet nedenfor.

Du kan også legge til flere variabler. Bare separer hver variabel med et mellomrom.

Når du er ferdig, lagrer du beholdningsfilen ved å trykke + X etterfulgt av OG og .

Kjør print_variable4.yaml spillebøker som følger:

$ansible-playbook playbooks/print_variable4.yaml

Som du kan se, er variablene bare satt for vm1.nodekite.com vert. De andre vertene har gruppevariabler som brukes på dem.

Generere lagerfiler raskt med områder

Du kan bruke områder for raskt å generere Ansible -beholdningsfiler hvis vertens IP -adresser eller DNS -navn er konsistente (dvs. har et bestemt format).

I de tidligere eksemplene har jeg brukt vertene vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com og vm4.nodekite.com . I stedet for å skrive inn 4 linjer, kunne jeg bare ha skrevet vm [1: 4] .nodekite.com i beholdningsfilen.

For å eksperimentere med områder, åpne verter beholdningsfil som følger:

$nanoverter

Fjern alle vertene og variablene fra beholdningsfilene.

Vi kan nå bytte ut vm1.nodekite.com og vm2.nodekite.com med vm [1: 2] .nodekite.com til debian10 vertsgruppe som følger.

På samme måte kan vi erstatte vm3.nodekite.com og vm4.nodekite.com med vm [3: 4] .nodekite.com til centos8 vertsgruppe.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør ping_all_hosts.yaml følgende:

$ansible-playbook playbooks/ping_all_hosts.yaml

Som du kan se, ble vertsintervallene utvidet da jeg kjørte playbook.

Lagre variabler i forskjellige filer

Det er veldig enkelt å lagre gruppevariabler og vertsvariabler i den samme beholdningsfilen. Men du leter kanskje etter mer fleksibilitet. Spesielt når du vil bruke områder i beholdningsfilen din, siden du ikke lenger kan angi vertsvariabler hvis du bruker områder. Vel, du kan lagre gruppevariabler og vertsvariabler i forskjellige filer. I denne delen vil jeg vise deg hvordan det er gjort.

Som standard ser Ansible etter gruppevariabler i group_vars/ katalog og vertsvariabler i host_vars/ katalog.

Så, lag group_vars/ og host_vars/ katalogen som følger:

$mkdir -pv {vert, gruppe}_hvem sin

For å angi gruppevariabler for debian10 vertsgruppe, opprett en fil debian10 (samme som gruppenavn) i group_vars/ katalogen som følger:

$nanogroup_vars/debian10

Skriv inn variablene dine som følger:

brukernavn: Lily
http_port: 4343

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av Y og .

På samme måte kan du angi gruppevariabler for centos8 vertsgruppe, opprett en fil centos8 (samme som gruppenavn) i group_vars/ katalogen som følger:

$nanogroup_vars/centos8

Skriv inn variablene dine som følger:

brukernavn: Bob
http_port: 7878

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av Y og .

Kjør print_variable4.yaml spillbok som følger:

$ansible-playbook playbooks/print_variable4.yaml

Som du kan se, er gruppevariablene riktig angitt for hver vertsgruppe.

For å angi vertsvariabler for verten vm1.nodekite.com , lag en fil vm1.nodekite.com (samme som vertsnavnet eller IP -adressen) i host_vars/ katalogen som følger:

$nanovm1.nodekite.com

Skriv inn vertsvariablene dine som følger:

brukernavn: Alex
http_port: 7788

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av Y og .

Kjør print_variable4.yaml spillbok som følger:

$ ansible-playbook playbooks/print_variable4.yaml
[

Som du kan se, er vertsvariablene riktig angitt for verten vm1.nodekite.com .

Jobber med Loops i Ansible

I denne delen vil jeg vise deg hvordan du bruker sløyfer i Ansible.

Lag først en ny spillebok loop1.yaml i lekebøker/ katalogen som følger:

$nanolekebøker/loop1.yaml

Skriv inn følgende linjer i loop1.yaml lekebok:

- verter: alle
bruker: ansible
oppgaver:
- navn: Skriv ut brukerliste
feilsøking:
melding:'Bruker: {{item}}'
with_items:
- Alex
- Bob
- Lily

Her har jeg 1 oppgave som skriver ut en liste over brukere som bruker loop.

For å angi iterasjonsverdiene for oppgaven, bruker du med_elementer modul. Deretter legger du til verdiene en etter en.

with_items:
- Alex
- Bob
- Lily

Du får tilgang til verdien av den gjeldende iterasjonen ved hjelp av punkt variabel.

feilsøking:
melding:'Bruker: {{item}}'

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør loop1.yaml spillbok som følger:

$ansible-playbook playbooks/loop1.yaml

Som du kan se, kjørte den samme oppgaven for hvert element på hver vert. Så løkken fungerer.

Arbeider med forhold i Ansible

Hvis du ønsker å kjøre oppgaver basert på visse forhold, så er denne delen for deg.

For å kjøre oppgaver basert på tilstand, kan du bruke når modul av Ansible. La oss se et eksempel på denne modulen. Lag først en ny spillebok tilstand1.yaml følgende:

$nanolekebøker/tilstand1.yaml

Skriv inn følgende linjer i tilstand1.yaml lekebok:

- verter: alle
bruker: ansible
oppgaver:
- navn: Kjør denne oppgaven bare på Debian
feilsøking:
melding:'denne oppgaven kjører på Debian'
når: ansible_facts['fordeling']=='Debian'

Her,

ansible_facts [‘distribution’] == ‘Debian’ brukes til å kontrollere om fordeling er Debian . Oppgaven kjøres bare hvis distribusjonen er Debian.

De ansible_facts [‘distribusjon’] brukes for å få tilgang til variabelen Ansible Facts ansible_distribution . Du kan også se etter distribusjonsversjon ved hjelp av ansible_distribution_major_version variabel.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør tilstand1.yaml spillbok som følger:

$ansible-playbook playbooks/tilstand1.yaml

Som du kan se, kjørte oppgaven bare på Debian -vertene. Oppgaven kjørte ikke på CentOS -vertene.

Du kan også se etter flere forhold samtidig og kjøre oppgaven bare hvis alle betingelsene er sanne. La oss se et eksempel.

Lag en ny spillebok tilstand2.yaml følgende:

$nanolekebøker/tilstand2.yaml

Skriv inn følgende linjer i tilstand2.yaml fil:

- verter: alle
bruker: ansible
oppgaver:
- navn: Kjør denne oppgaven bare på Debian10
feilsøking:
melding:'denne oppgaven kjører på Debian 10'
når: ansible_facts['fordeling']=='Debian'
og ansible_facts['distribution_major_version']=='10'

Her vil oppgaven bare kjøres hvis distribusjonen er Debian ( ansible_facts [‘distribution’] == ‘Debian’ ) og versjonen er 10 ( ansible_facts [‘distribution_major_version’] == ’10’ ). Hvis begge betingelsene er sanne, vil oppgaven kjøres. For øvrig vil ikke oppgaven kjøres.

Jeg har brukt og søkeord for å sjekke om begge betingelsene er sanne her. Hvis du vil kontrollere om noen av betingelsene er sanne, kan du bruke eller søkeord i stedet.

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør lekeboken tilstand2.yaml følgende:

$ansible-playbook playbooks/tilstand2.yaml

Som du kan se, kjørte oppgaven bare på Debian 10 -vertene.

La oss endre lekeboken tilstand2.yaml å kjøre oppgaven bare på Debian 8 -verter som følger.

Som du kan se, ble alle vertene hoppet over, ettersom jeg ikke har noen Debian 8 -verter i inventarfilen.

Jobber med Ansible apt Module

De passende modulen til Ansible brukes til å installere en spesifikk programvarepakke på Ubuntu/Debian -verter. La oss se hvordan du bruker denne modulen.

Lag først en ny spillebok apt1.yaml i lekebøker/ katalogen som følger:

$nanolekebøker/apt1.yaml

Skriv inn følgende linjer i apt1.yaml lekebok:

- verter: debian10
bruker: ansible
bli: Sann
oppgaver:
- navn: Installer apache2
passende:
navn: apache2
stat: siste

De passende modul krever bare Navn av pakken du vil installere/oppgradere/fjerne og stat av pakken.

Her prøver jeg å installere apache2 pakke ( navn: apache2 ) på Debian 10 -vertene mine. Da jeg prøver å installere en pakke og også oppgradere den hvis en ny versjon er tilgjengelig, vil stat bør være siste .

stat godtar også følgende alternativer:

- fraværende - Pakken vil bli fjernet hvis den allerede er installert.
- siste - Pakken vil bli oppgradert hvis en oppdatering er tilgjengelig. Hvis pakken ikke allerede er installert, blir den installert.
- tilstede - Pakken blir installert hvis den ikke allerede er installert. Men pakken vil ikke bli oppgradert hvis en oppdatering er tilgjengelig.

Legg merke til at jeg har lagt til bli: Sann i lekeboken. Dette vil gi ansvarsfull bruker sudo -privilegier for å endre filsystemstrukturen (dvs. installere/oppgradere/fjerne pakker). Uten bli: Sann , passende modulen vil ikke kunne installere apache2 pakke.

Når du er ferdig, lagrer du spillboka ved å trykke + X etterfulgt av OG og .

Kjør apt1.yaml spillbok som følger:

$ansible-playbook playbooks/apt1.yaml

Som du kan se, kjørte spillboken vellykket på Debian 10 -vertene.

Som du kan se, apache2 pakken er installert på Debian 10 -vertene mine.

Jobber med Ansible dnf/yum -modul

De dnf og yum modulen til Ansible brukes til å installere en bestemt programvarepakke på CentOS/RHEL -verter. Du kan bruke denne modulen på samme måte som du gjorde passende modul i den tidligere delen av denne artikkelen.

Begge dnf og yum moduler godtar de samme parameterne. Du kan bruke dnf modul på CentOS/RHEL 8 -verter, og yum på CentOS/RHEL 7 eller eldre.

La oss nå se på et eksempel på denne modulen.

Lag først en ny spillebok dnf1.yaml i lekebøker/ katalogen som følger:

$nanolekebøker/dnf1.yaml

Skriv inn følgende linjer i dnf1.yaml lekebok:

- verter: centos8
bruker: ansible
bli: Sann
oppgaver:
- navn: Installer httpd -pakken
dnf:
navn: httpd
stat: siste

De dnf og yum modul krever bare Navn av pakken du vil installere/oppgradere/fjerne og stat av pakken.

Her prøver jeg å installere httpd pakke ( navn: httpd ) på mine CentOS 8 -verter. Da jeg prøver å installere en pakke, og jeg også vil oppgradere den hvis en ny versjon er tilgjengelig, vil stat bør være siste .

stat godtar følgende alternativer:

- fraværende - Pakken vil bli fjernet hvis den allerede er installert.
- siste - Pakken vil bli oppgradert hvis en oppdatering er tilgjengelig. Hvis pakken ikke allerede er installert, blir den installert.
- tilstede - Pakken blir installert hvis den ikke allerede er installert. Men pakken vil ikke bli oppgradert hvis en oppdatering er tilgjengelig.

Legg merke til at jeg har lagt til bli: Sann i lekeboken. Dette gir ansvarsfull bruker sudo -privilegier for å endre filsystemstrukturen (dvs. installere/oppgradere/fjerne pakker). Uten bli: Sann , passende modulen vil ikke kunne installere httpd pakke.

Når du er ferdig, lagrer du spillboka ved å trykke + X etterfulgt av OG og .

Kjør dnf1.yaml spillbok som følger:

$ansible-playbook playbooks/dnf1.yaml

Som du kan se, kjørte spillboken vellykket på CentOS 8 -verten.

Arbeider med Ansible servicemodul

De service modulen til Ansible brukes til å starte, stoppe, starte på nytt, aktivere (legge til tjeneste i oppstarten) og deaktivere (fjerne tjeneste fra oppstarten) tjenester i vertene dine.

I tidligere seksjoner viste jeg deg hvordan du installerer Apache HTTP -serverpakken ved hjelp av Ansible passende , dnf og yum moduler. La oss nå sikre at Apache HTTP -servertjenesten kjører og er lagt til i systemoppstarten.

Jeg vil jobbe med Debian 10 -vertene mine. Men du kan jobbe med CentOS 8 -verter hvis du ønsker det. Bare juster spillboken deretter.

Lag først en ny Ansible -spillbok apt2.yaml følgende:

$nanolekebøker/apt2.yaml

Skriv inn følgende linjer i apt2.yaml lekebok:

- verter: debian10
bruker: ansible
bli: Sann
oppgaver:
- navn: Installer apache2
passende:
navn: apache2
stat: siste
- navn: Start apache2 -tjenesten
service:
navn: apache2
tilstand: startet
aktivert: Sant

Her har jeg lagt til en ny oppgave, Start apache2 -tjenesten .

navn: apache2 - tjenesten jeg jobber med er apache2 .

tilstand: startet - tjenesten må kjøres.

aktivert: Sant - tjenesten må legges til i systemoppstarten.

De stat parameteren godtar andre verdier.

- lastet på nytt - Tjenesten må laste inn konfigurasjonsfilene på nytt.
- startet på nytt - Tjenesten må startes på nytt.
- startet - Tjenesten må kjøre. Start tjenesten hvis tjenesten ikke kjører.
- stoppet - Tjenesten må stoppes. Hvis tjenesten kjører, stopp tjenesten.

Kjør lekeboken apt2.yaml følgende:

$ansible-playbook playbooks/apt2.yaml

Som du kan se, kjørte spillboken vellykket.

Som du kan se, apache2 tjenesten kjører på Debian 10 -vertene mine.

Arbeider med Ansible kopimodul

Den Ansible kopiere modul brukes hovedsakelig til å kopiere filer fra datamaskinen til eksterne verter.

I den tidligere delen installerte jeg Apache 2 -webserveren på Debian 10 -vertene mine. La oss nå kopiere en index.html filen til nettroten til Debian 10 -vertene.

Opprett først en ny katalog filer/ følgende:

$mkdir -vfiler

Lag en ny fil index.html i filer/ katalogen som følger:

$nanofiler/index.html

Skriv inn følgende linjer i index.html fil:


< html >
< hode >
< tittel >Webserver av Ansible</ tittel >
</ hode >
< kropp >
< h1 >Velkommen til LinuxHint</ h1 >
< s >Denne webserveren ble distribuert med Ansible.</ s >
</ kropp >
</ html >

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Lag en ny Ansible -spillbok apt3.yaml følgende:

$nanolekebøker/apt3.yaml

Skriv inn følgende linjer i apt3.yaml fil:

- verter: debian10
bruker: ansible
bli: Sann
oppgaver:
- navn: Installer apache2
passende:
navn: apache2
stat: siste
- navn: Kopier index.html til serveren
kopiere:
src: ../filer/index.html
dest:/hvor/www/html/index.html
modus: 0644
eier: www-data
gruppe: www-data
- navn: Start apache2 -tjenesten
service:
navn: apache2
tilstand: startet
aktivert: Sant

Her, oppgaven Kopier index.html til serveren kopierer index.html fra filer/ katalogen til /var/www/html/ katalog over Debian 10 -vertene.

src: ../files/index.html - Kildefilbanen.
dest: /var/www/html/index.html - Målfilbanen.
modus: 0644 - Tillatelsene for filbrukeren (6 - les og skriv), gruppe (4 - les) og andre (4 - les).
eier: www-data - Sett eieren av filen til www-data .
gruppe: www-data - Sett gruppen av filen til www-data .

Når du er ferdig, lagrer du filen ved å trykke + X etterfulgt av OG og .

Kjør apt3.yaml spillbok som følger:

$ansible-playbook playbooks/apt3.yaml

Som du kan se, oppgaven Kopier index.html til serveren er vellykket.

Som du kan se, index.html filen ble kopiert til Debian 10 -vertene.

Som du kan se, serverer Debian 10 -webserveren index.html siden jeg nettopp har kopiert til Debian 10 -vertene.

Så, dette er det grunnleggende i Ansible. Du kan lære mer om Ansible ved å lese den offisielle dokumentasjonen til Ansible. Takk for at du leste denne artikkelen.