Ansible Tutorial - Lär dig att skriva Ansible Playbooks



I den här Ansible Tutorial-bloggen lär du dig att skriva Ansible-spelböcker, adhoc-kommandon och utföra praktisk användning för att distribuera Nginx på din värdmaskin.

Ansible Tutorial

Jag hoppas att du gick igenom min tidigare blogg för att lära dig och de mest använda terminologierna för Ansible. Om du inte har gjort det, vänligen kolla in det så att du kan få en bättre förståelse för denna Ansible Tutorial.Du bör också veta att Ansible utgör en viktig del av som ett verktyg för konfigurationshantering, distribution och orkestrering.

Låt mig ge dig en översikt över denna 'Ansible Tutorial':





Ansible Playbook Tutorial | DevOps-utbildning | Edureka

Ansible Tutorial - Skriva Ansible Playbooks

Playbooks i Ansible är skrivna i YAML-format. Det är ett mänskligt läsbart dataserialiseringsspråk. Det används ofta för konfigurationsfiler. Den kan också användas i många applikationer där data lagras.



För Ansible börjar nästan alla YAML-filer med en lista. Varje objekt i listan är en lista med nyckel / värde-par, vanligtvis kallad 'hash' eller 'ordlista'. Så vi måste veta hur man skriver listor och ordböcker i YAML.

djup kopia vs grunt kopia java

Alla medlemmar i en lista är rader som börjar på samma indrycksnivå som börjar med ett - - (streck och mellanslag). Mer komplicerade datastrukturer är möjliga, såsom listor över ordböcker eller blandade ordböcker vars värden är listor eller en blandning av båda.

t.ex. För en lista över avdelningar i edureka:



avdelningar: - marknadsföring - försäljning - lösningar - innehållsskrivning - support - produkt

Låt mig nu ge dig ett exempel på en ordbok:

-USA -kontinent: Nordamerika -huvudstad: Washington DC -befolkning: 319 miljoner

Värdar och användare:

För varje spel i en spelbok får du välja vilka maskiner i din infrastruktur som ska riktas in och vilken fjärranvändare som ska slutföra uppgifterna. För att inkludera värdar i Ansible-lager använder vi IP-adresserna på värdmaskinerna.

I allmänhet är värdarna en lista över en eller flera grupper eller värdmönster, åtskilda av kolon. Fjärranvändaren är bara namnet på användarkontot.

Variabler:

Ansible använder variabler som definierats tidigare för att möjliggöra mer flexibilitet i spelböcker och roller. De kan användas för att slinga igenom en uppsättning av givna värden, få tillgång till olika information som värdens namn på ett system och ersätta vissa strängar i mallar med specifika värden.

Ansible definierar redan en rik uppsättning variabler, individuella för varje system. När Ansible körs på ett system samlas alla fakta och information om systemet och ställs in som variabler.

Men det finns en regel för namngivning av variabler. Variabla namn ska vara bokstäver, siffror och understrykningar. Variabler bör alltid börja med en bokstav. T.ex. wamp_21, port5 är giltiga variabelnamn, medan 01_port, _server är ogiltiga.

Uppgifter:

Med uppgifter kan du dela upp bitar av konfigurationspolicy i mindre filer. Uppgiften inkluderar drag från andra filer. Uppgifter i Ansible går med ganska mycket den engelska betydelsen av det.

Exempel: Installera, uppdatera etc.

Hanterare:

Hanterare är precis som vanliga uppgifter i en Ansible-spelbok, men körs bara om uppgiften innehåller ett meddelandedirektiv och också indikerar att det har ändrat något. Till exempel, om en konfigurationsfil ändras kan uppgiften som refererar till konfigurationsfilen meddela en omstarthanterare för tjänsten.

Låt mig ge dig ett exempel på en spelbok som startar Apache httpd-serverprogrammet:

----värdar: webbservrar vars: http_port: 80 max_clients: 200 fjärranvändare: rot uppgifter: - namn: se till att apache är den senaste versionen yum: namn = httpd tillstånd = senaste - namn: skriv apache-konfigurationsfilen mall: src = / srv / httpd.j2 dest = / etc / httpd.conf meddela: - starta om apache - namn: se till att apache körs (och aktivera det vid start) service: namn = httpd tillstånd = startat aktiverat = ja hanterare: - namn: starta om apache service: namn = httpd-tillstånd = omstartat

Jag hoppas att exemplet kommer att relatera dig till all beskrivning av spelbokskomponenterna som jag har nämnt ovan. Om det fortfarande inte är klart för dig, oroa dig inte alla dina tvivel kommer att vara tydliga i den senare delen av den här bloggen.

Det här handlar om spelböcker. Spelböckerna som kommer att skrivas av dig. Men Ansible ger dig också ett brett utbud av moduler som du kan använda.

Ansible Tutorial - Modules

Moduler i Ansible är idempotenta. Från en RESTful-serviceställning, för att en operation (eller ett serviceanrop) ska vara idempotent, kan klienter ringa samma samtal upprepade gånger samtidigt som de ger samma resultat. Med andra ord, att göra flera identiska förfrågningar har samma effekt som att göra en enda begäran.

Det finns olika typer av moduler i Ansible

  • Kärnmoduler
  • extra moduler

Kärnmoduler

Det här är moduler som det centrala Ansible-teamet underhåller och alltid kommer att levereras med Ansible själv. De kommer också att få lite högre prioritet för alla förfrågningar än de som finns i 'extra' -referenser.

Källan till dessa moduler är värd Ansible på GitHub i Ansible-modules-core.

Extramoduler

Dessa moduler levereras för närvarande med Ansible, men kan levereras separat i framtiden. De underhålls också mest av Ansible-samhället. Icke-kärnmoduler är fortfarande fullt användbara, men kan få något lägre svarsfrekvenser för problem och pull-förfrågningar.

Populära 'extra' -moduler kan marknadsföras till kärnmoduler över tid.

Källan till dessa moduler är värd Ansible på GitHub i Ansible-modules-extras.

Till exempel: en av extramodulen i fjärrhanteringsmodulerna är ipmi_power-modulen, som är en strömbrytare för fjärrmaskinerna. Det kräver python 2.6 eller senare och pyghmi för att köras.

Du kan använda den här modulen genom att skriva ett adhoc-kommando som det jag har skrivit nedan:

ipmi_power: name = 'test.domain.com' user = 'localhost' password = 'xyz' state = 'on'

Ansible Tutorial - Return Values

Ansible-moduler returnerar normalt en datastruktur som kan registreras i en variabel eller ses direkt när den skickas av Ansible-programmet. Varje modul kan valfritt dokumentera sina egna unika returvärden.

Några exempel på returvärden är:

  • ändrad: returneras med ett booleskt värde när uppgiften gör någon ändring.
  • failed: returnerar ett booleskt värde om uppgiften misslyckas
  • msg: det returnerar en sträng med ett generiskt meddelande som vidarebefordras till användaren.

Ansible Tutorial - AdHoc-kommandon

Adhoc-kommandon är enkla enradskommandon för att utföra vissa åtgärder. Körande moduler med Ansible-kommandon är adhoc-kommandon.

T.ex:

ansible host -m netscaler -a 'nsc_host = nsc.example.com user = apiuser password = apipass' 

Ovanstående adhoc-kommando använder netscaler-modulen för att inaktivera servern. Det finns hundratals moduler tillgängliga i Ansible, varifrån du kan hänvisa till och skriva adhoc-kommandon.

Tja, nog med alla teoretiska förklaringar, låt mig förklara dig Ansible med några händer på.

Ansible Tutorial - Hands On

Jag ska skriva en spelbok för att installera Nginx på min nod / värdmaskin.

Låt oss börja :)

Steg 1: Anslut till dina värdar med SSH. För det måste du skapa en offentlig SSH-nyckel.

