Ansible vs. Chef: Hvilket DevOps-verktøy passer best for deg?

Omfanget av verktøy som benyttes innenfor DevOps-programvareutvikling vokser stadig. I dag finnes det et enormt utvalg, og hvert verktøy har sin egen berettigelse i din virksomhet, avhengig av hvordan det hjelper deg med å oppnå dine mål eller løse daglige oppgaver. Både nybegynnere og erfarne utviklere kan føle seg overveldet av det store utvalget.

Selv når du har snevret inn listen til et antall potensielle verktøy som interesserer deg, er problemene du skal løse svært varierte. Du kan for eksempel trenge et spesifikt verktøy for konfigurasjonsadministrasjon eller applikasjonsdistribusjon i IT-infrastrukturen, noe som gjør valget vanskelig. Chef og Ansible er ledende verktøy i denne kategorien.

Hvis du er interessert i DevOps, er det viktig å forstå når og hvorfor man skal velge en bestemt automatiseringsstack. I denne artikkelen skal jeg analysere disse to automatiseringsverktøyene, og ta hensyn til at alle utviklere har unike behov. Selv om det «beste» verktøyet er subjektivt, vil jeg presentere forskjellene, nevne felles egenskaper, og dermed hjelpe deg med å ta et informert valg.

Viktige DevOps-automatiseringsbegreper

Før vi går dypere inn i sammenligningen mellom Ansible og Chef, er det nyttig å ha oversikt over de mest brukte begrepene innen DevOps-automatisering for å få en god forståelse av feltet.

  • DevOps og DevSecOps – Disse begrepene refererer henholdsvis til utviklingsoperasjoner og utviklingssikkerhetsoperasjoner. Disse programvareutviklingsteknikkene innebærer tilnærminger til kultur, automatisering og plattformdesign med integrert sikkerhet som et delt ansvar gjennom hele IT-livssyklusen. DevSecOps legger til sikkerhet i DevOps for en enda sikrere tilnærming.
  • Konfigurasjonsadministrasjon – Denne prosessen innebærer å vedlikeholde datasystemer, servere og programvare i en ønsket tilstand. Målet er å sikre at programvaren fungerer som forventet. Automatisering av konfigurasjonsadministrasjon reduserer kostnader, kompleksitet og risiko for manuelle feil.
  • Agentbasert arkitektur – Chef benytter seg av dette. Det er en automatiseringsmodell og infrastruktur som bruker spesifikke programvareagenter for å kjøre i administrerte miljøer. Man må installere avhengigheter på hver målnode med ekstra sikkerhetssjekker og regler, noe som kan være tidkrevende, spesielt ved rask distribusjon av programvare.
  • Agentløs arkitektur – Ansible bruker denne tilnærmingen. Det innebærer automatisering og administrasjon av IT-tjenester uten bruk av agenter. Kontrollprogramvaren trenger ikke lang installasjon og kobles til eksterne maskiner via SSH (Secure Socket Shell). Når systemet er konfigurert, er det ikke nødvendig å vedlikeholde et distribusjonssystem.
  • YAML – Står for Yet Another Markup Language, og er et deserialiseringsspråk for å skrive konfigurasjonsfiler. YAML er et JavaScript-superset, lesbart for mennesker og enkelt å bruke med andre programmeringsspråk.

Hva er Ansible?

Ansible er et IT-automatiseringsverktøy, lansert i 2012 av Ansible Works, for å automatisere hele applikasjonslivssyklusen i IT-miljøer. Ansible hjelper med automatisering av konfigurasjonsadministrasjon, arbeidsflytorkestrering og applikasjonsutvikling. Ansibles driftsmodell utfører oppgaver i en definert rekkefølge, og sikrer konsistens i IT-miljøprosesser.

Ansible øker kvalitet og produktivitet, samtidig som kostnadene reduseres ved å optimalisere IT-miljøet. Det kan også tilføre intelligens i IT-domenet. Ansible bygger bro mellom tradisjonelle IT-miljøer og smidig programvareimplementering. Det er et åpen kildekode-verktøy som benytter en klient-server-modell. Ansible-utviklere hevder at det er den eneste automatiseringsmotoren som robotiserer hele APK-livssyklusen innenfor en kontinuerlig leveringsmodell. Automatisering innebærer å gjøre komplekse oppgaver til repeterbare «playbooks», forenkle prosesser og øke produksjonshastigheten.

