Begyndervejledning - Ansible playbøger, variabler og beholdning

Beginner S Tutorial Ansible Playbooks



Ansible playbøger er filer, der indeholder opgaver, der køres for at konfigurere værterne med Ansible. Ansible playbøger er skrevet i YAML -format. YAML er et meget simpelt filformat ligesom JSON. Jeg vil vise dig, hvordan Ansible YAML -playbøger ser ud i et senere afsnit af denne artikel.

Ansible Inventory -filer fører en liste over de værter, du vil konfigurere eller administrere med Ansible. Du kan også gruppere disse værter og administrere dem efter grupper. Du kan også videregive forskellige variabler for hver vært eller for en gruppe værter.







I denne artikel vil jeg vise dig, hvordan du arbejder med Ansible playbøger, variabler, lagerfiler og nogle almindelige Ansible -moduler med praktiske eksempler. Så lad os komme i gang!



Forudsætninger

Hvis du gerne vil prøve eksemplerne i denne artikel,



1) Du skal have Ansible installeret på din computer.
2) Du skal have mindst en Ubuntu/Debian -vært og en CentOS/RHEL 8 -vært konfigureret til Ansible -automatisering.





Der er mange artikler om LinuxHint dedikeret til Installation af Ansible og konfiguration af værter til Ansible automatisering. Du kan tjekke disse artikler, hvis det er nødvendigt for mere information.

Oprettelse af en projektmappe

Opret først et projektmappe ~/projekt/ med følgende kommando:

$mkdir -pv~/projekt/spillebøger

Naviger til ~/projekt/ bibliotek som følger:

$CD~/projekt

Grundlæggende lagerfil:

Opret en Ansible -beholdningsfil værter i projektmappen med følgende kommando:

$nanoværter

Du kan skrive IP -adresserne på de værter, du vil konfigurere/automatisere ved hjælp af Ansible i værter opgørelsesfil.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

Når du er færdig med dette trin, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Hvis du ønsker at bruge DNS -navne i stedet for IP -adresser i lagerfilen, kan du også gøre dette.

Hvis du ikke har en fungerende DNS -server, kan du bruge /etc/hosts fil på din computer til lokal DNS -opløsning.

For lokal DNS -opløsning skal du åbne /etc/hosts fil med en tekstredigerer ( nano , i mit tilfælde) som følger:

$sudo nano /etc/værter

Indtast IP -adresserne og dine ønskede DNS -navne 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 færdig med dette trin, skal du trykke på + x efterfulgt af OG og .

Åbn Ansible -beholdningsfilen værter som følger:

$nanoværter

Du kan nu skrive DNS -navne på de værter, du vil konfigurere/automatisere ved hjælp af Ansible i værter opgørelsesfil.

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

Når du er færdig, skal du gemme værtsbeholdningsfilen ved at trykke på + x efterfulgt af OG og .

Test af tilslutning til alle værter

Nu kan du prøve at pinge alle værterne i lagerfilen som følger:

$ansvarsfuld-jegværter alle-uansvarsfuld-m ping

Som du kan se, er alle værterne i lagerfilen tilgængelige. Så vi er klar til at gå videre til det næste afsnit i denne artikel.

Din første Ansible Playbook

Lad os lave en simpel Ansible playbook ping_all_hosts.yaml i spillebøger/ vejviser. Denne handling pinger alle værterne i værter beholdningsfil, som før.

$nanospillebøger/ping_all_hosts.yaml

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

- værter: alle
bruger: ansible
opgaver:
- navn: Ping alle værter
ping:

Her,

værter: alle - vælger alle værterne fra lagerfilen værter .
bruger: ansible - fortæller Ansible til SSH til værterne i lagerfilen som ansvarsfuld bruger.
opgaver - alle de opgaver, Ansible vil udføre i værterne, er angivet her. Hver af opgaverne har normalt en navn og en eller flere modulspecifikke muligheder.

Legebogen ping_all_hosts.yaml har kun en opgave, der pinger alle værter i lagerfilen værter . Navnet på opgaven er Ping alle værter og den bruger ping modul.

Det ping modulet behøver ikke andre muligheder. Så jeg har ladet det stå tomt (der er ikke noget efter tyktarmen, : )

