Nybörjarhandledning - Ansible Playbooks, variabler och inventarier

Beginner S Tutorial Ansible Playbooks



Ansible playbooks är filer som innehåller uppgifter som körs för att konfigurera värdarna med Ansible. Ansible playbooks är skrivna i YAML -format. YAML är ett mycket enkelt filformat precis som JSON. Jag kommer att visa dig hur Ansible YAML -spelböcker ser ut i ett senare avsnitt i denna artikel.

Ansible Inventory -filer har en lista över de värdar som du vill konfigurera eller hantera med Ansible. Du kan också gruppera dessa värdar och hantera dem efter grupper. Du kan också skicka olika variabler för varje värd eller för en grupp värdar.







I den här artikeln kommer jag att visa dig hur du arbetar med Ansible playbooks, variabler, inventeringsfiler och några vanliga Ansible -moduler med praktiska exempel. Så, låt oss komma igång!



Förkunskaper

Om du vill prova exemplen i den här artikeln,



1) Du måste ha Ansible installerat på din dator.
2) Du måste ha minst en Ubuntu/Debian -värd och en CentOS/RHEL 8 -värd konfigurerad för Ansible -automatisering.





Det finns många artiklar om LinuxHint för att installera Ansible och konfigurera värdar för Ansible -automatisering. Du kan kolla in dessa artiklar om det behövs för mer information.

Skapa en projektkatalog

Skapa först en projektkatalog ~/projekt/ med följande kommando:

$mkdir -pv~/projekt/lekböcker

Navigera till ~/projekt/ katalog enligt följande:

$CD~/projekt

Grundläggande inventeringsfil:

Skapa en Ansible -inventeringsfil värdar i projektkatalogen med följande kommando:

$nanovärdar

Du kan skriva IP -adresserna för de värdar du vill konfigurera/automatisera med Ansible i värdar inventeringsfil.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

När du är klar med detta steg, spara filen genom att trycka på + X följd av OCH och .

Om du vill använda DNS -namn istället för IP -adresser i inventeringsfilen kan du göra det också.

Om du inte har en fungerande DNS -server kan du använda /etc/hosts fil på din dator för lokal DNS -upplösning.

För lokal DNS -upplösning, öppna /etc/hosts fil med en textredigerare ( nano , i mitt fall) enligt följande:

$sudo nano /etc/värdar

Skriv in IP -adresserna och dina önskade DNS -namn enligt följande:

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 är klar med det här steget trycker du på + X följd av OCH och .

Öppna Ansible -inventeringsfilen värdar som följer:

$nanovärdar

Du kan nu skriva DNS -namnen på de värdar du vill konfigurera/automatisera med Ansible i värdar inventeringsfil.

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

När du är klar sparar du värdens inventeringsfil genom att trycka på + X följd av OCH och .

Testar anslutning till alla värdar

Nu kan du försöka pinga alla värdar i inventeringsfilen enligt följande:

$ansible-iär värd för alla-uansible-m ping

Som du kan se är alla värdar i lagerfilen tillgängliga. Så vi är redo att gå vidare till nästa avsnitt i den här artikeln.

Din första Ansible Playbook

Låt oss skapa en enkel Ansible playbook ping_all_hosts.yaml i lekböcker/ katalog. Denna åtgärd kommer att pinga alla värdar i värdar inventeringsfil, som tidigare.

$nanolekböcker/ping_all_hosts.yaml

Skriv följande rader i ping_all_hosts.yaml Ansible playbook -fil:

- värdar: alla
användare: ansible
uppgifter:
- namn: Ping alla värdar
ping:

Här,

värdar: alla - väljer alla värdar från inventeringsfilen värdar .
användare: ansible - berättar för Ansible till SSH till värdarna i inventeringsfilen som ansible användare.
uppgifter - alla uppgifter som Ansible kommer att utföra i värdarna listas här. Var och en av uppgifterna har vanligtvis en namn och ett eller flera modulspecifika alternativ.

Lekboken ping_all_hosts.yaml har bara en uppgift och pingar alla värdar i inventeringsfilen värdar . Namnet på uppgiften är Ping alla värdar och den använder ping modul.