Använd kommandot nedan:

ssh-keygen

Generera Ssh Key - Ansible Tutorial - Edureka

Som du kan se på ögonblicksbilden ovan, kommandot ssh-keygen genererade en offentlig SSH-nyckel.

Steg 2: Din nästa uppgift är att kopiera den offentliga SSH-nyckeln till dina värdar. För att göra det, använd kommandot nedan:

ssh-copy-id -i root @

Ögonblicksbilden ovan visar SSH-nyckeln som kopieras till värdarna.

Steg 3: Lista IP-adresserna till dina värdar / noder i ditt lager.

Använd följande kommando:

användning av skanner i Java

vi / etc / ansible / hosts

Detta öppnar en vi-redaktör där du kan lista ned IP-adresserna för dina värdar. Detta är nu din inventering.

Steg 4: Låt oss pinga för att säkerställa att en anslutning har upprättats.

Ögonblicksbilden ovan bekräftar att anslutningen har gjorts mellan din styrmaskin och värd.

Steg 5: Låt oss nu skriva en spelbok för att installera Nginx på värdmaskinen. Du kan skriva din spelbok i vi-redigeraren. För det, skapa helt enkelt din spelbok med kommandot:

vi

Nedanstående ögonblicksbild visar min spelbok för att installera Nginx skriven i YAML-format.

Uppgifterna för en spelbok definieras i YAML som en lista med ordböcker och utförs från topp till botten. Om vi ​​har flera värdar testas varje uppgift för varje värd innan vi går vidare till nästa. Varje uppgift definieras som en ordlista som kan ha flera tangenter, till exempel “namn” eller “sudo” som anger namnet på uppgiften och om den kräver sudo-rättigheter.

En variabel server Port är inställt som lyssnar på TCP-port 8080 för inkommande förfrågningar.

Här är den första uppgiften att få det nödvändiga paketet för installation av Nginx och sedan installera det.Internt kommer Ansible att kontrollera om katalogen finns och skapa den om den inte är, annars gör den ingenting.

Nästa uppgift är att konfigurera Nginx.I Nginx innehåller sammanhang konfigurationsdetaljer.

Här är mallen en fil som du kan distribuera på värdar. Mallfiler innehåller dock också några referensvariabler som hämtas från variabler som definierats som en del av en Ansible-spelbok eller fakta som samlats in från värdarna. Fakta som innehåller konfigurationsdetaljerna hämtas från en källkatalog och kopieras till en målkatalog.

Hanterare här definierar den åtgärd som ska utföras endast efter meddelande om uppgifter eller tillståndsändringar. I den här spelboken definierade vi, meddelar: starta om Nginx-hanteraren som startar om Nginx när filerna och mallarna kopieras till värdarna.

Spara nu filen och avsluta.

Steg 6: Låt oss nu köra den här spelboken med kommandot nedan:

ansible-playbook .yml

vad är skillnaden mellan hashmap och hashtable

Vi kan se på skärmdumpen ovan att vår uppgift är att köras Nginx installeras.

Steg 7: Låt oss kontrollera om Nginx är installerat på min värdmaskin. Använd kommandot nedan:

ps waux | grep nginx

Du kan se på skärmdumpen ovan att olika process-ID 3555 och 103316 körs vilket säkerställer att Nginx körs på dina värdmaskiner.

Grattis! Du har implementerat Nginx på din värd med Ansible-spelböcker. Jag hoppas att du har haft glädje av att läsa den här Ansible Tutorial-bloggen. Vänligen meddela mig om du har några frågor i kommentarfältet nedan.

Om du hittade detta “ Ansible Tutorial ' relevant, kolla in av Edureka, ett pålitligt online-lärande företag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edureka DevOps Certification Training-kursen hjälper eleverna att få expertis inom olika DevOps-processer och verktyg som Puppet, Jenkins, Ansible, Nagios och Git för att automatisera flera steg i SDLC.