Når du er færdig med dette trin, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

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

$ansible-playbook-jeger vært for spillebøger/ping_all_hosts.yaml

Som du kan se, er ping -opgaven vellykket i alle værter i lagerfilen.

Enkel ansvarlig konfigurationsfil

I det tidligere eksempel skulle du bruge -jeg mulighed for at fortælle Ansible, hvilken beholdningsfil der skal bruges. I mit tilfælde er det værter opgørelsesfil.

$ansible-playbook-jeger vært for spillebøger/ping_all_hosts.yaml

Hvis du ikke ønsker at videregive en beholdningsfil med -jeg valgmulighed hver gang du kører en Ansible playbook, skal du blot angive en standardbeholdningsfil til dit projekt.

For at gøre det skal du oprette en ny Ansible -konfigurationsfil ansible.cfg i din projektrod som følger:

$nanoansible.cfg

Indtast følgende linjer i ansible.cfg fil:

[standardindstillinger]
beholdning =./værter

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Du kan køre den samme Ansible playbook som følger:

$ansible-playbook playbøger/ping_all_hosts.yaml

Som du kan se, bruger playbogen værter lagerfil som standard. Du kan stadig bruge -jeg mulighed for at angive en anden beholdningsfil, hvis du ønsker det. Ansible er meget fleksibel.

Gruppering af værter i beholdningsfilen

Indtil videre har jeg vist dig, hvordan du kører et sæt opgaver (playbook) i alle værter i lagerfilen. Men hvad nu hvis du vil køre et sæt opgaver i nogle af værterne og et andet sæt opgaver i andre værter? Du kan gruppere værterne i beholdningsfilen og køre forskellige opgaver på værtsgrupperne.

I dette afsnit viser jeg dig, hvordan du grupperer værter i beholdningsfilen, og hvordan du arbejder med værtsgrupper.

Åbn først lagerfilen værter som følger:

$nanoværter

Indtast følgende linjer i værter beholdningsfil:

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

Her har jeg oprettet to værtsgrupper: debian10 og centos8 .

I debian10 gruppe, har jeg to værter: vm1.nodekite.com og vm2.nodekite.com

I centos8 gruppe, har jeg to værter: vm3.nodekite.com og vm4.nodekite.com

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Vi vil nu oprette en ny spillebog ping_debian10_hosts.yaml , som vil pinge værter som før, men kun værterne i debian10 værtsgruppe.

Opret en spillebog ping_debian10_hosts.yaml i spillebøger/ bibliotek som følger:

$nanospillebøger/ping_debian10_hosts.yaml

Indtast følgende linjer i ping_debian10_hosts.yaml Ansible playbook:

- værter: debian10
bruger: ansible
opgaver:
- navn: Ping alle Debian10værter
ping:

I stedet for værter: alle , Har jeg tilføjet værter: debian10 her. debian10 er værtsgruppen. Denne playbog kører kun på værterne i debian10 værtsgruppe.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør playbogen som følger:

$ansible-playbook playbøger/ping_debian10_hosts.yaml

Som du kan se, er det kun værterne i debian10 værtsgruppe pinger.

Brug den samme metode til at oprette en anden playbook ping_centos8_hosts.yaml som følger:

$nanospillebøger/ping_centos8_hosts.yaml

Indtast følgende linjer i ping_centos8_hosts.yaml Ansible playbook:

- værter: centos8
bruger: ansible
opgaver:
- navn: Ping alle CentOS8værter
ping:

På samme måde har jeg tilføjet værter: centos8 her. centos8 er værtsgruppen. Denne playbog kører kun på værterne i centos8 værtsgruppe.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør playbogen som følger:

$ansible-playbook playbøger/ping_centos8_hosts.yaml

Som du kan se, er det kun værterne i centos8 værtsgruppe pinger.

Ansible variabeltyper

Der er forskellige typer variabler i Ansible. De vigtigste variabeltyper er Ansible Facts variabler og Brugerdefinerede variabler .

