Ansible Tutorial - Lær deg å skrive Ansible Playbooks



I denne Ansible Tutorial-bloggen lærer du hvordan du skriver Ansible playbooks, adhoc-kommandoer og utfører praktisk bruk for å distribuere Nginx på vertsmaskinen din.

Ansible Tutorial

Jeg håper du har gått gjennom forrige blogg for å lære og de mest brukte terminologiene til Ansible. Hvis du ikke har det, kan du sjekke det ut slik at du kan få en bedre forståelse av denne Ansible Tutorial.Du bør også vite at Ansible utgjør en avgjørende del av som et verktøy for konfigurasjonsadministrasjon, distribusjon og orkestrering.

La meg gi deg en oversikt over denne 'Ansible Tutorial':





Ansible Playbook Tutorial | DevOps-trening | Edureka

Ansible Tutorial - Writing Ansible Playbooks

Spillbøker i Ansible er skrevet i YAML-format. Det er et menneskelig lesbart dataserialiseringsspråk. Det brukes ofte til konfigurasjonsfiler. Den kan også brukes i mange applikasjoner der data lagres.



For Ansible starter nesten alle YAML-filer med en liste. Hvert element i listen er en liste over nøkkel / verdipar, ofte kalt “hash” eller “ordbok”. Så vi trenger å vite hvordan vi skal skrive lister og ordbøker i YAML.

Alle medlemmer av en liste er linjer som begynner på samme innrykkingsnivå som begynner med et '-' (bindestrek og mellomrom). Mer kompliserte datastrukturer er mulige, for eksempel lister over ordbøker eller blandede ordbøker hvis verdier er lister eller en blanding av begge.

f.eks. For en liste over avdelinger i edureka:



avdelinger: - markedsføring - salg - løsninger - innholdsskriving - support - produkt

La meg nå gi deg et eksempel på en ordbok:

-USA -kontinent: Nord-Amerika -hovedstad: Washington DC -befolkning: 319 millioner

Verter og brukere:

For hvert spill i en spillbok får du velge hvilke maskiner i infrastrukturen du vil målrette mot og hvilken fjernbruker som skal fullføre oppgavene. For å inkludere verter i Ansible-inventar, bruker vi IP-adressene til vertsmaskinene.

Generelt er vertene en liste over en eller flere grupper eller vertsmønstre, atskilt med kolon. Den eksterne brukeren er bare navnet på brukerkontoen.

Variabler:

Ansible bruker variabler som er definert tidligere for å muliggjøre mer fleksibilitet i spillbøker og roller. De kan brukes til å gå gjennom et sett med gitte verdier, få tilgang til forskjellige opplysninger som vertsnavnet til et system og erstatte visse strenger i maler med spesifikke verdier.

Ansible definerer allerede et rikt sett med variabler, individuelle for hvert system. Når Ansible kjører på et system, samles alle fakta og informasjon om systemet og settes som variabler.

Men det er en regel for å navngi variabler. Variable navn skal være bokstaver, tall og understrekninger. Variabler skal alltid starte med en bokstav. F.eks. wamp_21, port5 er gyldige variabelnavn, mens 01_port, _server er ugyldige.

Oppgaver:

Oppgaver lar deg dele opp biter av konfigurasjonspolicy i mindre filer. Oppgaven inkluderer trekk fra andre filer. Oppgaver i Ansible går med stort sett den engelske betydningen av det.

F.eks .: Installer, oppdater osv.

Håndterere:

Håndterere er akkurat som vanlige oppgaver i en Ansible-spillbok, men kjøres bare hvis oppgaven inneholder et varslingsdirektiv og også indikerer at det endret noe. For eksempel, hvis en konfigurasjonsfil endres, kan oppgaven som refererer til konfigurasjonsfilen varsle en tjenestestarterbehandler.

La meg gi deg et eksempel på en spillbok som starter Apache httpd-serverprogrammet:

----verter: webservere hvem sin: http_port: 80 max_clients: 200 fjernbruker: rot oppgaver: - Navn: sørg for at apache er den nyeste versjonen yum: navn = httpd tilstand = siste - Navn: skriv apache-konfigurasjonsfilen mal: src = / srv / httpd.j2 dest = / etc / httpd.conf gi beskjed: - start apache på nytt - Navn: sørg for at apache kjører (og aktiver det ved oppstart) service: navn = httpd tilstand = startet aktivert = ja håndterere: - Navn: start apache på nytt service: navn = httpd tilstand = startet på nytt

Jeg håper eksemplet vil relatere deg til all beskrivelsen av spillbokskomponentene som jeg har nevnt ovenfor. Hvis det fremdeles ikke er klart for deg, ikke bekymre deg, all tvil vil være klar i den senere delen av denne bloggen.

Dette handler om lekebøker. Spillbøkene som blir skrevet av deg. Men Ansible gir deg også et bredt spekter av moduler, som du kan bruke.

sorter matrise c ++

Ansible Tutorial - Modules

Moduler i Ansible er idempotente. Fra et RESTful-tjenestesynspunkt, for at en operasjon (eller tjenesteanrop) skal være idempotent, kan klienter ringe den samme samtalen gjentatte ganger mens de gir det samme resultatet. Med andre ord, å gjøre flere identiske forespørsler har samme effekt som å gjøre en enkelt forespørsel.

Det er forskjellige typer moduler i Ansible

  • Kjernemoduler
  • tilleggsmoduler

Kjernemoduler

Dette er moduler som det kjente Ansible-teamet opprettholder og vil alltid leveres med Ansible selv. De vil også få litt høyere prioritet for alle forespørsler enn de som er i “statister” repoer.

Kilden til disse modulene er vert for Ansible på GitHub i Ansible-modules-core.

Ekstra moduler

Disse modulene leveres for øyeblikket med Ansible, men kan sendes separat i fremtiden. De vedlikeholdes også stort sett av Ansible-samfunnet. Ikke-kjernemoduler er fortsatt fullt brukbare, men kan motta litt lavere svarprosent for problemer og trekkforespørsler.

Populære 'tilleggsmoduler' kan promoteres til kjernemoduler over tid.

Kilden for disse modulene er vert for Ansible på GitHub i Ansible-modules-extras.

For eksempel: En av tilleggsmodulen i Remote Management Modules er ipmi_power module, som er en strømkrone for eksterne maskiner. Det krever python 2.6 eller nyere og pyghmi for å kjøre.

Du kan bruke denne modulen ved å skrive en adhoc-kommando som den jeg har skrevet nedenfor:

ipmi_power: name = 'test.domain.com' bruker = 'localhost' passord = 'xyz' state = 'on'

Ansible Tutorial - Return Values

Ansible-moduler returnerer normalt en datastruktur som kan registreres i en variabel, eller ses direkte når den sendes ut av Ansible-programmet. Hver modul kan valgfritt dokumentere sine egne unike returverdier.

Noen eksempler på returverdier er:

  • endret: returnerer med en boolsk verdi når oppgaven gjør endringer.
  • failed: returnerer en boolsk verdi hvis oppgaven mislykkes
  • msg: den returnerer en streng med en generell melding videresendt til brukeren.

Ansible Tutorial - AdHoc Commands

Adhoc-kommandoer er enkle enlinjekommandoer for å utføre noen handlinger. Kjører moduler med Ansible-kommandoer er adhoc-kommandoer.

F.eks .:

ansible vert -m netscaler -a 'nsc_host = nsc.example.com bruker = apiuser passord = apipass' 

Ovennevnte adhoc-kommando bruker netscaler-modulen for å deaktivere serveren. Det er hundrevis av moduler tilgjengelig i Ansible, hvorfra du kan referere til og skrive adhoc-kommandoer.

Vel, nok med alle de teoretiske forklaringene, la meg forklare deg Ansible med noen hender på.

Ansible Tutorial - Hands On

Jeg skal skrive en spillbok for å installere Nginx på min node / vertsmaskin.

La oss begynne :)

Trinn 1: Koble til vertene dine ved hjelp av SSH. For det må du generere en offentlig SSH-nøkkel.

