Ansible Tutorial - Lær at skrive Ansible Playbooks

I denne Ansible Tutorial-blog lærer du, hvordan du skriver Ansible playbooks, adhoc-kommandoer og udfører hands-on for at implementere Nginx på din værtsmaskine.

Ansible Tutorial

Jeg håber, du har gennemgået min tidligere blog for at lære og de mest anvendte terminologier i Ansible. Hvis du ikke har gjort det, skal du tjekke det ud, så du kan få en bedre forståelse af denne Ansible Tutorial.Du skal også vide, at Ansible udgør en vigtig del af som et værktøj til konfigurationsstyring, implementering og orkestrering.



Lad mig give dig et overblik over denne 'Ansible Tutorial':



Ansible Playbook Tutorial | DevOps træning | Edureka

Ansible Tutorial - Skrivning af Ansible Playbooks

Playbooks i Ansible er skrevet i YAML-format. Det er et menneskeligt læsbart dataserialiseringssprog. Det bruges ofte til konfigurationsfiler. Det kan også bruges i mange applikationer, hvor data lagres.



For Ansible starter næsten alle YAML-filer med en liste. Hvert element på listen er en liste over nøgle / værdipar, der almindeligvis kaldes en 'hash' eller en 'ordbog'. Så vi har brug for at vide, hvordan man skriver lister og ordbøger i YAML.

Alle medlemmer af en liste er linjer, der starter på det samme indrykningsniveau, der starter med et '-' (bindestreg og mellemrum). Mere komplicerede datastrukturer er mulige, såsom lister over ordbøger eller blandede ordbøger, hvis værdier er lister eller en blanding af begge.

for eksempel. For en liste over afdelinger i edureka:



afdelinger: - marketing - salg - løsninger - skrivning af indhold - support - produkt

Lad mig nu give dig et eksempel på en ordbog:

-USA -kontinent: Nordamerika -hovedstad: Washington DC-befolkning: 319 millioner

Værter og brugere:

For hvert spil i en playbook får du vælge hvilke maskiner i din infrastruktur, der skal målrettes mod, og hvilken fjernbruger, der skal udføre opgaverne. For at inkludere værter i Ansible-beholdningen bruger vi IP-adresserne på værtsmaskinerne.

Generelt er værterne en liste over en eller flere grupper eller værtsmønstre adskilt af kolon. Fjernbrugeren er bare navnet på brugerkontoen.

Variabler:

Ansible bruger variabler, der er defineret tidligere for at muliggøre mere fleksibilitet i playbøger og roller. De kan bruges til at gennemløbe et sæt givne værdier, få adgang til forskellige oplysninger som værtsnavnet på et system og erstatte visse strenge i skabeloner med specifikke værdier.

Ansible definerer allerede et rigt sæt variabler, individuelt for hvert system. Når Ansible kører på et system, samles alle fakta og informationer om systemet og indstilles som variabler.

Men der er en Herske til navngivning af variabler. Variable navne skal være bogstaver, tal og understregninger. Variabler skal altid starte med et bogstav. For eksempel. wamp_21, port5 er gyldige variabelnavne, mens 01_port, _server er ugyldige.

Opgaver:

Opgaver giver dig mulighed for at opdele bits i konfigurationspolitikken i mindre filer. Opgaven inkluderer pull fra andre filer. Opgaver i Ansible går med stort set den engelske betydning af det.

F.eks .: Installer, opdater osv.

Handlere:

Handlere er ligesom almindelige opgaver i en Ansible playbook, men køres kun, hvis Opgaven indeholder et underretningsdirektiv og også angiver, at det har ændret noget. For eksempel, hvis en konfigurationsfil ændres, kan den opgave, der henviser til konfigurationsfilen, muligvis underrette en servicestarterhåndterer.

ansible vs kok vs marionet

Lad mig give dig et eksempel på en playbook, der starter Apache httpd-serverprogrammet:

----værter: webservere hvis: http_port: 80 max_clients: 200 fjernbruger: rod opgaver: - navn: sørg for, at apache er i den nyeste version yum: navn = httpd tilstand = seneste - navn: skriv apache-konfigurationsfilen skabelon: src = / srv / httpd.j2 dest = / etc / httpd.conf underrette: - genstart apache - navn: sikre, at apache kører (og aktiver det ved opstart) service: navn = httpd tilstand = startet aktiveret = ja håndterere: - navn: genstart apache service: navn = httpd tilstand = genstartet

Jeg håber, at eksemplet vil relatere dig til al den beskrivelse af playbook-komponenterne, som jeg har nævnt ovenfor. Hvis det stadig ikke er klart for dig, skal du ikke bekymre dig, al din tvivl vil være klar i den senere del af denne blog.

Dette handler om playbooks. De spillebøger, som vil blive skrevet af dig. Men Ansible giver dig også en bred vifte af moduler, som du kan bruge.

Ansible Tutorial - Modules

Moduler i Ansible er idempotente. Fra et RESTful service-synspunkt, for at en operation (eller et servicekald) skal være idempotent, kan klienter foretage det samme opkald gentagne gange, mens de producerer det samme resultat. Med andre ord har det at have flere identiske anmodninger den samme effekt som at stille en enkelt anmodning.

Der er forskellige typer moduler i Ansible

  • Kernemoduler
  • ekstra moduler

Kernemoduler

Dette er moduler, som det centrale Ansible-team vedligeholder og altid leveres med Ansible selv. De får også en lidt højere prioritet for alle anmodninger end dem, der er i 'ekstra' repos.

Kilden til disse moduler hostes af Ansible på GitHub i kernen for Ansible-moduler.

Ekstra moduler

Disse moduler sendes i øjeblikket med Ansible, men sendes muligvis separat i fremtiden. De vedligeholdes også for det meste af Ansible-samfundet. Ikke-kernemoduler er stadig fuldt anvendelige, men kan modtage lidt lavere svarprocent for problemer og pull-anmodninger.

Populære “ekstramoduler” kan promoveres til kernemoduler over tid.

Kilden til disse moduler hostes af Ansible på GitHub i Ansible-modules-extras.

F.eks .: Det ene ekstraudstyrsmodul i Fjernstyringsmoduler er ipmi_power-modulet, som er en strømforsyning til fjernmaskinerne. Det kræver python 2.6 eller nyere og pyghmi at køre.

Du kan bruge dette modul ved at skrive en adhoc-kommando som den, jeg har skrevet nedenfor:

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

Ansible Tutorial - Return Value

Ansible-moduler returnerer normalt en datastruktur, der kan registreres i en variabel eller ses direkte, når den sendes af Ansible-programmet. Hvert modul kan valgfrit dokumentere sine egne unikke returværdier.

Nogle eksempler på returværdier er:

  • ændret: vender tilbage med en boolsk værdi, hver gang opgaven foretager ændringer.
  • failed: returnerer en boolsk værdi, hvis opgaven mislykkes
  • msg: det returnerer en streng med en generisk meddelelse, der videresendes til brugeren.

Ansible Tutorial - AdHoc-kommandoer

Adhoc-kommandoer er enkle en-linjekommandoer til at udføre en handling. Kørende moduler med Ansible-kommandoer er adhoc-kommandoer.

For eksempel:

ansible vært -m netscaler -a 'nsc_host = nsc.example.com bruger = apiuser password = apipass' 

Ovenstående adhoc-kommando bruger netscaler-modulet til at deaktivere serveren. Der er hundredvis af moduler tilgængelige i Ansible, hvorfra du kan henvise til og skrive adhoc-kommandoer.

Nå, nok med alle de teoretiske forklaringer, lad mig forklare dig Ansible med nogle hænder på.

Ansible Tutorial - Hands On

Jeg skal skrive en playbook for at installere Nginx på min node / vært maskine.

Lad os begynde :)

Trin 1: Opret forbindelse til dine værter ved hjælp af SSH. Til det skal du generere en offentlig SSH-nøgle.

