Denne artikkelen diskuterer hvordan du bruker og konfigurerer de forskjellige leverandørene til å samhandle med ulike skyplattformer og tjenester.
Introduksjon til Terraform-leverandører
Terraform-leverandører er plugins som lar oss samhandle med forskjellige skyplattformer og tjenester ved hjelp av Terraform. Disse leverandørene er ansvarlige for å oversette Terraform-konfigurasjonen til API-anrop som er nødvendige for å administrere ressursene på en spesifikk skyplattform eller tjeneste.
Typer leverandører i Terraform
I Terraform-registeret , kan vi se tre typer leverandører:
Offisielle leverandører
Offisielle leverandører vedlikeholdes av HashiCorp-selskapet som eier Terraform. Disse leverandørene er det beste tilgjengelige alternativet hvis vi trenger de godt dokumenterte og oppdaterte leverandørene.
AWS-, Microsoft Azure- og Google Cloud Platform-leverandører kan være eksempler på offisielle leverandører i Terraform.
Partnerleverandører
Tredjepartsorganisasjoner opprettholder disse leverandørene og har inngått samarbeid med HashiCorp for å gi offisiell støtte for deres tjenester.
GitLab-, MongoDB- og CloudFlare-leverandører er noen partnerleverandører som er tilgjengelige for brukere.
Fellesskapsleverandører
Fellesskapsleverandører er vanligvis opprettet av enkeltpersoner eller organisasjoner i Terraform-fellesskapet som ønsker å administrere ressursene på en skyplattform eller tjeneste som ikke støttes av en offisiell eller partnerleverandør.
Noen eksempler på fellesskapsleverandører er vist i følgende bilde:
Slik bruker du en Terraform-leverandør
For å bruke en Terraform-leverandør må vi inkludere en leverandørblokk i konfigurasjonsfilen vår som spesifiserer leverandøren vi ønsker å bruke og eventuelle nødvendige konfigurasjonsparametere som legitimasjon eller region.
Når leverandøren er konfigurert, kan vi bruke ressursene og datakildene som tilbys av leverandøren i vår Terraform-konfigurasjon for å administrere ressursene på skyplattformen eller tjenesten.
La oss lage en enkel Terraform-konfigurasjonsfil som lager en EC2-forekomst i AWS-skyplattformen.
forsørger 'aws' {versjon = '~> 3.0'
region = 'oss-øst-2'
}
ressurs 'aws_instance' 'myEC2' {
som = 'ami-0a561b65214a47cac'
instanstype = 't3. liten'
tagger = {
Navn = 'ny instans'
}
}
Først definerer vi leverandørblokken, og spesifiserer AWS-leverandøren og regionen der ressursene opprettes. Deretter definerer vi ressursblokken vår som bestående av aws_instance som ressurstypen, 'myEC2' som ressursnavnet og 'ami', 'instance_type' og 'tags' som attributtene. Ressurstypen kan deles inn i to deler: Leverandør og Ressurs. I dette tilfellet er 'aws' leverandøren, og 'instans' er ressursen. Hvis noen trenger å klargjøre ti EC2-forekomster, kan «count»-attributtet brukes med ti som verdi.
Nå kan vi utføre Terraform-flyten som inkluderer å utføre terraform-initieringen, terraform-planen og terraform-brukskommandoer for å lage ressursen vi definerte.
Ved å bruke Terraform AWS-leverandøren kan vi få tilgang til AWS-skyplattformen og samhandle effektivt med tjenestene uten å bruke AWS Management Console.
Bruke flere leverandører i Terraform
I stedet for å bruke en enkelt leverandør, lar Terraform oss bruke flere leverandører innenfor samme Terraform-konfigurasjonsfil for å samhandle med ulike typer tjenester og skyplattformer.
For din forståelse, la oss ta et eksempel der vi distribuerer en beregningsmotor i Google Cloud Platform, et depot i GitHub og en S3-bøtte i AWS-skyplattformen.
forsørger 'Google' {prosjekt = 'første prosjekt'
region = 'us-vest1'
}
forsørger 'github' {
token = 'YOUR_GITHUB_TOKEN'
}
forsørger 'aws' {
versjon = '~> 3.0'
region = 'oss-vest-2'
}
ressurs 'google_compute_instance' 'gcpInstance' {
navn = 'ny instans'
maskintype = 'n1-standard-1'
sone = 'us-vest1-a'
boot_disk {
initialize_params {
bilde = 'debian-cloud/debian-10'
}
}
}
ressurs 'github_repository' 'gitRepo' {
navn = 'ny-repo'
beskrivelse = 'Dette er mitt nye depot'
}
ressurs 'aws_s3_bucket' 'awsBucket' {
bøtte = 'ny bøtte'
acl = 'privat'
}
Som det første trinnet definerer vi leverandørblokkeringene våre for å spesifisere leverandørene (Google, GitHub og AWS) og nødvendig informasjon som region, prosjektnavn osv. Deretter erklærer vi ressursene våre ved å bruke tre ressursblokker: 'gcpInstance', ' gitRepo', og 'awsBucket'.
Først oppretter vi en beregningsmotor i Google Cloud Platform med «new-instance» som navn, «n1-standard-1» som maskintype og «us-west1-a» som tilgjengelighetssone. Den bruker Debian som verts-OS. Deretter lager vi et GitHub-depot kalt 'new-repo' og en passende beskrivelse. Til slutt lages en S3-bøtte med 'new-bucket' som navn og 'private' som ACL-verdi (Access Control List).
Med disse tre Terraform-leverandørene kan vi enkelt samhandle med skyplattformer og deres tjenester.
Beste praksis for å jobbe med Terraform-leverandører
Leverandørversjon
Vi bør spesifisere leverandørens versjon siden den bidrar til å sikre konsistens og unngår uventet oppførsel på grunn av brytende endringer i nyere versjoner.
Leverandørautentisering
Vi kan bruke de sikre autentiseringsmekanismene som API-nøkler og tilgangstokener for å autentisere og autorisere Terraform til å samhandle med den respektive skyplattformen eller tjenesten.
Leverandørdokumentasjon
Leverandører har ofte spesifikke konfigurasjonsalternativer, funksjoner og begrensninger. Å forstå denne opplæringen hjelper oss å bruke leverandøren effektivt og unngå vanlige fallgruver.
Leverandøroppdateringer
Leverandører kan gi ut feilrettinger, ytelsesforbedringer og nye funksjoner. Ved å holde oss oppdatert kan vi dra nytte av de siste forbedringene og opprettholde kompatibilitet med leverandørens økosystem.
Fellesskapsstøtte
Vi kan bruke nettforaene, diskusjonsforaene og fellesskapskanalene for å løse de daglige utfordringene som oppstår mens du bruker leverandørene.
Feilhåndtering og feilsøking
Det er en god praksis å gjøre oss kjent med leverandørens feilmeldinger, logger og feilsøkingsteknikker, slik at det vil hjelpe oss med å diagnostisere og løse problemene mer effektivt.
Konklusjon
Vi tok en kort introduksjon til Terraform-leverandører. Vi diskuterte hvordan du bruker og konfigurerer dem til å samhandle med ulike skyplattformer og tjenester og hvordan du bruker flere leverandører til å administrere ressursene på tvers av ulike skyplattformer og tjenester gjennom enkle å forstå eksempler.