De ping modulen behöver inga andra alternativ. Så jag har lämnat det tomt (det finns ingenting efter kolon, : )

När du är klar med detta steg, spara filen genom att trycka på + X följd av OCH och .

Du kan köra ping_all_hosts.yaml Ansible playbook enligt följande:

$ansible-playbook-iär värd för lekböcker/ping_all_hosts.yaml

Som du kan se är ping -uppgiften framgångsrik i alla värdar i inventeringsfilen.

Enkel Ansible konfigurationsfil

I det tidigare exemplet var du tvungen att använda -i möjlighet att berätta för Ansible vilken inventeringsfil som ska användas. I mitt fall är det värdar inventeringsfil.

$ansible-playbook-iär värd för lekböcker/ping_all_hosts.yaml

Om du inte vill skicka en inventeringsfil med -i alternativ varje gång du kör en Ansible playbook är allt du behöver göra att ställa in en standardinventariefil för ditt projekt.

För att göra det, skapa en ny Ansible -konfigurationsfil ansible.cfg i din projektrot enligt följande:

$nanoansible.cfg

Skriv följande rader i ansible.cfg fil:

[standardvärden]
inventering =./värdar

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Du kan köra samma Ansible playbook enligt följande:

$ansible-playbook playbooks/ping_all_hosts.yaml

Som du kan se använder spelboken värdar inventeringsfil som standard. Du kan fortfarande använda -i alternativ om du vill ange en annan inventeringsfil. Ansible är väldigt flexibel.

Gruppera värdar i lagerfilen

Hittills har jag visat dig hur du kör en uppsättning uppgifter (playbook) i alla värdar i inventeringsfilen. Men vad händer om du vill köra en uppsättning uppgifter i några av värdarna och en annan uppsättning uppgifter i andra värdar? Du kan gruppera värdarna i inventeringsfilen och köra olika uppgifter på värdgrupperna.

I det här avsnittet kommer jag att visa dig hur du grupperar värdar i inventeringsfilen och hur du arbetar med värdgrupper.

Öppna först inventeringsfilen värdar som följer:

$nanovärdar

Skriv följande rader i värdar inventeringsfil:

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

Här har jag skapat två värdgrupper: debian10 och centos8 .

I debian10 grupp har jag två värdar: vm1.nodekite.com och vm2.nodekite.com

I centos8 grupp har jag två värdar: vm3.nodekite.com och vm4.nodekite.com

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Vi kommer nu att skapa en ny spelbok ping_debian10_hosts.yaml , som kommer att pinga värdar som tidigare, men bara värdarna i debian10 värdgrupp.

Skapa en lekbok ping_debian10_hosts.yaml i lekböcker/ katalog enligt följande:

$nanolekböcker/ping_debian10_hosts.yaml

Skriv följande rader i ping_debian10_hosts.yaml Ansible playbook:

- värdar: debian10
användare: ansible
uppgifter:
- namn: Ping alla Debian10värdar
ping:

Istället för värdar: alla , Jag har lagt till värdar: debian10 här. debian10 är värdgruppen. Denna spelbok kommer bara att köras på värdarna i debian10 värdgrupp.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Kör spelboken enligt följande:

$ansible-playbook playbooks/ping_debian10_hosts.yaml

Som du kan se är det bara värdarna i debian10 värdgruppen pingar.

Skapa en annan spelbok med samma metod ping_centos8_hosts.yaml som följer:

$nanolekböcker/ping_centos8_hosts.yaml

Skriv följande rader i ping_centos8_hosts.yaml Ansible playbook:

- värdar: centos8
användare: ansible
uppgifter:
- namn: Ping alla CentOS8värdar
ping:

På samma sätt har jag lagt till värdar: centos8 här. centos8 är värdgruppen. Denna spelbok kommer bara att köras på värdarna i centos8 värdgrupp.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Kör spelboken enligt följande:

$ansible-playbook playbooks/ping_centos8_hosts.yaml

Som du kan se är det bara värdarna i centos8 värdgruppen pingar.

Ansible Variable Typer

