For de som jobber med infrastruktur som kode (IaC) handler det veldig ofte om Terraform – et verktøy for å definere og administrere skyinfrastrukturen ved hjelp av et eget språk kalt HCL.
Hva er greia med Terraform og infrastruktur som kode? - Bratt læringskurve
Det finnes imidlertid et alternativ til HCL som gjør det mulig å programmere infrastrukturen din i språk som TypeScript/JavaScript, Java, Python, C#, Go eller YAML, forteller Simen A. W. Olsen til kode24.
I tillegg til å være daglig leder i Bjerk, er Olsen også en av vedlikeholderne på åpen kildekode-prosjektet Pulumi.
Med Pulumi kan du bruke det programmeringsspråket du pleier å bruke, og rulle ut infrastrukturendringer rett fra samme kodebase som resten av applikasjonen.
Kutter et unødvendig ledd
– Men hva er egentlig greia med Pulumi, Simen? Er det ikke Terraform som gjelder?
– Jeg brukte Terraform i mange år, men utfordringen var HCL. Det er ikke et vanskelig språk å lære seg, men programmering skal være kommunikasjon mellom mennesker. Da blir HCL et unødvendig ledd.
Olsen har lang erfaring med å jobbe med infrastruktur som kode, og verktøy som Ansible og Chef. Men han innrømmer at han aldri syntes noen av verktøyene var veldig gode.
– For noen år siden ble jeg interessert i Pulumi. Vi bruker dette også hos oss i Bjerk, selv om vi ikke er et DevOps-firma, men jobber med integrasjoner og applikasjoner.
Som bidragsyter bruker Olsen selv en del av sin egen fritid – kanskje 5 til 10 timer i uken – til å jobbe på Pulumi-prosjektet. Han er også en del av alumnien til Pulumi og sitter i styret for Pulumiverse, en frivillig forening som drifter communityet til Pulumi.
– Selv jobber jeg mest med DX, altså ergonomi. Hvor enkelt det er å jobbe med verktøyene, og hvor enkelt det å utvikle noe med verktøyene.
Mystiske .NET MAUI forklart: - Ikke for alle
Har mer enn Terraform
Olsen forteller at utviklere i dag typisk forholder seg til frontend og backend, og så kommer infrastruktur som kode inn som et tredje element man må forholde seg til. Ofte er det egne folk som har dette som sitt fagfelt.
– Med Pulumi kan du slå alt sammen. Du kan deploye rett til sky fra applikasjonskoden din.
Han mener Pulumi gjør det mye enklere for alle utviklere å definere og administrere skyinfrastruktur, som for eksempel sette opp virtuelle maskiner, databaser, lagring, og så videre.
«Du kan bruke et hvilket som helst programmeringsspråk. Men hvis det er likegyldig, anbefaler jeg TypeScript.»
– Du kan bruke et hvilket som helst programmeringsspråk. Men hvis det er likegyldig, anbefaler jeg TypeScript. Da får du Intellisense. Og så føles det riktig å bruke et skriptspråk til å lage IaC, sier Olsen.
Som eksempel nevner han at de i Bjerk har ett prosjekt der de bruker Sanity for å definere kundeinfo, som legges inn i en Kubernetes ConfigMap.
– Da er det fint at du har et programmeringsspråk som har en klient i Sanity. HCL og Sanity snakker jo ikke samme språk.
Her er hvordan du setter opp et Kubernetes-cluster hos AWS med Pulumi og TypeScript:
– Er det slik at alle bør bruke Pulumi, eller er det tilfeller der man bør styre unna?
– Pulumi har alt som er i Terraform, bare mer. Og vi har laget en bridge fra Terraform til Pulumi. Men hvis du bruker Terraform i stor skala, fortsett med det. Men i neste prosjekt bør du vurdere Pulumi.
Noen bedrifter har kanskje opparbeidet kompetanse på Terraform, og da kan det være greit å ta ting stegvis, opplyser Olsen.
– Men på generell basis, bør alle som trenger og vil ha IaC ta i bruk Pulumi. Det passer for både store og små bedrifter.
Olsen mener Pulumi gjør det mulig å demokratisere infrastruktur som kode i mye større grad enn hva du kan med andre verktøy.
– Hvem som helst i teamet kan deploye endringer til infrastruktur.
Serverless på noen få linjer
Ett eksempel på hvordan infrastruktur som kode kan være enklere med Pulumi, er hvordan du kan lage og rulle ut serverlessfunksjoner med Google Cloud Functions og Pulumi.
I TypeScript eller JavaScript gjøres dette ved å at du definerer en callbackfunksjon som inneholder koden som skal kjøres som en serverless-funksjon i skyen. Dette eksempelet er hentet fra Pulumis egne nettsider:
– På en tre-fire linjer har du deployet en serverlessfunksjon og har en kjørende tjeneste på en URL.
Dette kan også gjøres med AWS Lambda og Azure Functions.
Sånn gjør Oslo Origo DevOps: – Ikke for pyser
Anbefaler Pulumi-skyen
Pulumi baserer seg på såkalte "providers" som håndterer kommunikasjonen mellom applikasjonen din og skyleverandøren. Det er providers for eksempel for Azure, AWS og Google Cloud, og for Kubernetes.
– I Terraform er noe av det første du gjør hvor du skal lagre "staten" din. I Pulumi er det som standard i Pulumi-skyen.
Pulumi Cloud er en administrert IaC-plattform der tilstanden (state) til infrastrukturen lagres, og som også har innebygget administrasjon av krypterte data som "tokens", databasepassord og andre hemmeligheter.
Hvis du ikke vil bruke Pulumi Cloud, kan du også lagre tilstand andre steder, for eksempel hos Azure, eller lokalt.
– Men hvis du skal gjøre det enkelt, kjører du det bare i Pulumi-skyen, forklarer Olsen.
Vil dele erfaringer
Selv om Pulumi er et ganske stort, amerikansk selskap, er det ikke så veldig godt kjent i Norge ennå. Han opplever stadig vekk at folk som jobber med infrastruktur som kode ikke har noe forhold til Pulumi – selv om de kanskje har hørt om løsningen.
Det håper Olsen å gjøre noe med.
Han forteller at det i disse dager settes opp en Pulumi User Group (PUG) i Oslo, med første meetup den 22. juni.
– Målet er å få brukerne til å dele sine erfaringer.
«Terraform kommer ikke til å forsvinne, men lederen vil bli Pulumi.»
– Hva tror du om fremtiden til Pulumi?
– Jeg tror Pulumi blir arvtakeren til Terraform, selv om Terraform har klart å holde tritt med alt av utvikling. Terraform kommer ikke til å forsvinne, men lederen vil bli Pulumi.