Ansible Facts variabler: Afhængigt af den vært Ansible arbejder på, genererer Ansible Ansible facts variabler. Ansible facts variabler indeholder oplysninger om værten, f.eks. IP -adresser, værtsnavn, domænenavn, dato, tid, shell -miljøvariabler og mere.

Brugerdefinerede variabler: Disse er tilpassede variabler defineret af brugeren. Du kan videregive brugerdefinerede variabler fra kommandolinjen eller ved hjælp af lagerfilen.

Hovedsageligt brugerdefinerede variabler er af to typer: Gruppevariabler og Værtsvariabler .

Ansible variabel forrang

Den variable forrang for Ansible er : Kommandolinjevariabler > Værtsvariabler > Gruppevariabler

Hvis du indstiller den samme variabel som værtsvariablen og gruppevariablen, vil værtsvariablen blive anvendt.

Tilsvarende vil de variabler, du angiver fra kommandolinjen, mens du kører en playbook, erstatte både host- og gruppevariablerne.

Arbejde med Ansible Facts Variables

I dette afsnit vil jeg vise dig, hvordan du arbejder med variabler med ansvarlige fakta. Så lad os komme i gang!

Du kan angive alle variablerne Ansible Facts for værterne i din værter opgørelsesfil som følger:

$ansvarsfuld alle-uansvarsfuld-mOpsætning

Som du kan se, er alle Ansible Facts -variablerne angivet i JSON -format. Det er en meget lang liste.

Da listen er ret lang, kan du åbne den med et personsøgerprogram som f.eks mindre som følger:

$ansvarsfuld alle-uansvarsfuld-mOpsætning| mindre

Nu kan du rulle output op, ned, til venstre og til højre efter behov.

Du kan også søge efter variabelnavne fra personsøgeren. For at gøre det skal du trykke på / tast på dit tastatur. Indtast derefter søgestrengen ( værtsnavn i mit tilfælde) og tryk på .

Som du kan se, er variablen Ansible facts, der matchede søgestrengen, ansible_hostname . Du kan trykke på N at gå til den næste kamp og P for at gå til den forrige kamp fra personsøgeren. Sådan finder du variablen Ansible facts, du har brug for til dit Ansible -projekt.

Lad os nu se, hvordan du får adgang til variablerne Ansible facts.

Opret en ny spillebog print_variable1.yaml som følger:

$nanospillebøger/print_variable1.yaml

Indtast følgende linjer i print_variable1.yaml fil:

- værter: alle
bruger: ansible
opgaver:
- navn: Udskrivværtsnavnaf alle værter
fejlfinde:
msg:'{{ansible_hostname}}'

Her har jeg tilføjet en opgave Udskriv værtsnavn for alle værter . Denne opgave bruger Ansible fejlfinde modul til at udskrive en meddelelse, når playbogen kører.

besked er den eneste nødvendige parameter for fejlfinde modul. Det besked parameter accepterer en streng i anførselstegn, som er den meddelelse, der udskrives på konsollen.

Her, {{variable_name}} format bruges til at få adgang til en variabel. I dette tilfælde, {{ansible_hostname}} bruges til at udskrive ansible_hostname variabel for hver af værterne i lagerfilen.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Du kan også få adgang til variablen Ansible facts som ansible_facts [variable_name] . Så ansible_hostname variabel bliver ansible_facts [værtsnavn] .

Vi kan omskrive print_variable1.yaml playbook også som denne. Vi får det samme output.

- værter: alle
bruger: ansible
opgaver:
- navn: Udskrivværtsnavnaf alle værter
fejlfinde:
msg:'{{ansible_facts [' variable_name ']}}'

Kør spillebogen print_variable1.yaml som følger:

$ansible-playbook playbøger/print_variable1.yaml

Som du kan se, udskrives værtsnavnet for hver af værterne i lagerfilen på konsollen.

Lad os nu udskrive standard -IPv4 -adressen for hver vært sammen med værtsnavnet. Som du kan se, kan hostens standard IPv4 -adresse tilgås ved hjælp af adresse ejendom af ansible_default_ipv4 objekt.

Opret en ny spillebog print_variable2.yaml som følger:

$nanospillebøger/print_variable2.yaml

Indtast følgende linjer i print_variable2.yaml fil:

- værter: alle
bruger: ansible
opgaver:
- navn: Udskrivværtsnavnaf alle værter
fejlfinde:
msg:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

Denne spillebog er den samme som før. Den eneste forskel er den nye variabel {{ansible_default_ipv4.address}} i besked mulighed for fejlfinde modul.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør print_variable2.yaml playbook som følger:

$ansible-playbook playbøger/print_variable2.yaml

Som du kan se, udskrives standard IPv4 -adressen og værtsnavnet for værterne på konsollen.

Så sådan arbejder du med variablerne Ansible Facts.

Indstilling af brugerdefinerede variabler fra kommandolinjen:

I dette afsnit vil jeg vise dig, hvordan du indstiller brugerdefinerede variabler fra kommandolinjen, mens du kører Ansible playbooks.

Opret først en ny spillebog print_variable3.yaml som følger:

$nanospillebøger/print_variable3.yaml

Indtast følgende linjer i print_variable3.yaml fil:

- værter: alle
bruger: ansible
opgaver:
- navn: Udskrivkommandolinievariabel
fejlfinde:
msg:'Velkommen {{brugernavn}}'

Her har jeg brugt fejlfinde modul til at udskrive meddelelsen Velkommen {{brugernavn}} . brugernavn er en variabel, der vil blive erstattet, når vi kører playbook.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør spillebogen print_variable3.yaml som følger:

$ansible-playbook-Og 'brugernavn = Bob'spillebøger/print_variable3.yaml

BEMÆRK: Her, -Og indstilling bruges til at bestå en brugernavn variabel med værdien Bob til spillebogen print_variable3.yaml fra kommandolinjen.

Som du kan se, beskeden Velkommen Bob er trykt på konsollen.

Lad os nu opdage, hvordan man sender flere variabler fra kommandolinjen.

Opret en ny spillebog print_variable4.yaml som følger:

$nanospillebøger/print_variable4.yaml

Indtast følgende linjer i print_variable4.yaml fil:

- værter: alle
bruger: ansible
opgaver:
- navn: Udskriv brugerdefinerede variabler
fejlfinde:
msg:'brugernavn = {{brugernavn}} http_port = {{http_port}}'

Legebogen burde være meget kendt for dig lige nu. Alt det gør er at udskrive de 2 variabler brugernavn og http_port på konsollen.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Du kan nu passere brugernavn og http_port variabel til spillebogen ved hjælp af to forskellige -Og valgmulighed som følger:

$ ansible-playbook-Og 'brugernavn = Bob' -Og 'http_port = 8080'
spillebøger/print_variable4.yaml

Eller du kan simpelthen adskille variablerne med et mellemrum som følger:

$ ansible-playbook-Og 'brugernavn = Bob http_port = 8080'
spillebøger/print_variable4.yaml

Som du kan se, er brugernavn og http_port variabler udskrives på konsollen.

Arbejde med brugerdefinerede gruppevariabler

Sig, du vil føje nogle variabler til en gruppe værter. Denne handling er meget let at gøre i Ansible.

Åbn først din værter opgørelsesfil som følger:

$nanoværter

Indtast følgende linjer i din værter beholdningsfil:

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

Som du kan se, har jeg oprettet en ny sektion [debian10: vars] til debian10 værtsgruppe og tilføjede variablerne ( brugernavn og http_port ) til debian10 værtsgruppe der.

På samme måde har jeg oprettet et nyt afsnit [centos8: vars] til centos8 værtsgruppe og tilføjede variablerne ( brugernavn og http_port ) til centos8 værtsgruppe der.

Når du er færdig, skal du gemme værter beholdningsfil ved at trykke på + x efterfulgt af OG og .

Kør print_variable4.yaml spillebøger som følger:

$ansible-playbook playbøger/print_variable4.yaml

Som du kan se, sendes de korrekte variabler til hver af værterne afhængigt af deres værtsgruppe.

Arbejde med brugerdefinerede værtsvariabler

I dette afsnit vil jeg vise dig, hvordan du indstiller variabler for bestemte værter i beholdningsfilen.

Åbn først værter opgørelsesfil som følger:

$nanoværter