Brug kommandoen nedenfor:

ssh-keygen

Generer Ssh Key - Ansible Tutorial - Edureka

Som du kan se i snapshotet ovenfor, kommandoen ssh-keygen genereret en offentlig SSH-nøgle.

Trin 2: Din næste opgave er at kopiere den offentlige SSH-nøgle på dine værter. For at gøre det skal du bruge kommandoen nedenfor:

ssh-copy-id -i root @

Øjebliksbilledet viser SSH-nøglen, der kopieres til værterne.

Trin 3: Angiv IP-adresserne på dine værter / noder i din beholdning.

Brug følgende kommando:

vi / etc / ansible / hosts

Dette åbner en vi-editor, hvor du kan liste IP-adresserne på dine værter. Dette er nu din beholdning.

Trin 4: Lad os pinge for at sikre, at der er oprettet en forbindelse.

Ovenstående øjebliksbillede bekræfter, at der er oprettet forbindelse mellem din kontrolmaskine og vært.

Trin 5: Lad os nu skrive en playbook for at installere Nginx på værtsmaskinen. Du kan skrive din playbook i vi-editoren. Til det skal du blot oprette din playbook ved hjælp af kommandoen:

vi

Nedenstående øjebliksbillede viser min playbook til installation af Nginx skrevet i YAML-format.

Opgaverne for en playbook er defineret i YAML som en liste over ordbøger og udføres fra top til bund. Hvis vi har flere værter, afprøves hver opgave for hver vært, inden vi går videre til den næste. Hver opgave er defineret som en ordbog, der kan have flere nøgler, såsom “navn” eller “sudo”, som angiver opgavens navn, og om det kræver sudo-rettigheder.

En variabel server_port er indstillet, der lytter til TCP-port 8080 til indgående anmodninger.

Her er den første opgave at hente den nødvendige pakke til installation af Nginx og derefter installere den.Internt vil Ansible kontrollere, om biblioteket eksisterer, og oprette det, hvis det ikke er, ellers vil det ikke gøre noget.

Den næste opgave er at konfigurere Nginx.I Nginx indeholder kontekster konfigurationsoplysninger.

Her er skabelonen en fil, du kan implementere på værter. Imidlertid inkluderer skabelonfiler også nogle referencevariabler, der hentes fra variabler, der er defineret som en del af en Ansible playbook eller fakta indsamlet fra værterne. Fakta, der indeholder konfigurationsoplysningerne, trækkes fra en kildekatalog og kopieres til en destinationsmappe.

Handlere definerer her den handling, der kun skal udføres ved meddelelse om opgaver eller tilstandsændringer. I denne playbook definerede vi, underret: genstart Nginx-handler, som genstarter Nginx, når filerne og skabelonerne er kopieret til værter.

Gem nu filen og afslut.

Trin 6: Lad os nu køre denne playbook ved hjælp af kommandoen nedenfor:

ansible-playbook .yml

Vi kan se på skærmbilledet ovenfor, at vores opgave er at få udført Nginx installeret.

Trin 7: Lad os kontrollere, om Nginx er installeret på min værtsmaskine. Brug kommandoen nedenfor:

ps waux | grep nginx

Du kan se i skærmbilledet ovenfor, at forskellige proces-id'er 3555 og 103316 kører, hvilket sikrer, at Nginx kører på dine værtsmaskiner.

Tillykke! Du har implementeret Nginx på din vært ved hjælp af Ansible playbooks. Jeg håber, du har nydt at læse denne Ansible Tutorial-blog. Lad mig vide, hvis du har spørgsmål i kommentarfeltet nedenfor.

Hvis du fandt dette “ Ansible Tutorial ”Relevant, tjek af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edureka DevOps-certificeringstræningskurset hjælper eleverne med at få ekspertise i forskellige DevOps-processer og -værktøjer som Puppet, Jenkins, Ansible, Nagios og Git til automatisering af flere trin i SDLC.