Navnet «ansible» er inspirert av science fiction-litteratur og beskriver et øyeblikkelig hyperspace-kommunikasjonssystem.

Ansible kontrollmaskiner er Linux/Unix-baserte, som Debian, RedHat Enterprise Linux og macOS. Ansible kan kjøres på Python 2.7 eller 3.5. Ved bruk av skyplattformer, fungerer Ansible med Amazon Web Services (AWS), Microsoft Azure, Google Cloud og Docker, samt mange andre leverandører. Ansible benytter winRM og OpenSSH for eksterne tilkoblinger, tilbyr selvbetjening, rollebasert tilgangskontroll (RBAC) og forbedret tillatelse. Resultatet er at Ansible bidrar til pålitelighet og sikkerhet i DevOps og IT-drift.

Ansible kan benyttes til å automatisere IT-infrastruktur av ulike aktører i bransjen, inkludert operatører, IT-ledere, og release-ingeniører. Ansible kan også være nyttig for organisasjoner, både store og små, for å effektivisere IT-driften. Mange selskaper som bruker Ansible er innenfor IT og kommunikasjon.

Viktige funksjoner i Ansible

  • Ansible Content Collections – Dette verktøyet fremmer et sterkt brukerfellesskap. Ansible har innebygde, forhåndskomponerte moduler som hjelper utviklere og innholdsskapere med å samarbeide effektivt. Ansible tilbyr en struktur for å flytte moduler, roller, plugins og dokumentasjon i innholdsopprettingsprosessen. Det sikrer en konsistent flyt av innhold uten bekymringer for versjonsoppdateringer og utgivelser.
  • Automation Services Catalog – Denne funksjonen håndterer klargjøring, administrasjon og automatisering av ressurser. Den automatiserer hyppige brukerforespørsler gjennom RBAC, og bidrar til å overholde IT-krav.
  • Automation Hub – Dette verktøyet gir tilgang til å finne og bruke innhold fra Red Hat og deres partnere. Du kan utvide innholdet ved å publisere og administrere Ansible-samlinger i automatiseringshuben, med «how-to-veiledninger» for å utnytte Ansible.
  • Automation Execution Environments – Dette er et containerbilde for IT-automatiseringsmiljøer. Det er en standard måte for å automatisere oppgaver og prosedyrer. Det fungerer som et felles språk for automasjonsingeniører, plattformarkitekter og administratorer.
  • Automation Mesh – Dette laget forenkler skaleringsprosessen med et toveis kommunikasjonslag. Verktøyet effektiviserer applikasjonsdistribusjonen, samtidig som det sikrer synlighet og kontroll over IT-økosystemet. Automatiseringsnettet gir sikkerhetsfunksjoner som digital signering, TLS, trafikkryptering og ekstra tilgangskontroller.
  • Automatiseringsanalyse og -innsikt – Denne delen hjelper deg med å evaluere ytelsen til Ansible-automatiseringen din. Det gir en oversikt over automatiseringen din, med handlingsrettet data som kan brukes til å ta logiske og informerte beslutninger.

Fordeler med Ansible

  • Enkel å lære uten forkunnskaper.
  • Forenkler konfigurasjonsadministrasjon og applikasjonsdistribusjon.
  • Forbedret sikkerhet og pålitelighet.
  • Tilgjengelig dashbord for sentralisert automatisering og visualisering.
  • Støtter overholdelse av IT-forskrifter.
  • Tidseffektiv.
  • Muliggjør kontinuerlig integrasjon.
  • Stort fellesskap.

Ulemper med Ansible

  • Støtter ikke macOS.
  • Underutviklet grafisk brukergrensesnitt (GUI).
  • Statløs, sporer ikke endringer i avhengigheter.
  • Begrensede feilsøkingsmuligheter.

Hva er Chef?

Chef ble utviklet i 2009 av OpsCode, som et alternativ til det eldre konfigurasjonsverktøyet Puppet, som var vanskelig å forstå og hadde en bratt læringskurve. Chef er noe mer krevende å forstå enn Ansible, men med øvelse blir det enklere. Både Chef og Puppet er skrevet i Ruby.

«Chef er en kraftig automatiseringsplattform som gjør infrastruktur om til kode …»

