Forstå DevOps-verktøy: Ansible og Terraform

Ansible og Terraform – hørt om disse DevOps-verktøyene? Denne artikkelen handler om dem og deres forskjeller.

Infrastructure as Code (IaC) er en kjernedel av DevOps-domenet og er en kjerneferdighet som DevOps-ingeniører må ha. IaC brukes til å klargjøre og administrere IT-infrastrukturen ved å bruke konfigurasjonskode som er maskinlesbare definisjonsfiler. Ved å bruke denne programvaretekniske tilnærmingen til drift, kan du automatisere IT-infrastrukturen ved å bruke programmeringsskript.

Når en DevOps-ingeniør tenker på automatisering ved hjelp av kode i DevOps, blir alltid to DevOps-verktøy uthevet, Terraform og Ansible. Begge er topprangerte og mye brukte verktøy i DevOps-domenet. Men mange mennesker er nye til disse verktøyene og kjenner ikke de viktigste forskjellene mellom dem. I denne artikkelen vil jeg diskutere Terraform, Ansible og deres viktigste forskjeller.

Hva er Terraform?

Terraform er en åpen kildekode-infrastruktur som et kodeprogramvareverktøy laget av HashiCorp. Du kan orkestrere en komplett IT-infrastruktur ved å bruke svært brukervennlig deklarativt språk i Terraform. I Terraform må du deklarere og konfigurere de nødvendige ressursene for infrastrukturen. Deretter vil den ta seg av alle nødvendige avhengigheter og bygge infrastrukturen for deg.

Terraform ble lansert for bare noen få år siden, i 2014, men bruksraten for dette verktøyet har vært fantastisk. Den tilbyr utmerkede funksjoner som letter IT-infrastrukturens komplette orkestrering fordi det er komplisert å konfigurere hele infrastrukturen i en stor organisasjon. Du kan også integrere dette verktøyet med alle populære skyleverandører som AWS, GCP, etc.

De fleste IT-organisasjoner har forskjellige arbeidsmiljøer for forskjellige team, så utviklings-, iscenesettelses- eller QA- og produksjonsteam vil ha sine separate miljøer. Etter en stund er det ikke lett å administrere produksjonsmiljøet. For å lette administrasjonen bruker organisasjoner Terraform til å kodifisere alt i produksjonsmiljøet. Ved å bruke terraform kan du spinne utvikler- og iscenesettelsesmiljøer veldig raskt, noe som vil være veldig likt produksjonsmiljøet. Dette hjelper til med å utvikle og teste applikasjonen i en lignende plattform som produksjon.

  Viser Bumble inaktive profiler?

Mange store organisasjoner som Starbucks, Slack, Uber, etc., utnytter terraform-funksjoner stort sett.

Her er noen fordeler med Terraform:

  • Administrerer tjenestene ved hjelp av en enkel GUI.
  • Beskriver infrastrukturen for GCP, AWS, Azure og andre ved å bruke et enkelt språk (deklarativt).
  • Støtter rollebasert tilgangskontroll (RBAC) for sikkerhet.
  • Det kan enkelt leveres med OpenStack, Azure, AWS, GCP ved å bruke API-ene deres
  • Den følger masterless arkitektur, så det er ingen master node for å spore alle konfigurasjonsoppdateringene.
  • Team i en organisasjon kan enkelt samarbeide om infrastrukturen ved å bruke terraform-registeret.
  • Integrasjon med kontinuerlige integrasjonsplattformer som GitLab, Jenkins, Travis for å distribuere DevOps-pipelines er enkel.

Hva er Ansible?

Ansible er et konfigurasjonsadministrasjonsverktøy i DevOps-domenet som brukes til å automatisere alle IT-oppgaver. Ansible er også et åpen kildekodeverktøy som bruker både deklarative og prosedyrespråk for konfigurasjonsadministrasjon. Dette verktøyet har enestående støtte fra alle de populære skyleverandørene, og det automatiserer applikasjonene, nettverkene, infrastrukturen, sikkerheten, beholderne osv. Det reduserer kompleksiteten i DevOps-prosessene betydelig, så mange DevOps-ingeniører foretrekker å bruke dette verktøyet.

Ansible automatiserer den mest komplekse infrastrukturen med letthet ved å bruke enkle YAML-konfigurasjonsfiler (lesbare for mennesker). Den bruker en kodefil skrevet i YAML for å utføre konfigurasjonsadministrasjon; denne kodefilen heter Ansible Playbook. Ansible er agentløs og har en master som pusher alle konfigurasjonene som kreves for å administrere og oppdatere applikasjonene på de eksterne serverne.

I Ansible må du bruke SSH for å koble til nodene i IT-infrastrukturen. Når tilkoblingen til noden er vellykket, sender Ansible de nyeste konfigurasjonene ved å bruke Ansible-moduler for å installere eller oppdatere eller fjerne applikasjonen. Du har også alternativer for å kjøre ad-hoc-kommandoer i Ansible for å utføre små oppgaver med hastighet.

  Hvordan lage en meningsmåling i zoom

