Forstå DevOps-værktøjer: Ansible og Terraform

Ansible og Terraform – hørt om disse DevOps-værktøjer? Denne artikel handler om dem og deres forskelle.

Infrastructure as Code (IaC) er en kernedel af DevOps-domænet og er en kernefærdighed, som DevOps-ingeniører skal besidde. IaC bruges til at klargøre og administrere it-infrastrukturen ved hjælp af konfigurationskode, der er maskinlæsbare definitionsfiler. Ved at bruge denne softwareteknologiske tilgang til driften kan du automatisere it-infrastrukturen ved hjælp af programmeringsscripts.

Når en DevOps-ingeniør tænker på automatisering ved hjælp af kode i DevOps, bliver to DevOps-værktøjer altid fremhævet, Terraform og Ansible. Begge er topbedømte og meget brugte værktøjer i DevOps-domænet. Men mange mennesker er nye til disse værktøjer og kender ikke de vigtigste forskelle mellem dem. I denne artikel vil jeg diskutere Terraform, Ansible og deres vigtigste forskelle.

Hvad er Terraform?

Terraform er en open source-infrastruktur som et kodesoftwareværktøj skabt af HashiCorp. Du kan orkestrere en komplet it-infrastruktur ved at bruge et meget letanvendeligt deklarativt sprog i Terraform. I Terraform skal du deklarere og konfigurere de nødvendige ressourcer til infrastrukturen. Derefter vil det tage sig af alle de nødvendige afhængigheder og bygge infrastrukturen for dig.

Terraform blev lanceret for blot et par år siden, i 2014, men adoptionshastigheden af ​​dette værktøj har været fantastisk. Det tilbyder fremragende funktioner, der letter IT-infrastrukturens komplette orkestrering, fordi det er komplekst at konfigurere hele infrastrukturen i en stor organisation. Du kan også integrere dette værktøj med alle populære cloud-udbydere såsom AWS, GCP osv.

De fleste it-organisationer har forskellige arbejdsmiljøer for forskellige teams, så udviklings-, iscenesættelses- eller QA- og produktionsteams vil have deres separate miljøer. Efter et stykke tid er det ikke nemt at styre produktionsmiljøet. For at lette administrationen bruger organisationer Terraform til at kodificere alt i produktionsmiljøet. Ved at bruge terraform kan du meget hurtigt spinde fremkalder- og iscenesættelsesmiljøer, som vil være meget lig produktionsmiljøet. Dette hjælper med at udvikle og teste applikationen i en lignende platform som produktion.

  Sådan laver du en flyer i Google Docs

Mange store organisationer såsom Starbucks, Slack, Uber osv. udnytter terraform-funktioner big time.

Her er nogle fordele ved Terraform:

  • Administrerer tjenesterne ved hjælp af en simpel GUI.
  • Beskriver infrastrukturen for GCP, AWS, Azure og andre ved hjælp af et ligetil sprog (deklarativt).
  • Understøtter rollebaseret adgangskontrol (RBAC) for sikkerhed.
  • Det kan nemt leveres med OpenStack, Azure, AWS, GCP ved at bruge deres API’er
  • Det følger masterless arkitektur, så der er ingen master node til at spore alle konfigurationsopdateringer.
  • Teams i en organisation kan nemt samarbejde om infrastrukturen ved hjælp af terraform-registret.
  • Integration med kontinuerlige integrationsplatforme som GitLab, Jenkins, Travis til implementering af DevOps-pipelines er let.

Hvad er Ansible?

Ansible er et konfigurationsstyringsværktøj i DevOps-domænet, der bruges til at automatisere alle it-opgaver. Ansible er også et open source-værktøj, der bruger både deklarative og proceduremæssige sprog til konfigurationsstyring. Dette værktøj har enestående support fra alle de populære cloud-udbydere, og det automatiserer applikationer, netværk, infrastruktur, sikkerhed, containere osv. Det reducerer kompleksiteten i DevOps-processerne betydeligt, så mange DevOps-ingeniører foretrækker at bruge dette værktøj.

Ansible automatiserer den mest komplekse infrastruktur med lethed ved at bruge simple YAML-konfigurationsfiler (læsbare for mennesker). Den bruger en kodefil skrevet i YAML til at udføre konfigurationsstyring; denne kodefil hedder Ansible Playbook. Ansible er agentløs og har en master, der pusher alle de konfigurationer, der er nødvendige for at administrere og opdatere applikationerne på fjernserverne.

I Ansible skal du bruge SSH til at oprette forbindelse til noderne i it-infrastrukturen. Når forbindelsen til noden er vellykket, skubber Ansible de seneste konfigurationer ved hjælp af Ansible-moduler for at installere eller opdatere eller fjerne applikationen. Du har også muligheder for at køre ad-hoc-kommandoer i Ansible for at udføre små opgaver med hastighed.

  Hvordan man skriver bogstaver på hovedet

