Hvordan lage en sløyfe i terraform

Hvordan lage en sløyfe i terraform
Terraform tilbyr en deklarativ språkmodell. Selv om dette gjør det veldig enkelt og effektivt å definere ressurser, kan det mangle noen grunnleggende funksjoner som er nyttige i daglig drift.

For eksempel støtter ikke spesifikke deklarative språk ikke kontrollstrømmen, for eksempel løkker. Derfor, når du trenger å opprette et kode repetitivt, må du standard kopiere og lime inn. Dette er ikke en veldig effektiv metode for noen utvikler.

Terraform forstår dette og gir noen få funksjoner som hjelper med funksjoner, for eksempel betingelser og løkker. I denne artikkelen vil du lære å bruke tellingen, for_each og for uttrykk i terraform.

Det grunnleggende

Terraform gir tre hovedstrukturer når du jobber med løkker. Disse inkluderer:

  1. Telle
  2. For hver
  3. Til

La oss forstå hvordan vi bruker hver av disse sløyfekonstruksjonene.

Telleparameter

Ressursblokken i terraform definerer hovedsakelig og administrerer et enkelt objekt i skyen. Imidlertid kan det hende du må opprette eller administrere flere objekter uten å opprette hver blokk for hvert objekt. Å gjøre dette fjerner repeterende kode, og gjør det lettere å lese og betjene.

En måte å oppnå dette på er bruken av tellemeta-argumentet. Hvis du definerer en ressursblokk som inkluderer telleparameteren med verdien som helt tall, vil Terraform utføre handlingene på det spesifiserte antallet ressurser.

Grunnleggende bruk

Grevparameteren, også kjent som Meta-Argument, kan brukes i ressurs- eller modulblokkene.

Den godtar et heltall eller hele nummer og vil utføre de spesifiserte handlingene i de mange utvalgte forekomstene. For eksempel, hvis du setter tellingen til 5 på en ressursblokk som oppretter S3 -bøtter, vil Terraform lage fem S3 -bøtteforekomster.

Terraform vil imidlertid lage et unikt infrastrukturobjekt for hvert element. Derfor mottar hver vare CRUD -operasjoner separat.

Følgende eksempel viser hvordan du bruker telleparameteren i Terraform:

terraform
krevde_providers
aws =
Source = "Hashicorp/AWS"
versjon = "-> 3.27 "


krevde_versjon = "> = 0.12 "

leverandør "aws"
profil = "standard"
Region = "Us-East-1"

ressurs "aws_instance" "web_server"
amo = "ami-234c45e2"
instance_type = "t1.mikro "
telling = 3
tags =
Name = "webserver versjon: $ count.indeks "

Eksempelkoden ovenfor oppretter tre AWS -forekomster av type T1.Mikro. Vi bruker også tellemetoden for å lage tagger med antall forekomster.

Indeksattributtet lar deg endre konfigurasjonen for hvert element. Tellingsindeksen er en distinkt verdi som beskriver hver forekomst som starter 0.

I motsetning til de fleste Terraform Meta-Arguments, må verdien av telleparameteren være kjent på forhånd.

For_each -parameter

For_each -parameteren er nær lik tellingsargumentet. Du kan bruke den med en ressurs- og modulblokk.

Grunnleggende bruk

For_each -parameteren godtar et sett med strenger eller et kart. Deretter oppretter det en spesifikk forekomst for hvert element i samlingen. I likhet med tellingen har hvert element en unik objektinfrastruktur -ID som lar Terraform utføre CRUD -operasjoner individuelt på et bestemt objekt.

Følgende utdrag viser hvordan du bruker for_each -elementet til å opprette flere brukere:

ressurs "aws_iam_user" "web-managers"
for_each = Toset (["John", "Lucy", "Harley", "David"])
Navn = hver.nøkkel

Det forrige eksemplet viser hvordan du bruker for_each med et sett med strenger. For å bruke et kart, bør du vurdere koden som er vist nedenfor:

for_each =
gruppe = "Web"
group_b = "db"

Navn = hver.nøkkel
Sted = hver.verdi

For parameter

For -loop -parameteren er ikke veldig forskjellig fra for drift på de fleste programmeringsspråk. Det lar deg sløyfe over en liste over elementer.

Anta for eksempel at du har en liste over brukere, og at du vil konvertere brukernavnene til store bokstaver. I slike tilfelle kan du bruke en for loop:

Brukernavn = Tolist (["Brukername1", "UserName2", UserName3])
[Foriinusernames.Liste: Øvre (er)]

Den forrige koden utvider elementene i listen og konverterer hver til store bokstaver. Lær mer om terraform for uttrykk i dokumentasjonen.

Konklusjon

Denne guiden gir deg det grunnleggende om å utføre sløyfeoperasjoner i terraform ved hjelp av telling, for_each og for uttrykk. Vi håper du fant eksemplene ved å bruke de tre parametrene nyttige. Sjekk ut Linux -hint for flere tips og informasjon.