Her er noen fordeler og funksjoner ved Ansible:

  • Siden Ansible er agentløst, trenger du ikke installere og kjøre agenter på nodene for å utføre oppgavene.
  • Siden Ansible ble bygget på Python, har den en mengde biblioteker å tilby i Python, og det er derfor den er veldig utviklervennlig.
  • Gir sikker autentisering ved bruk av SSH.
  • Ansible Tower gir visualiseringsfunksjoner på bedriftsnivå.
  • Masteren sender de siste konfigurasjonene på de eksterne serverne for å utføre endringer i infrastrukturen, så den støtter en push-basert modell.
  • Den bruker menneskelesbare YAML-filer for konfigurasjonsadministrasjon, så ingen ekstra kodingsferdigheter kreves.

Terraform vs. Ansible: Forskjeller

Orkestrering vs. Konfigurasjonsadministrasjon

Ansible er et konfigurasjonsstyringsverktøy, og Terraform er et orkestreringsverktøy. Dette er den mest grunnleggende forskjellen mellom Terraform og Ansible. Selv om noen av funksjonene er felles mellom disse verktøyene, er de fortsatt forskjellige fra hverandre.

Ansible brukes til å legge til, oppdatere, slette og administrere konfigurasjonen av IT-infrastrukturen, mens Terraform brukes til å deklarere infrastrukturkomponenter og orkestrere dem på tvers av flere skyleverandører.

Prosedyremessig vs deklarativ

Terraform bruker deklarativt konfigurasjonsspråk for å deklarere ressursene til IT-infrastrukturen. Ansible bruker både prosessuelle og deklarative språk for konfigurasjonsadministrasjon. Den prosedyremessige måten brukes i Ansible for å kjøre ad-hoc-kommandoer og nå ønsket infrastrukturkonfigurasjon. De aktuelle modulene bruker en deklarativ tilnærming.

Mulig vs. uforanderlig infrastruktur

Du kan lage foranderlig infrastruktur ved å bruke Ansible og uforanderlig infrastruktur ved å bruke Terraform. Ansible administrerer og konfigurerer programvaren til infrastrukturen på samme server. Når du pusher flere konfigurasjonsoppdateringer, blir produksjonsmiljøet komplekst og fører til mange feil som er vanskelige å identifisere og fikse.

Terraform bruker først og fremst et nytt Docker-bilde for enhver distribusjon på serveren. Terraform oppretter et nytt docker-bilde for å oppdatere all programvare på infrastrukturen, distribuerer det bildet på alle serverne og fjerner det gamle konfigurasjonsdokker-bildet. Så selv etter flere konfigurasjonsoppdateringer forblir miljøet stabilt.

  Slik ser du alle blokkerte numre på iPhone

Mester vs. Mesterløs

Ansible har en mastermaskinarkitektur som er ansvarlig for å lagre hele infrastrukturtilstanden og skyve de nye konfigurasjonsoppdateringene på de eksterne serverne. Det er derfor det kalles en push-basert distribusjonsmodell i ansible.

I Terraform er det ikke noe eget mastersystem. Men når det fungerer med skyleverandører som GCP, AWS gjennom API-ene, er API-serveren hovedmaskinen i så fall.

Samfunnet

Til sammenligning er fellesskapet til Ansible sterkere enn Terraform. For eksempel har Ansible 45 grener, 49.7K star, 51.836 commits og 21K gafler på GitHub, mens Terraform har 183 grener, 28.7K star, 28.778 commits og 6.9K gafler. For tiden vokser fellesskapet av begge verktøyene raskt.

Hvilken å velge, Ansible eller Terraform?

Jeg vil si at dette ikke er en eple til eple sammenligning. Svaret på dette spørsmålet avhenger av forretningskravene. Du kan bruke Ansible for konfigurasjonsadministrasjon, legg til Terraform for å orkestrere IT-infrastrukturen. Hvis organisasjonen din jobber med skyleverandører, vil det å jobbe med Terraform være et bedre alternativ. Begge verktøyene har sine begrensninger og fordeler, og begge er populære verktøy i DevOps-domenet. Så, avhengig av problemformuleringen du prøver å løse, kan du velge ett av verktøyene.

Her er en sammenligningstabell som oppsummerer forskjellene mellom Ansible og Terraform.

Kriterier
Ansible
Terraform
Grunnlagt på
2012
2014
Utviklet av
Ansible Inc. / Red Hat Inc.
HashiCorp
Skrevet i
Python

Type
Konfigurasjonsadministrasjonsverktøy
Orkestreringsverktøy
Språk
Bruker prosessuelle og deklarative språk
Bruker et deklarativt språk
Infrastruktur
Støtter mutbar infrastruktur
Støtter uforanderlig infrastruktur
Livssyklusstyring
Nei
Ja
Pakking og maling
Fullstendig støttet
Delvis
VM provisjonering og nettverk
Delvis
Fullstendig støttet

Fellesskap og støtte

49K+ stjerne
28K+ stjerne

Konklusjon 👩‍💻

Det handlet om Ansible, Terraform og deres forskjeller. Begge DevOps-verktøyene er mye brukt i produksjonsmiljøer og er ofte til stede i de fleste større organisasjoner. Så, hva venter du på? Gå videre og velg verktøyet som er mer egnet for organisasjonens forretningskrav. Du kan begynne med å lære et av verktøyene, men å kjenne til begge gir deg en fordel i den mangfoldige bransjen.

Du kan like:

Beste pakkevertsrepo for dine DevOps-prosjekter.