Det finns olika typer av variabler i Ansible. De viktigaste variablerna är Ansible Facts variabler och Användardefinierade variabler .

Ansible Facts variabler: Beroende på vilken värd Ansible arbetar på genererar Ansible Ansible fakta variabler. Ansible fact variabler innehåller information om värden, till exempel IP -adresser, värdnamn, domännamn, datum, tid, skalmiljövariabler och mer.

Användardefinierade variabler: Dessa är anpassade variabler som definieras av användaren. Du kan skicka användardefinierade variabler från kommandoraden eller använda inventeringsfilen.

Huvudsakligen användardefinierade variabler är av två typer: Gruppvariabler och Värdvariabler .

Ansible Variable Preedence

Variabelns företräde för Ansible är : Kommandoradsvariabler > Värdvariabler > Gruppvariabler

Om du anger samma variabel som värdvariabeln och gruppvariabeln tillämpas värdvariabeln.

På samma sätt ersätter variablerna du anger från kommandoraden medan du kör en spelbok både värd- och gruppvariablerna.

Arbeta med Ansible Facts Variables

I det här avsnittet kommer jag att visa dig hur du arbetar med variabler för Ansible facts. Så, låt oss komma igång!

Du kan lista alla variabelerna Ansible Facts för värdarna i din värdar inventeringsfil enligt följande:

$ansvarsfullt allt-uansible-muppstart

Som du kan se är alla Ansible Facts -variablerna listade i JSON -format. Det är en väldigt lång lista.

Eftersom listan är ganska lång kan du öppna den med ett personsökarprogram som t.ex. mindre som följer:

$ansvarsfullt allt-uansible-muppstart| mindre

Nu kan du rulla utgången upp, ner, vänster och höger efter behov.

Du kan också söka efter variabelnamn från personsökaren. För att göra det, tryck på / tangent på tangentbordet. Skriv sedan in söksträngen ( värdnamn i mitt fall) och tryck på .

Som du kan se är variabeln Ansible facts som matchade söksträngen ansible_hostname . Du kan trycka på N att gå till nästa match och P för att gå till föregående match från personsökaren. Så här hittar du variabeln Ansible facts som du behöver för ditt Ansible -projekt.

Låt oss nu se hur du får tillgång till variablerna Ansible facts.

Skapa en ny spelbok print_variable1.yaml som följer:

$nanolekböcker/print_variable1.yaml

Skriv följande rader i print_variable1.yaml fil:

- värdar: alla
användare: ansible
uppgifter:
- namn: Skriv utvärdnamnav alla värdar
felsökning:
meddelande:'{{ansible_hostname}}'

Här har jag lagt till en uppgift Skriv ut värdnamn för alla värdar . Denna uppgift använder Ansible felsöka modul för att skriva ut ett meddelande när spelboken körs.

meddelande är den enda erforderliga parametern för felsöka modul. De meddelande parameter accepterar en sträng i citattecken, vilket är meddelandet som kommer att skrivas ut på konsolen.

Här, {{variable_name}} format används för att komma åt en variabel. I detta fall, {{ansible_hostname}} används för att skriva ut ansible_hostname variabel för var och en av värdarna i inventeringsfilen.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Du kan också komma åt variabeln Ansible facts som ansible_facts [variabelnamn] . Så, den ansible_hostname variabel kommer att bli ansible_facts [värdnamn] .

Vi kan skriva om print_variable1.yaml spelbok så här också. Vi får samma effekt.

- värdar: alla
användare: ansible
uppgifter:
- namn: Skriv utvärdnamnav alla värdar
felsökning:
meddelande:'{{ansible_facts [' variable_name ']}}'

Kör spelboken print_variable1.yaml som följer:

$ansible-playbook playbooks/print_variable1.yaml

Som du kan se skrivs värdnamnet för var och en av värdarna i inventeringsfilen ut på konsolen.

Låt oss nu skriva ut standard IPv4 -adressen för varje värd tillsammans med värdnamnet. Som du ser kan värdens standard IPv4 -adress nås med adress egendom till ansible_default_ipv4 objekt.

Skapa en ny spelbok print_variable2.yaml som följer:

$nanolekböcker/print_variable2.yaml

Skriv följande rader i print_variable2.yaml fil:

- värdar: alla
användare: ansible
uppgifter:
- namn: Skriv utvärdnamnav alla värdar
felsökning:
meddelande:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

Denna lekbok är densamma som tidigare. Den enda skillnaden är den nya variabeln {{ansible_default_ipv4.address}} i meddelande alternativet för felsöka modul.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Springa det print_variable2.yaml playbook enligt följande:

$ansible-playbook playbooks/print_variable2.yaml

Som du kan se skrivs standard IPv4 -adressen och värdnamnet för värdarna ut på konsolen.

Så det här är hur du arbetar med variabler för Ansible Facts.

Ställa in användardefinierade variabler från kommandoraden:

I det här avsnittet kommer jag att visa dig hur du ställer in användardefinierade variabler från kommandoraden medan du kör Ansible playbooks.

Skapa först en ny spelbok print_variable3.yaml som följer:

$nanolekböcker/print_variable3.yaml

Skriv följande rader i print_variable3.yaml fil:

- värdar: alla
användare: ansible
uppgifter:
- namn: Skriv utkommandoradvariabel
felsökning:
meddelande:'Välkommen {{username}}'

Här har jag använt felsöka modul för att skriva ut meddelandet Välkommen {{användarnamn}} . Användarnamn är en variabel som kommer att ersättas när vi kör spelboken.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Kör spelboken print_variable3.yaml som följer:

$ansible-playbook-Och 'användarnamn = Bob'lekböcker/print_variable3.yaml

NOTERA: Här, -Och alternativet används för att skicka ett Användarnamn variabel med värdet Guppa till lekboken print_variable3.yaml från kommandoraden.

Som du kan se, meddelandet Välkommen Bob är tryckt på konsolen.

Låt oss nu upptäcka hur man skickar flera variabler från kommandoraden.

Skapa en ny spelbok print_variable4.yaml som följer:

$nanolekböcker/print_variable4.yaml

Skriv följande rader i print_variable4.yaml fil:

- värdar: alla
användare: ansible
uppgifter:
- namn: Skriv ut användardefinierade variabler
felsökning:
meddelande:'användarnamn = {{användarnamn}} http_port = {{http_port}}'

Lekboken borde vara mycket bekant för dig just nu. Allt det gör är att skriva ut de två variablerna Användarnamn och http_port på konsolen.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Du kan nu passera Användarnamn och http_port variabel till spelboken med två olika -Och alternativ enligt följande:

$ ansible-playbook-Och 'användarnamn = Bob' -Och 'http_port = 8080'
lekböcker/print_variable4.yaml

Eller du kan helt enkelt separera variablerna med ett blanksteg enligt följande:

$ ansible-playbook-Och 'användarnamn = Bob http_port = 8080'
lekböcker/print_variable4.yaml

Som du kan se, Användarnamn och http_port variabler skrivs ut på konsolen.

Arbeta med användardefinierade gruppvariabler

Säg att du vill lägga till några variabler till en grupp värdar. Denna åtgärd är mycket lätt att göra i Ansible.

Öppna först din värdar inventeringsfil enligt följande:

$nanovärdar

Skriv följande rader i din värdar inventeringsfil:

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

Som ni ser har jag skapat ett nytt avsnitt [debian10: vars] för debian10 värdgrupp och lade till variablerna ( Användarnamn och http_port ) för debian10 värdgrupp där.

På samma sätt har jag skapat ett nytt avsnitt [centos8:vars] för centos8 värdgrupp och lade till variablerna ( Användarnamn och http_port ) för centos8 värdgrupp där.

När du är klar sparar du värdar inventeringsfil genom att trycka på + X följd av OCH och .

Springa det print_variable4.yaml spelböcker enligt följande:

$ansible-playbook playbooks/print_variable4.yaml

Som du kan se skickas de korrekta variablerna till var och en av värdarna beroende på deras värdgrupp.

Arbeta med användardefinierade värdvariabler

I det här avsnittet kommer jag att visa dig hur du ställer in variabler för specifika värdar i inventeringsfilen.

