Har du hørt om DevOps-verktøyene Ansible og Terraform? Denne artikkelen utforsker disse to verktøyene og deres distinkte forskjeller.
Infrastruktur som kode (IaC) utgjør en sentral del av DevOps-området og representerer en viktig ferdighet for enhver DevOps-ingeniør. IaC benyttes til å konfigurere og styre IT-infrastruktur gjennom maskinlesbare definisjonsfiler. Ved å anvende denne programvaretekniske tilnærmingen til drift, muliggjøres automatisering av IT-infrastruktur ved hjelp av programmeringsskripter.
Når automatisering via kode diskuteres i DevOps-sammenheng, fremheves ofte to verktøy: Terraform og Ansible. Begge er anerkjente og mye brukte i DevOps-landskapet. Imidlertid er mange nye for disse verktøyene og usikre på de viktigste forskjellene. I denne artikkelen vil vi gå nærmere inn på Terraform, Ansible og deres sentrale forskjeller.
Hva er Terraform?
Terraform er et åpen kildekode-verktøy for infrastruktur som kode, utviklet av HashiCorp. Med Terraform kan du orkestrere hele IT-infrastrukturer ved hjelp av et brukervennlig deklarativt språk. I Terraform spesifiserer du de nødvendige ressursene for infrastrukturen, og verktøyet håndterer avhengigheter og setter opp infrastrukturen automatisk.
Selv om Terraform ble lansert så sent som i 2014, har det opplevd en bemerkelsesverdig vekst i popularitet. Verktøyet tilbyr funksjoner som forenkler kompleks orkestrering av IT-infrastruktur, spesielt for store organisasjoner. Det kan også integreres med kjente skyleverandører som AWS og GCP.
De fleste IT-organisasjoner har separate miljøer for ulike team, som utviklings-, test- og produksjonsteam. Over tid kan styringen av produksjonsmiljøet bli utfordrende. For å forenkle dette, bruker mange organisasjoner Terraform for å kode alt i produksjonsmiljøet. Terraform muliggjør rask etablering av utviklings- og testmiljøer som er svært lik produksjonsmiljøet, noe som bidrar til effektiv utvikling og testing under realistiske forhold.
Store selskaper som Starbucks, Slack og Uber bruker i stor grad fordelene med Terraform.
Her er noen fordeler med Terraform:
- Administrer tjenester via et brukervennlig grafisk grensesnitt.
- Beskriv infrastruktur for GCP, AWS, Azure og andre ved hjelp av et enkelt, deklarativt språk.
- Støtter rollebasert tilgangskontroll (RBAC) for forbedret sikkerhet.
- Kan enkelt integreres med OpenStack, Azure, AWS og GCP gjennom deres APIer.
- Bruker en masterless arkitektur, som fjerner behovet for en master node for å spore konfigurasjonsoppdateringer.
- Team kan enkelt samarbeide om infrastruktur ved hjelp av Terraform Registry.
- Enkel integrasjon med CI-plattformer som GitLab, Jenkins og Travis for å implementere DevOps-pipelines.
Hva er Ansible?
Ansible er et konfigurasjonsstyringsverktøy innen DevOps som brukes til å automatisere IT-oppgaver. Ansible er også åpen kildekode og benytter både deklarative og prosedyremessige tilnærminger til konfigurasjonsstyring. Det tilbyr omfattende støtte for kjente skyleverandører og automatiserer applikasjoner, nettverk, infrastruktur, sikkerhet, containere og mer. Dette verktøyet reduserer kompleksiteten i DevOps-prosesser betydelig, noe som gjør det til et foretrukket valg for mange DevOps-ingeniører.
Ansible automatiserer kompleks infrastruktur enkelt ved å bruke YAML-konfigurasjonsfiler som er lett leselige for mennesker. Verktøyet bruker en YAML-kodefil, kjent som Ansible Playbook, for å utføre konfigurasjonsstyring. Ansible er agentløs og har en master som distribuerer konfigurasjoner som er nødvendige for å styre og oppdatere applikasjoner på eksterne servere.
I Ansible brukes SSH for å koble til noder i IT-infrastrukturen. Etter at tilkoblingen er opprettet, sender Ansible de nyeste konfigurasjonene ved hjelp av Ansible-moduler for å installere, oppdatere eller fjerne applikasjoner. Det er også mulig å utføre ad-hoc-kommandoer i Ansible for raskt å utføre mindre oppgaver.
Her er noen fordeler og funksjoner ved Ansible:
- Agentløs arkitektur eliminerer behovet for å installere agenter på noder for å utføre oppgaver.
- Ansible er bygget på Python og har tilgang til et bredt spekter av biblioteker, noe som gjør det utviklervennlig.
- Sikker autentisering med SSH.
- Ansible Tower tilbyr visualiseringsfunksjoner på bedriftsnivå.
- En push-basert modell hvor master distribuerer konfigurasjonsendringer til eksterne servere.
- Bruker lesbare YAML-filer for konfigurasjonsstyring, noe som reduserer behovet for spesialiserte kodeferdigheter.
Terraform vs. Ansible: Forskjeller
Orkestrering vs. Konfigurasjonsstyring
Ansible er et konfigurasjonsstyringsverktøy, mens Terraform er et orkestreringsverktøy. Dette er den grunnleggende forskjellen mellom disse to verktøyene. Selv om de deler noen funksjoner, er de fundamentalt forskjellige.
Ansible brukes til å administrere, oppdatere og slette konfigurasjoner i IT-infrastruktur. Terraform brukes til å deklarere og orkestrere infrastrukturkomponenter på tvers av ulike skyleverandører.
Prosedyremessig vs. Deklarativ
Terraform bruker et deklarativt språk for å spesifisere ressurser i IT-infrastrukturen. Ansible bruker en kombinasjon av prosedyremessige og deklarative tilnærminger for konfigurasjonsstyring. Den prosedyremessige tilnærmingen brukes i Ansible for å utføre ad-hoc-kommandoer, mens deklarative tilnærminger benyttes av de relevante modulene.
Foranderlig vs. Uforanderlig infrastruktur
Ansible kan brukes til å skape foranderlig infrastruktur, mens Terraform er designet for å jobbe med uforanderlig infrastruktur. Ansible administrerer og endrer konfigurasjoner direkte på serverne. Dette kan føre til kompleksitet og potensielle feil etter mange konfigurasjonsoppdateringer.
Terraform oppretter typisk nye Docker-bilder for hver distribusjon. For å oppdatere programvaren, distribueres et nytt Docker-bilde til alle servere, og det gamle fjernes. Dette bidrar til et mer stabilt miljø selv etter mange endringer.
Master vs. Masterless
Ansible bruker en master-maskinarkitektur der en sentral server lagrer tilstanden til infrastrukturen og sender ut konfigurasjonsoppdateringer til eksterne servere, derav navnet push-basert distribusjonsmodell.
Terraform har ikke en dedikert masterserver. Når det fungerer med skyleverandører som GCP og AWS gjennom deres APIer, fungerer API-serveren i praksis som master.
Fellesskapet
Ansibles fellesskap er større enn Terraform sitt. På GitHub har Ansible for eksempel 45 grener, 49.7K stjerner, 51.836 commits og 21K gafler, sammenlignet med Terraform sine 183 grener, 28.7K stjerner, 28.778 commits og 6.9K gafler. Begge fellesskapene vokser imidlertid raskt.
Hvilken bør du velge, Ansible eller Terraform?
Det er vanskelig å sammenligne disse to verktøyene direkte, da valget i stor grad avhenger av dine spesifikke behov. Du kan bruke Ansible til konfigurasjonsstyring og Terraform til å orkestrere IT-infrastruktur. For organisasjoner som benytter skyleverandører, er Terraform ofte et bedre alternativ. Begge verktøyene har sine fordeler og begrensninger, og begge er populære valg innen DevOps. Valget bør derfor baseres på den spesifikke problemstillingen du ønsker å løse.
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 | Go |
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 👩💻
Denne artikkelen har presentert Ansible, Terraform og deres viktigste forskjeller. Begge er mye brukt i produksjonsmiljøer og er ofte en del av IT-infrastrukturen i større organisasjoner. Det anbefales å evaluere hvilke behov organisasjonen din har for å velge det verktøyet som passer best. Selv om du starter med å lære deg ett av verktøyene, vil kunnskap om begge gi deg en fordel i denne bransjen.
Du kan også være interessert i:
Beste pakkevertsrepo for dine DevOps-prosjekter.