For at tilføje variabler til en bestemt vært (f.eks. vm1.nodekite.com ), skal du bare tilføje et mellemrum/fane efter værtens IP/DNS -navn og indtaste dine variabler, som vist på skærmbilledet herunder.

Du kan også tilføje flere variabler. Du skal blot adskille hver variabel med et mellemrum.

Når du er færdig, skal du gemme lagerfilen ved at trykke på + x efterfulgt af OG og .

Kør print_variable4.yaml spillebøger som følger:

$ansible-playbook playbøger/print_variable4.yaml

Som du kan se, er variablerne kun indstillet til vm1.nodekite.com vært. De andre værter har gruppevariabler anvendt på dem.

Generering af lagerfiler hurtigt med intervaller

Du kan bruge intervaller til hurtigt at generere Ansible -beholdningsfiler, hvis dine værts -IP -adresser eller DNS -navne er konsekvente (dvs. har et specifikt format).

I de tidligere eksempler har jeg brugt værterne vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com og vm4.nodekite.com . I stedet for at skrive 4 linjer, kunne jeg bare have skrevet vm [1: 4] .nodekite.com i lagerfilen.

Hvis du vil eksperimentere med intervaller, skal du åbne værter opgørelsesfil som følger:

$nanoværter

Fjern alle værter og variabler fra lagerfilerne.

Vi kan nu erstatte vm1.nodekite.com og vm2.nodekite.com med vm [1: 2] .nodekite.com til debian10 værtsgruppe som følger.

På samme måde kan vi erstatte vm3.nodekite.com og vm4.nodekite.com med vm [3: 4] .nodekite.com til centos8 værtsgruppe.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør ping_all_hosts.yaml som følger:

$ansible-playbook playbøger/ping_all_hosts.yaml

Som du kan se, blev værtsområderne udvidet, da jeg kørte playbogen.

Lagring af variabler i forskellige filer

Det er meget let at gemme gruppevariablerne og værtsvariablerne i den samme beholdningsfil. Men du leder måske efter mere fleksibilitet. Især når du vil bruge områder i din beholdningsfil, da du ikke længere kan angive værtvariabler, hvis du bruger intervaller. Nå, du kan gemme gruppevariabler og værtvariabler i forskellige filer. I dette afsnit vil jeg vise dig, hvordan det er gjort.

Ansible leder som standard efter gruppevariabler i group_vars / mappe og vært variabler i host_vars / vejviser.

Så opret group_vars / og host_vars / bibliotek som følger:

$mkdir -pv {vært, gruppe}_hvis

For at indstille gruppevariabler for debian10 værtsgruppe, opret en fil debian10 (samme som gruppens navn) i group_vars / bibliotek som følger:

$nanogroup_vars/debian10

Indtast dine variabler som følger:

brugernavn: Lily
http_port: 4343

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af Y og .

På samme måde kan du indstille gruppevariabler for centos8 værtsgruppe, opret en fil centos8 (samme som gruppens navn) i group_vars / bibliotek som følger:

$nanogroup_vars/centos8

Indtast dine variabler som følger:

brugernavn: Bob
http_port: 7878

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af Y og .

Kør print_variable4.yaml playbook som følger:

$ansible-playbook playbøger/print_variable4.yaml

Som du kan se, er gruppevariablerne korrekt indstillet for hver værtsgruppe.

At indstille værtvariabler for værten vm1.nodekite.com , opret en fil vm1.nodekite.com (samme som værtsnavnet eller IP -adressen) i host_vars / bibliotek som følger:

$nanovm1.nodekite.com

Indtast dine værtsvariabler som følger:

brugernavn: Alex
http_port: 7788

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af Y og .

Kør print_variable4.yaml playbook som følger:

$ ansible-playbook playbøger/print_variable4.yaml
[

Som du kan se, er værtsvariablerne korrekt indstillet til værten vm1.nodekite.com .

Arbejde med Loops i Ansible

I dette afsnit vil jeg vise dig, hvordan du bruger loops i Ansible.

Opret først en ny spillebog loop1.yaml i spillebøger/ bibliotek som følger:

$nanospillebøger/loop1.yaml

Indtast følgende linjer i loop1.yaml legebog:

- værter: alle
bruger: ansible
opgaver:
- navn: Udskriv brugerliste
fejlfinde:
msg:'Bruger: {{item}}'
med_elementer:
- Alex
- Bob
- Lily

Her har jeg 1 opgave, der udskriver en liste over brugere, der bruger loop.

For at angive iterationsværdierne for opgaven, bruger du med_elementer modul. Derefter tilføjer du værdierne en efter en.

med_elementer:
- Alex
- Bob
- Lily

Du får adgang til værdien af ​​den aktuelle iteration ved hjælp af vare variabel.

fejlfinde:
msg:'Bruger: {{item}}'

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør loop1.yaml playbook som følger:

$ansible-playbook playbøger/loop1.yaml

Som du kan se, kørte den samme opgave for hvert element på hver vært. Så sløjfen virker.

Arbejde med betingelser i Ansible

Hvis du ønsker at køre opgaver baseret på visse betingelser, er dette afsnit noget for dig.

For at køre opgaver baseret på tilstand kan du bruge hvornår modul af Ansible. Lad os se et eksempel på dette modul. Opret først en ny spillebog tilstand1.yaml som følger:

$nanospillebøger/tilstand1.yaml

Indtast følgende linjer i tilstand1.yaml legebog:

- værter: alle
bruger: ansible
opgaver:
- navn: Kør denne opgave kun på Debian
fejlfinde:
msg:'denne opgave kører på Debian'
når: ansible_facts['fordeling']=='Debian'

Her,

ansible_facts ['distribution'] == 'Debian' bruges til at kontrollere, om fordeling er Debian . Opgaven kører kun, hvis distributionen er Debian.

Det ansible_facts ['distribution'] bruges til at få adgang til variablen Ansible Facts ansible_distribution . Du kan også kontrollere distributionen ved hjælp af ansible_distribution_major_version variabel.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør tilstand1.yaml playbook som følger:

$ansible-playbook playbøger/tilstand1.yaml

Som du kan se, kørte opgaven kun på Debian -værterne. Opgaven kørte ikke på CentOS -værterne.

Du kan også kontrollere, om der er flere betingelser på samme tid og kun køre opgaven, hvis alle betingelserne er sande. Lad os se et eksempel.

Opret en ny spillebog tilstand2.yaml som følger:

$nanospillebøger/tilstand2.yaml

Indtast følgende linjer i tilstand2.yaml fil:

- værter: alle
bruger: ansible
opgaver:
- navn: Kør denne opgave kun på Debian10
fejlfinde:
msg:'denne opgave kører på Debian 10'
når: ansible_facts['fordeling']=='Debian'
og ansible_facts['distribution_major_version']=='10'

Her kører opgaven kun, hvis distributionen er Debian ( ansible_facts ['distribution'] == 'Debian' ) og versionen er 10 ( ansible_facts ['distribution_major_version'] == '10' ). Hvis begge betingelser er sande, kører opgaven. I øvrigt vil opgaven ikke køre.

Jeg har brugt og nøgleord for at kontrollere, om begge betingelser er opfyldt her. Hvis du vil kontrollere, om nogen af ​​betingelserne er sande, kan du bruge eller søgeord i stedet.

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør spillebogen tilstand2.yaml som følger:

$ansible-playbook playbøger/tilstand2.yaml

Som du kan se, kørte opgaven kun på Debian 10 -værterne.

Lad os ændre legebogen tilstand2.yaml kun at køre opgaven på Debian 8 -værter som følger.

Som du kan se, blev alle værterne sprunget over, da jeg ikke har nogen Debian 8 -værter i lagerfilen.

Arbejde med Ansible apt -modul

Det passende modul i Ansible bruges til at installere en specifik softwarepakke på Ubuntu/Debian -værter. Lad os se, hvordan du bruger dette modul.

Opret først en ny spillebog apt1.yaml i spillebøger/ bibliotek som følger:

$nanospillebøger/apt1.yaml

Indtast følgende linjer i apt1.yaml legebog:

- værter: debian10
bruger: ansible
blive: Sand
opgaver:
- navn: Installer apache2
passende:
navn: apache2
tilstand: seneste

Det passende modul kræver kun navn af den pakke, du ønsker at installere/opgradere/fjerne og stat af pakken.

Her prøver jeg at installere apache2 pakke ( navn: apache2 ) på mine Debian 10 -værter. Da jeg prøver at installere en pakke og også opgradere den, hvis en ny version er tilgængelig, vil stat burde være seneste .

stat accepterer også følgende muligheder:

- fraværende - Pakken fjernes, hvis den allerede er installeret.
- seneste - Pakken vil blive opgraderet, hvis der er en opdatering tilgængelig. Hvis pakken ikke allerede er installeret, installeres den.
- til stede - Pakken installeres, hvis den ikke allerede er installeret. Men pakken vil ikke blive opgraderet, hvis der er en opdatering tilgængelig.

Bemærk, at jeg har tilføjet blive: Sand i spillebogen. Dette vil give ansvarsfuld bruger sudo -privilegier til at ændre filsystemstrukturen (dvs. installere/opgradere/fjerne pakker). Uden blive: Sand , det passende modulet vil ikke være i stand til at installere apache2 pakke.

Når du er færdig, skal du gemme afspilningsbogen ved at trykke på + x efterfulgt af OG og .

Kør apt1.yaml playbook som følger:

$ansible-playbook playbøger/apt1.yaml

Som du kan se, kørte playbogen med succes på Debian 10 -værterne.

Som du kan se, er apache2 pakke er installeret på mine Debian 10 -værter.

Arbejder med Ansible dnf/yum -modul

Det dnf og yum modul i Ansible bruges til at installere en specifik softwarepakke på CentOS/RHEL -værter. Du kan bruge dette modul på samme måde som du gjorde passende modul i det tidligere afsnit af denne artikel.

Både dnf og yum moduler accepterer de samme parametre. Du kan bruge dnf modul på CentOS/RHEL 8 -værter og yum på CentOS/RHEL 7 eller ældre.

Lad os nu se på et eksempel på dette modul.

Opret først en ny spillebog dnf1.yaml i spillebøger/ bibliotek som følger:

$nanospillebøger/dnf1.yaml

Indtast følgende linjer i dnf1.yaml legebog:

- værter: centos8
bruger: ansible
blive: Sand
opgaver:
- navn: Installer httpd -pakken
dnf:
navn: httpd
tilstand: seneste

Det dnf og yum modul kræver kun navn af den pakke, du vil installere/opgradere/fjerne og stat af pakken.

Her prøver jeg at installere httpd pakke ( navn: httpd ) på mine CentOS 8 -værter. Da jeg prøver at installere en pakke, og jeg også gerne vil opgradere den, hvis en ny version er tilgængelig, vil stat burde være seneste .

stat accepterer følgende muligheder:

- fraværende - Pakken fjernes, hvis den allerede er installeret.
- seneste - Pakken vil blive opgraderet, hvis der er en opdatering tilgængelig. Hvis pakken ikke allerede er installeret, installeres den.
- til stede - Pakken installeres, hvis den ikke allerede er installeret. Men pakken vil ikke blive opgraderet, hvis der er en opdatering tilgængelig.

Bemærk, at jeg har tilføjet blive: Sand i spillebogen. Dette giver ansvarsfuld bruger sudo -privilegier til at ændre filsystemstrukturen (dvs. installere/opgradere/fjerne pakker). Uden blive: Sand , det passende modulet vil ikke være i stand til at installere httpd pakke.

Når du er færdig, skal du gemme afspilningsbogen ved at trykke på + x efterfulgt af OG og .

Kør dnf1.yaml playbook som følger:

$ansible-playbook playbøger/dnf1.yaml

Som du kan se, kørte playbogen med succes på CentOS 8 -værten.

Arbejde med Ansible servicemodul

Det service modul i Ansible bruges til at starte, stoppe, genstarte, aktivere (tilføje service til opstart) og deaktivere (fjerne service fra opstart) tjenester i dine værter.

I tidligere afsnit viste jeg dig, hvordan du installerer Apache HTTP -serverpakken ved hjælp af Ansible passende , dnf og yum moduler. Lad os nu sikre, at Apache HTTP -servertjenesten kører og er blevet føjet til systemstart.

Jeg vil arbejde med mine Debian 10 -værter. Men du kan arbejde med CentOS 8 -værter, hvis du ønsker det. Du skal blot justere playbogen i overensstemmelse hermed.

Opret først en ny Ansible playbook apt2.yaml som følger:

$nanospillebøger/apt2.yaml

Indtast følgende linjer i apt2.yaml legebog:

- værter: debian10
bruger: ansible
blive: Sand
opgaver:
- navn: Installer apache2
passende:
navn: apache2
tilstand: seneste
- navn: Start apache2 -tjenesten
service:
navn: apache2
tilstand: startet
aktiveret: Sandt

Her har jeg tilføjet en ny opgave, Start apache2 -tjenesten .

navn: apache2 - den service, jeg arbejder på, er apache2 .

tilstand: startet - tjenesten skal køre.

aktiveret: Sandt - tjenesten skal føjes til systemstart.

Det stat parameter accepterer andre værdier.

- genindlæst - Tjenesten skal genindlæse konfigurationsfilerne.
- genstartet - Tjenesten skal genstartes.
- startede - Tjenesten skal køre. Hvis tjenesten ikke kører, skal du starte tjenesten.
- holdt op - Servicen skal stoppes. Hvis tjenesten kører, skal du stoppe tjenesten.

Kør spillebogen apt2.yaml som følger:

$ansible-playbook playbøger/apt2.yaml

Som du kan se, kørte playbogen med succes.

Som du kan se, er apache2 tjenesten kører på mine Debian 10 -værter.

Arbejde med Ansible kopimodul

Den Ansible kopi modul bruges hovedsageligt til at kopiere filer fra din computer til eksterne værter.

I det tidligere afsnit installerede jeg Apache 2 -webserveren på mine Debian 10 -værter. Lad os nu kopiere en index.html fil til webrooten for Debian 10 -værterne.

Opret først et nyt bibliotek filer/ som følger:

$mkdir -vfiler

Opret en ny fil index.html i filer/ bibliotek som følger:

$nanofiler/index.html

Indtast følgende linjer i index.html fil:


< html >
< hoved >
< titel >Webserver fra Ansible</ titel >
</ hoved >
< legeme >
< h1 >Velkommen til LinuxHint</ h1 >
< s >Denne webserver blev implementeret med Ansible.</ s >
</ legeme >
</ html >

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Opret en ny Ansible playbook apt3.yaml som følger:

$nanospillebøger/apt3.yaml

Indtast følgende linjer i apt3.yaml fil:

- værter: debian10
bruger: ansible
blive: Sand
opgaver:
- navn: Installer apache2
passende:
navn: apache2
tilstand: seneste
- navn: Kopier index.html til serveren
kopi:
src: ../filer/index.html
dest:/hvor/www/html/index.html
tilstand: 0644
ejer: www-data
gruppe: www-data
- navn: Start apache2 -tjenesten
service:
navn: apache2
tilstand: startet
aktiveret: Sandt

Her er opgaven Kopier index.html til serveren kopierer index.html fra filer/ bibliotek til / var / www / html / bibliotek over Debian 10 -værterne.

src: ../files/index.html - Kildefilens sti.
dest: /var/www/html/index.html - Destinationsfilens sti.
tilstand: 0644 - Tilladelserne til filbrugeren (6 - læs og skriv), gruppe (4 - læs) og andre (4 - læs).
ejer: www-data - Indstil ejeren af ​​filen til www-data .
gruppe: www-data - Indstil gruppen af ​​filen til www-data .

Når du er færdig, skal du gemme filen ved at trykke på + x efterfulgt af OG og .

Kør apt3.yaml playbook som følger:

$ansible-playbook playbøger/apt3.yaml

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

Som du kan se, er index.html filen blev kopieret til Debian 10 -værterne.

Som du kan se, serverer Debian 10 webserveren index.html side, som jeg lige har kopieret til Debian 10 -værterne.

Så det er det grundlæggende i Ansible. Du kan lære mere om Ansible ved at læse den officielle dokumentation af Ansible. Tak fordi du læste denne artikel.