Bruk kommandoen nedenfor:

ssh-keygen

mysql_fetch_array php

Generer Ssh Key - Ansible Tutorial - Edureka

Som du kan se på øyeblikksbildet ovenfor, kommandoen ssh-keygen genererte en offentlig SSH-nøkkel.

Steg 2: Din neste oppgave er å kopiere den offentlige SSH-nøkkelen på vertene dine. For å gjøre det, bruk kommandoen nedenfor:

ssh-copy-id -i root @

Øyeblikksbildet over viser SSH-nøkkelen som kopieres til vertene.

Trinn 3: Oppgi IP-adressene til vertene / nodene dine i beholdningen.

Bruk følgende kommando:

vi / etc / ansible / hosts

Dette åpner en vi-editor hvor du kan liste ned IP-adressene til vertene dine. Dette er nå din beholdning.

Trinn 4: La oss pinge for å sikre at en forbindelse er opprettet.

Øyeblikksbildet ovenfor bekrefter at det er opprettet forbindelse mellom kontrollmaskinen din og verten.

Trinn 5: La oss nå skrive en spillbok for å installere Nginx på vertsmaskinen. Du kan skrive spillboken i vi-editoren. For det er det bare å lage spillboken din ved å bruke kommandoen:

vi

Nedenstående øyeblikksbilde viser spillboken min for å installere Nginx skrevet i YAML-format.

Oppgavene til en spillbok er definert i YAML som en liste over ordbøker og utført fra topp til bunn. Hvis vi har flere verter, blir hver oppgave prøvd for hver vert før vi går videre til neste. Hver oppgave er definert som en ordbok som kan ha flere nøkler, for eksempel “navn” eller “sudo” som betyr navnet på oppgaven og om den krever sudo-rettigheter.

En variabel server_port er satt som lytter på TCP-port 8080 for innkommende forespørsler.

Her er den første oppgaven å få den nødvendige pakken for installasjon av Nginx og deretter installere den.Internt vil Ansible sjekke om katalogen eksisterer og opprette den hvis den ikke er, ellers vil den ikke gjøre noe.

Den neste oppgaven er å konfigurere Nginx.I Nginx inneholder kontekster konfigurasjonsdetaljer.

Her er malen en fil du kan distribuere på verter. Malfiler inkluderer imidlertid også noen referansevariabler som hentes fra variabler som er definert som en del av en Ansible-spillbok eller fakta samlet fra vertene. Fakta som inneholder konfigurasjonsdetaljene blir hentet fra en kildekatalog og kopiert til en destinasjonskatalog.

Behandlere her definerer handlingen som skal utføres bare etter varsel om oppgaver eller tilstandsendringer. I denne spillboken definerte vi, varsle: start Nginx-behandler på nytt som starter Nginx på nytt når filene og malene er kopiert til vertene.

Nå lagrer du filen og avslutter.

Trinn 6: La oss nå kjøre denne spillboken ved å bruke kommandoen nedenfor:

ansible-playbook .yml

Vi kan se på skjermbildet ovenfor at oppgaven vår blir å kjøre Nginx installert.

Trinn 7: La oss sjekke om Nginx er installert på vertsmaskinen min. Bruk kommandoen nedenfor:

ps waux | grep nginx

Du kan se på skjermbildet ovenfor at forskjellige prosess-ID-er 3555 og 103316 kjører, noe som sikrer at Nginx kjører på vertsmaskinene dine.

Gratulerer! Du har distribuert Nginx på verten din ved hjelp av Ansible playbooks. Jeg håper du har likt å lese denne Ansible Tutorial-bloggen. Gi meg beskjed hvis du har spørsmål i kommentarfeltet nedenfor.

Hvis du fant dette “ Ansible Tutorial ' relevant, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden. Edureka DevOps Certification Training-kurset hjelper lærere å få ekspertise i forskjellige DevOps-prosesser og verktøy som Puppet, Jenkins, Ansible, Nagios og Git for å automatisere flere trinn i SDLC.