Ansibel når betinget

Ansibel når betinget
Ansible støtter betingede evalueringer før du utfører en spesifikk oppgave på målvertene. Hvis den faste tilstanden er sann, vil Ansible gå foran og utføre oppgaven. Hvis tilstanden ikke er sann (uoppfylt), vil Ansible hoppe over den spesifiserte oppgaven.

For å implementere forhold i Ansible, bruker vi Når nøkkelord. Nøkkelordet tar boolske uttrykk basert på en verdi eller en variabel fra tidligere oppgaver eller fakta samlet fra fjernvertene.

Denne guiden vil lære deg hvordan du kan implementere forhold i Ansible Playbooks ved å bruke når nøkkelordet.

Ansible når betingelser: grunnleggende bruk

Når nøkkelordet tar en enkel syntaks:

Når: (boolsk tilstand)

Sørge for å gi en tilstand som evaluerer til enten sant eller usant.

For eksempel:

Når: Ansible_pkg_mgr == "Yum"
Når: Ansible_user_shell "=="/bin/bash "

Hvis du vil kombinere flere forhold, kan du bruke logiske operatører som og, eller, og ikke.

Når: (tilstand1) og (tilstand2)
Når: (tilstand1) eller (tilstand2)

For å forstå hvordan du bruker Ansible når nøkkelordet, vil vi bruke praktiske eksempler.

Eksempel 1

Det første eksemplet vil opprette en bruker hvis den spesifiserte brukeren ikke eksisterer på den eksterne verten.

---
- Verter: Alle
Samle_facts: Nei
bli: sant
oppgaver:
- Navn: CheckifdirectoryExist
stat:
Sti: /Hjem /Ubuntu
Register: Dir
- Navn: CreateFileIfDirectoryExists
fil:
Sti:/Home/Ubuntu/File.tekst
Stat: berøring
Når: dir.stat.eksisterer

Eksemplet ovenfor starter med å sjekke om hjemmekatalogen til Ubuntu -brukeren er tilgjengelig. Vi bruker deretter når tilstanden skal lage en tekstfil hvis katalogen er tilgjengelig.

Eksempel 2

Det neste eksemplet slår av alle Ubuntu -eksterne verter ved hjelp av en når tilstand.

---
- Verter: Alle
Samle_facts: Ja
bli: sant
oppgaver:
- Navn: ShutDownubuntUservers
Kommando: /sbin /shutdown-tnow
Når: Ansible_Facts ['OS_Family'] == "Ubuntu"

I eksemplet over bruker vi samlet fakta for å evaluere om serverne er fra Ubuntu -familien. Hvis det er sant, må du slå av serverne.

Eksempel 3

I eksemplet nedenfor kombinerer vi to forhold som bruker en og operatør.

---
- Verter: Alle
Samle_facts: Ja
bli: sant
oppgaver:
- Navn: InstallApacheserver
Ansible.bygget.pakke:
Navn: Httpd
Stat: Siste
Når: (Ansible_Facts ['OS_Family'] == "Debian") og
(Ansible_Facts ['Ansible_Distribution_Major_Version'] == 10)

Eksemplet over sjekker om vertene er Debian -verter, og hvis distribusjonsversjonen er lik Debian 10.

Eksempel 4

Vi installerer Apache Webserver i spillboken nedenfor hvis vertsfamilien er enten en Debian eller Ubuntu -vert.

Playbooken bruker en logisk eller operatør.

---
- Verter: Alle
Samle_facts: Ja
bli: sant
oppgaver:
- Navn: InstallApacheserver
Ansible.bygget.pakke:
Navn: Httpd
Stat: Siste
Når: (Ansible_Facts ['OS_Family'] == "Debian") eller
(Ansible_facts ['OS_Family'] == "Ubuntu")

Eksempel 5

Vurder spillboken nedenfor som oppdaterer Nginx -serveren til den nyeste versjonen ved å bruke NOT -operatøren.

---
- Verter: Alle
- Shell: /Sbin /Nginx-V2> & 1
Register: versjon
Samle_facts: Ja
bli: sant

oppgaver:
- Navn: InstallApacheserver
Ansible.bygget.pakke:
Navn: Nginx
Stat: Siste
Når: ('"Nginx/1.19.0 "Notinversjon.stdout ')

Hvis utgangen fra Nginx -serveren ikke er den gjeldende versjonen, kan du installere den nåværende versjonen av pakken.

Konklusjon

I denne guiden diskuterte vi hvordan vi skal jobbe med Conditionals i Ansible ved hjelp av når nøkkelordet.

Takk for at du leser!