– Chef-utviklerne

Chef er et automatiseringsverktøy som utmerker seg innen kontinuerlig distribusjon og konfigurasjonsadministrasjon. Uansett om driften din er lokal, hybrid eller skybasert, automatiserer Chef konfigurasjon, distribusjon og administrasjon gjennom nettverket ditt, uavhengig av størrelse.

Chef kjører på flere plattformer som Windows, Cisco IO og Nexus. Chef støtter også skyplattformer som Microsoft Azure, Amazon Web Services (AWS) og Google Cloud Platform. Sjekk at din foretrukne sky-leverandør støttes.

I motsetning til Ansible, som har et bredt brukergrunnlag, er Chef spesielt rettet mot DevOps- og DevSecOps-ingeniører. Løsningen er ofte valgt av mellomstore og store IT-selskaper.

Viktige funksjoner i Chef

Chef Solutions har mange viktige arkitektoniske funksjoner:

  • Chef Infra – Dette verktøyet lar deg automatisere, konfigurere, administrere og distribuere IT-infrastruktur. Chef Infra konverterer infrastruktur til kode og gir stabil distribusjon. Chef Infra består av tre komponenter: Chef-server, arbeidsstasjon og klienter. Arbeidsstasjonen kan kjøres på hvilken som helst plattform og støtter kodetesting ved hjelp av ulike verktøy.
  • Chef Habitat – Dette åpen kildekode-produktet støtter applikasjonsdistribusjon uavhengig av plattform. Det definerer, pakker og leverer applikasjoner automatisk. Pakkene er isolerte, reviderbare og uforanderlige. En habitatovervåker administrerer disse pakkene.
  • Chef InSpec – Dette testrammeverket med åpen kildekode kjører på alle plattformer og er lesbart for både mennesker og maskiner. Det øker sikkerhet og samsvar, og kan brukes til å teste fysisk maskinvare.
  • Chef Automate – Dette er inngangsporten til å integrere åpen kildekode-produkter som Chef InSpec og Habitat. Det gir fullstack kontinuerlig sikkerhet og samsvar. Chef Automate gir også oversikt over hele IT-økosystemet og genererer nyttig innsikt.

Fordeler med Chef

  • Ferdigpakkede maler forenkler konfigurasjonen.
  • Lett å bruke; utviklere kan raskt lage «kokebøker».
  • Sikrer konsistens og kvalitet ved distribusjon.
  • Tilpasning av verktøy; skreddersy dashbordet etter behov.
  • Automatiserer IT-samsvar.
  • Sikker og jevn levering av kritiske applikasjoner.

Ulemper med Chef

  • Mange verktøy trenger avklaring for brukerne.
  • Krever kjennskap til Ruby-programmering.
  • Bratt læringskurve.
  • Ikke det beste for små organisasjoner.
  • Benytter en master-klient-tilnærming, noe som kan være tregt.
  • Relativt høye kostnader.

Viktige forskjeller mellom Ansible og Chef

Selv om både Ansible og Chef fokuserer på automatisering, har de forskjellige karakteristikker. Her er en oversikt over forskjellene:

Funksjon Ansible Chef
Installasjon Enkel installasjon, agentløs arkitektur. Krever Chef Agent på hver klientmaskin og konfigurasjon av arbeidsstasjonen.
Språk Bruker YAML, lesbart for mennesker. Basert på Ruby, mer utviklerorientert.
Konfigurasjonsfiler «Playbooks» med push-konfigurasjon. «Kokebøker» med pull-konfigurasjon.
Fellesskap Stort og voksende. Eldre produkt med bedre dokumentasjon, men mindre fellesskap.

Oppsummering

Både Chef og Ansible er effektive automatiserings- og konfigurasjonssystemer for DevOps, DevSecOps og andre IT-prosesser. Ansible er enkelt å bruke og lære, mens Chef har mange funksjoner og kan håndtere komplekse IT-operasjoner.

Valget av automatiseringsløsning avhenger av dine behov. Du bør vurdere hvilke funksjoner som er tilgjengelige, langsiktige perspektiver og fremtidig arbeidsbelastning eller vekst.

Hvis du har kommet så langt, er du sannsynligvis interessert i DevOps. I så fall anbefales det å utforske karrieremuligheter eller videreutdanning. Det finnes mange gode DevOps-kurs der ute.