Her er nogle fordele og funktioner ved Ansible:

  • Da Ansible er agentfri, behøver du ikke installere og køre agenter på noderne for at udføre opgaverne.
  • Da Ansible blev bygget på Python, har det et væld af biblioteker at tilbyde i Python, og det er derfor, det er meget udviklervenligt.
  • Giver sikker godkendelse ved hjælp af SSH.
  • Ansible Tower giver visualiseringsfunktioner på virksomhedsniveau.
  • Masteren sender de seneste konfigurationer på fjernserverne for at udføre ændringer i infrastrukturen, så den understøtter en push-baseret model.
  • Den bruger menneskelæselige YAML-filer til konfigurationsstyring, så der kræves ingen yderligere kodningsfærdigheder.

Terraform vs. Ansible: Forskelle

Orkestrering vs. Konfigurationsstyring

Ansible er et konfigurationsstyringsværktøj, og Terraform er et orkestreringsværktøj. Dette er den mest grundlæggende forskel mellem Terraform og Ansible. Selvom nogle af funktionerne er fælles for disse værktøjer, er de stadig forskellige fra hinanden.

Ansible bruges til at tilføje, opdatere, slette og administrere konfigurationen af ​​IT-infrastrukturen, hvorimod Terraform bruges til at deklarere infrastrukturkomponenter og orkestrere dem på tværs af flere cloud-udbydere.

Procedurel vs deklarativ

Terraform bruger deklarativt konfigurationssprog til at deklarere ressourcerne i it-infrastrukturen. Ansible bruger både proceduremæssige og deklarative sprog til konfigurationsstyring. Den proceduremæssige måde bruges i Ansible til at køre ad-hoc-kommandoer og nå den ønskede infrastrukturkonfiguration. De relevante moduler anvender en deklarativ tilgang.

Foranderlig vs. uforanderlig infrastruktur

Du kan oprette foranderlig infrastruktur ved hjælp af Ansible og uforanderlig infrastruktur ved hjælp af Terraform. Ansible administrerer og konfigurerer softwaren til infrastrukturen på den samme server. Når du pusher flere konfigurationsopdateringer, bliver produktionsmiljøet komplekst og fører til mange fejl, som er svære at identificere og rette.

Terraform bruger primært et nyt Docker-image til enhver implementering på serveren. Terraform opretter et nyt docker-image for at opdatere enhver software på infrastrukturen, implementerer dette image på alle serverne og fjerner det gamle docker-image. Så selv efter flere konfigurationsopdateringer forbliver miljøet stabilt.

  Sådan låser du Excel-celler med formler for at forhindre redigering

Mester vs. Mesterløs

Ansible har en mastermaskinearkitektur, der er ansvarlig for at gemme den komplette infrastrukturtilstand og skubbe de nye konfigurationsopdateringer på fjernserverne. Derfor kaldes det en push-baseret implementeringsmodel i ansible.

I Terraform er der ikke noget separat mastersystem. Men når det fungerer med cloud-udbydere som GCP, AWS gennem API’erne, er API-serveren hovedmaskinen i det tilfælde.

Fællesskab

Til sammenligning er Ansible-fællesskabet stærkere end Terraform. For eksempel har Ansible 45 filialer, 49,7K star, 51.836 commits og 21K gafler på GitHub, hvorimod Terraform har 183 brancher, 28.7K star, 28.778 commits og 6.9K gafler. I øjeblikket vokser fællesskabet af begge værktøjer hurtigt.

Hvilken skal man vælge, Ansible eller Terraform?

Jeg vil sige, at dette ikke er en æble til æble sammenligning. Svaret på dette spørgsmål afhænger af forretningskravene. Du kan bruge Ansible til konfigurationsstyring, tilføje Terraform til at orkestrere it-infrastrukturen. Hvis din organisation arbejder med cloud-udbydere, ville det være en bedre mulighed at arbejde med Terraform. Begge værktøjer har deres begrænsninger og fordele, og begge er populære værktøjer i DevOps-domænet. Så afhængigt af den problemformulering, du forsøger at løse, kan du vælge et af værktøjerne.

Her er en sammenligningstabel, der opsummerer forskellene mellem Ansible og Terraform.

Kriterier
Ansible
Terraform
Grundlagt på
2012
2014
Udviklet af
Ansible Inc. / Red Hat Inc.
HashiCorp
Skrevet i
Python

Type
Konfigurationsstyringsværktøj
Orkestreringsværktøj
Sprog
Bruger proceduremæssige og deklarative sprog
Bruger et deklarativt sprog
Infrastruktur
Understøtter foranderlig infrastruktur
Understøtter uforanderlig infrastruktur
Livscyklusstyring
Ingen
Ja
Emballage og skabelon
Fuldstændig understøttet
Delvis
VM-provisionering og netværk
Delvis
Fuldstændig understøttet

Fællesskab og støtte

49K+ stjerne
28K+ stjerne

Konklusion 👩‍💻

Det handlede om Ansible, Terraform og deres forskelle. Begge DevOps-værktøjer er meget brugte i produktionsmiljøer og er ofte til stede i de fleste større organisationer. Så hvad venter du på? Gå videre og vælg det værktøj, der er mere egnet til din organisations forretningskrav. Du kan starte med at lære et af værktøjerne, men at kende begge giver dig en fordel i den mangfoldige industri.

Du kan lide:

Bedste pakkehosting-repo til dine DevOps-projekter.