Öppna först värdar inventeringsfil enligt följande:

$nanovärdar

För att lägga till variabler till en specifik värd (säg, vm1.nodekite.com ), lägg bara till ett mellanslag/flik efter värdens IP/DNS -namn och skriv in dina variabler, som visas på skärmdumpen nedan.

Du kan också lägga till flera variabler. Bara separera varje variabel med ett mellanslag.

När du är klar sparar du inventeringsfilen genom att trycka på + X följd av OCH och .

Springa det print_variable4.yaml spelböcker enligt följande:

$ansible-playbook playbooks/print_variable4.yaml

Som du kan se är variablerna bara inställda för vm1.nodekite.com värd. De andra värdarna har gruppvariabler som tillämpas på dem.

Generera lagerfiler snabbt med intervall

Du kan använda intervall för att snabbt generera Ansible -inventariefiler om dina värd -IP -adresser eller DNS -namn är konsekventa (dvs. har ett specifikt format).

I de tidigare exemplen har jag använt värdar vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com och vm4.nodekite.com . Istället för att skriva in 4 rader hade jag bara kunnat skriva vm [1: 4] .nodekite.com i inventeringsfilen.

För att experimentera med intervall, öppna värdar inventeringsfil enligt följande:

$nanovärdar

Ta bort alla värdar och variabler från lagerfilerna.

Nu kan vi byta ut vm1.nodekite.com och vm2.nodekite.com med vm [1: 2] .nodekite.com för debian10 värdgrupp enligt följande.

På samma sätt kan vi byta ut vm3.nodekite.com och vm4.nodekite.com med vm [3: 4] .nodekite.com för centos8 värdgrupp.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Springa det ping_all_hosts.yaml som följer:

$ansible-playbook playbooks/ping_all_hosts.yaml

Som du ser utökades värdintervallet när jag körde spelboken.

Lagring av variabler i olika filer

Det är mycket enkelt att lagra gruppvariablerna och värdvariablerna i samma inventeringsfil. Men du kanske letar efter mer flexibilitet. Speciellt när du vill använda intervall i din lagerfil eftersom du inte längre kan ställa in värdvariabler om du använder intervall. Du kan lagra gruppvariabler och värdvariabler i olika filer. I det här avsnittet kommer jag att visa dig hur det är gjort.

Som standard letar Ansible efter gruppvariabler i group_vars / katalog- och värdvariabler i host_vars / katalog.

Så, skapa group_vars / och host_vars / katalog enligt följande:

$mkdir -pv {värd, grupp}_vars

För att ställa in gruppvariabler för debian10 värdgrupp, skapa en fil debian10 (samma som gruppnamn) i group_vars / katalog enligt följande:

$nanogroup_vars/debian10

Skriv in dina variabler enligt följande:

användarnamn: Lily
http_port: 4343

När du är klar sparar du filen genom att trycka på + X följt av Y och .

På samma sätt, för att ställa in gruppvariabler för centos8 värdgrupp, skapa en fil centos8 (samma som gruppnamn) i group_vars / katalog enligt följande:

$nanogroup_vars/centos8

Skriv in dina variabler enligt följande:

användarnamn: Bob
http_port: 7878

När du är klar sparar du filen genom att trycka på + X följt av Y och .

Springa det print_variable4.yaml playbook enligt följande:

$ansible-playbook playbooks/print_variable4.yaml

Som du kan se är gruppvariablerna korrekt inställda för varje värdgrupp.

För att ställa in värdvariabler för värden vm1.nodekite.com , skapa en fil vm1.nodekite.com (samma som värdnamnet eller IP -adressen) i host_vars / katalog enligt följande:

$nanovm1.nodekite.com

Skriv in dina värdvariabler enligt följande:

användarnamn: Alex
http_port: 7788

När du är klar sparar du filen genom att trycka på + X följt av Y och .

Springa det print_variable4.yaml playbook enligt följande:

$ ansible-playbook playbooks/print_variable4.yaml
[

Som du kan se är värdvariablerna korrekt inställda för värden vm1.nodekite.com .

Arbetar med loopar i Ansible

I det här avsnittet kommer jag att visa dig hur du använder loopar i Ansible.

Skapa först en ny spelbok loop1.yaml i lekböcker/ katalog enligt följande:

$nanolekböcker/loop1.yaml

Skriv följande rader i loop1.yaml spelbok:

- värdar: alla
användare: ansible
uppgifter:
- namn: Skriv ut användarlista
felsökning:
meddelande:'Användare: {{item}}'
with_items:
- Alex
- Bob
- Lily

Här har jag en uppgift som skriver ut en lista över användare som använder loop.

För att ange iterationsvärden för uppgiften använder du med_artiklar modul. Sedan lägger du till värdena en efter en.

with_items:
- Alex
- Bob
- Lily

Du får tillgång till värdet av den aktuella iterationen med Artikel variabel.

felsökning:
meddelande:'Användare: {{item}}'

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Springa det loop1.yaml playbook enligt följande:

$ansible-playbook playbooks/loop1.yaml

Som du kan se kördes samma uppgift för varje objekt på varje värd. Så slingan fungerar.

Arbeta med villkor i Ansible

Om du vill köra uppgifter utifrån vissa förutsättningar, är detta avsnitt för dig.

För att köra uppgifter utifrån villkor kan du använda när modul i Ansible. Låt oss se ett exempel på denna modul. Skapa först en ny spelbok skick1.yaml som följer:

$nanolekböcker/skick1.yaml

Skriv följande rader i skick1.yaml spelbok:

- värdar: alla
användare: ansible
uppgifter:
- namn: Kör den här uppgiften endast på Debian
felsökning:
meddelande:'den här uppgiften körs på Debian'
när: ansible_facts['distribution']=='Debian'

Här,

ansible_facts [‘distribution’] == ‘Debian’ används för att kontrollera om distribution är Debian . Uppgiften körs bara om distributionen är Debian.

De ansible_facts [‘distribution’] används för att komma åt variabeln Ansible Facts ansible_distribution . Du kan också söka efter distributionsversion med ansible_distribution_major_version variabel.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Springa det skick1.yaml playbook enligt följande:

$ansible-playbook playbooks/skick1.yaml

Som du kan se kördes uppgiften bara på Debians värdar. Uppgiften kördes inte på CentOS -värdar.

Du kan också söka efter flera villkor samtidigt och köra uppgiften bara om alla villkor är sanna. Låt oss se ett exempel.

Skapa en ny spelbok skick2.yaml som följer:

$nanolekböcker/skick2.yaml

Skriv följande rader i skick2.yaml fil:

- värdar: alla
användare: ansible
uppgifter:
- namn: Kör den här uppgiften endast på Debian10
felsökning:
meddelande:'den här uppgiften körs på Debian 10'
när: ansible_facts['distribution']=='Debian'
och ansible_facts['distribution_major_version']=='10'

Här körs uppgiften bara om distributionen är Debian ( ansible_facts [‘distribution’] == ‘Debian’ ) och versionen är 10 ( ansible_facts [‘distribution_major_version’] == ’10’ ). Om båda villkoren är sanna körs uppgiften. I övrigt kommer uppgiften inte att köras.

Jag har använt och nyckelord för att kontrollera om båda villkoren är sanna här. Om du vill kontrollera om något av villkoren är sant kan du använda eller sökord istället.

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Kör spelboken skick2.yaml som följer:

$ansible-playbook playbooks/skick2.yaml

Som du kan se kördes uppgiften bara på Debian 10 -värdar.

Låt oss ändra spelboken skick2.yaml att köra uppgiften endast på Debian 8 -värdar enligt följande.

Som du ser hoppades alla värdar över eftersom jag inte har några Debian 8 -värdar i inventeringsfilen.

Arbetar med Ansible apt Module

De benägen modul i Ansible används för att installera ett specifikt programpaket på Ubuntu/Debian -värdar. Låt oss se hur du använder den här modulen.

Skapa först en ny spelbok apt1.yaml i lekböcker/ katalog enligt följande:

$nanolekböcker/apt1.yaml

Skriv följande rader i apt1.yaml spelbok:

- värdar: debian10
användare: ansible
bli sann
uppgifter:
- namn: Installera apache2
benägen:
namn: apache2
tillstånd: senaste

De benägen modulen kräver endast namn av paketet som du vill installera/uppgradera/ta bort och stat av paketet.

Här försöker jag installera apache2 paket ( namn: apache2 ) på mina Debian 10 -värdar. När jag försöker installera ett paket och även uppgradera det om en ny version är tillgänglig, kommer stat borde vara senast .

stat accepterar också följande alternativ:

- frånvarande - Paketet tas bort om det redan är installerat.
- senast - Paketet kommer att uppgraderas om en uppdatering är tillgänglig. Om paketet inte redan är installerat kommer det att installeras.
- närvarande - Paketet kommer att installeras om det inte redan är installerat. Men paketet kommer inte att uppgraderas om det finns en uppdatering.

Lägg märke till att jag har lagt till bli sann i lekboken. Detta kommer att ge ansible användar sudo -privilegier för att ändra filsystemstrukturen (dvs. installera/uppgradera/ta bort paket). Utan bli sann , benägen modulen kommer inte att kunna installera apache2 paket.

När du är klar sparar du spelboken genom att trycka på + X följd av OCH och .

Springa det apt1.yaml playbook enligt följande:

$ansible-playbook playbooks/apt1.yaml

Som du kan se kördes spelboken framgångsrikt på Debian 10 -värdar.

Som du kan se, apache2 paketet är installerat på mina Debian 10 -värdar.

Arbetar med Ansible dnf/yum -modul

De dnf och yum modul i Ansible används för att installera ett specifikt programpaket på CentOS/RHEL -värdar. Du kan använda denna modul på samma sätt som du gjorde benägen modul i det tidigare avsnittet i denna artikel.

Både dnf och yum moduler accepterar samma parametrar. Du kan använda dnf modul på CentOS/RHEL 8 -värdar och yum på CentOS/RHEL 7 eller äldre.

Låt oss nu titta på ett exempel på denna modul.

Skapa först en ny spelbok dnf1.yaml i lekböcker/ katalog enligt följande:

$nanolekböcker/dnf1.yaml

Skriv följande rader i dnf1.yaml spelbok:

- värdar: centos8
användare: ansible
bli sann
uppgifter:
- namn: Installera httpd -paketet
dnf:
namn: httpd
tillstånd: senaste

De dnf och yum modulen kräver endast namn av paketet som du vill installera/uppgradera/ta bort och stat av paketet.

Här försöker jag installera httpd paket ( namn: httpd ) på mina CentOS 8 -värdar. När jag försöker installera ett paket, och jag skulle också vilja uppgradera det om en ny version är tillgänglig, stat borde vara senast .

stat accepterar följande alternativ:

- frånvarande - Paketet tas bort om det redan är installerat.
- senast - Paketet kommer att uppgraderas om en uppdatering är tillgänglig. Om paketet inte redan är installerat kommer det att installeras.
- närvarande - Paketet kommer att installeras om det inte redan är installerat. Men paketet kommer inte att uppgraderas om det finns en uppdatering.

Lägg märke till att jag har lagt till bli sann i lekboken. Detta ger ansible användar sudo -privilegier för att ändra filsystemstrukturen (dvs. installera/uppgradera/ta bort paket). Utan bli sann , benägen modulen kommer inte att kunna installera httpd paket.

När du är klar sparar du spelboken genom att trycka på + X följd av OCH och .

Springa det dnf1.yaml playbook enligt följande:

$ansible-playbook playbooks/dnf1.yaml

Som du kan se kördes spelboken framgångsrikt på CentOS 8 -värden.

Arbeta med Ansible servicemodul

De service modul i Ansible används för att starta, stoppa, starta om, aktivera (lägg till tjänst till start) och inaktivera (ta bort tjänst från start) tjänster i dina värdar.

I tidigare avsnitt visade jag dig hur du installerar Apache HTTP -serverpaketet med Ansible benägen , dnf och yum moduler. Låt oss nu se till att Apache HTTP -servertjänsten körs och har lagts till i systemstart.

Jag kommer att arbeta med mina Debian 10 -värdar. Men du kan arbeta med CentOS 8 -värdar om du vill. Justera helt enkelt spelboken därefter.

Skapa först en ny Ansible -spelbok apt2.yaml som följer:

$nanolekböcker/apt2.yaml

Skriv följande rader i apt2.yaml spelbok:

- värdar: debian10
användare: ansible
bli sann
uppgifter:
- namn: Installera apache2
benägen:
namn: apache2
tillstånd: senaste
- namn: Starta apache2 -tjänsten
service:
namn: apache2
tillstånd: startade
aktiverat: Sant

Här har jag lagt till en ny uppgift, Starta apache2 -tjänsten .

namn: apache2 - tjänsten jag arbetar med är apache2 .

tillstånd: startade - tjänsten måste köras.

aktiverat: Sant - tjänsten måste läggas till i systemstart.

De stat parameter accepterar andra värden.

- laddas om - Tjänsten måste ladda om konfigurationsfilerna.
- startade om - Tjänsten måste startas om.
- satte igång - Tjänsten måste vara igång. Starta tjänsten om tjänsten inte körs.
- slutade - Tjänsten måste stoppas. Om tjänsten körs, stoppa tjänsten.

Kör spelboken apt2.yaml som följer:

$ansible-playbook playbooks/apt2.yaml

Som du kan se gick spelboken framgångsrikt.

Som du kan se, apache2 tjänsten körs på mina Debian 10 -värdar.

Arbeta med Ansible copy -modul

Ansible kopiera modul används huvudsakligen för att kopiera filer från din dator till fjärrvärdar.

I det tidigare avsnittet installerade jag Apache 2 -webbservern på mina Debian 10 -värdar. Låt oss nu kopiera en index.html fil till webbrot för Debian 10 -värdar.

Skapa först en ny katalog filer/ som följer:

$mkdir -vfiler

Skapa en ny fil index.html i filer/ katalog enligt följande:

$nanofiler/index.html

Skriv följande rader i index.html fil:


< html >
< huvud >
< titel >Webbserver från Ansible</ titel >
</ huvud >
< kropp >
< h1 >Välkommen till LinuxHint</ h1 >
< sid >Denna webbserver distribuerades med Ansible.</ sid >
</ kropp >
</ html >

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Skapa en ny Ansible -spelbok apt3.yaml som följer:

$nanolekböcker/apt3.yaml

Skriv följande rader i apt3.yaml fil:

- värdar: debian10
användare: ansible
bli sann
uppgifter:
- namn: Installera apache2
benägen:
namn: apache2
tillstånd: senaste
- namn: Kopiera index.html till servern
kopiera:
src: ../filer/index.html
dest:/var/www/html/index.html
läge: 0644
ägare: www-data
grupp: www-data
- namn: Starta apache2 -tjänsten
service:
namn: apache2
tillstånd: startade
aktiverat: Sant

Här, uppgiften Kopiera index.html till servern kopierar index.html från filer/ katalogen till / var / www / html / katalog över Debian 10 -värdar.

src: ../files/index.html - Källfilens sökväg.
dest: /var/www/html/index.html - Målfilens sökväg.
läge: 0644 - Behörigheterna för filanvändaren (6 - läs och skriv), grupp (4 - läs) och andra (4 - läs).
ägare: www-data - Ställ in ägaren till filen www-data .
grupp: www-data - Ställ in gruppens fil till www-data .

När du är klar sparar du filen genom att trycka på + X följd av OCH och .

Springa det apt3.yaml playbook enligt följande:

$ansible-playbook playbooks/apt3.yaml

Som du kan se är uppgiften Kopiera index.html till servern är framgångsrik.

Som du kan se, index.html filen kopierades till Debian 10 -värdar.

Som du kan se serverar Debian 10 -webbservern index.html sida som jag just har kopierat till Debian 10 -värdar.

Så det här är grunderna i Ansible. Du kan lära dig mer om Ansible genom att läsa den officiella dokumentationen för Ansible. Tack för att du läste denna artikel.