Terraform -variabler

Terraform -variabler
Terraform har dukket opp som et av de ledende avsetningsverktøyene for utvikling av flere skyer. Den bruker sitt eget syntaksbaserte språk som heter - HCl (Hashicorp Configuration Language), selv om det i seg selv er utviklet i Golang.

Terraform brukes til å automatisere og administrere infrastrukturer, plattformer og tjenester ved hjelp av deklarativt språk. Terraform Støtter flere skytjenesteleverandører som er bygget for infrastruktur som Code (IAC) -løsning. Det er et open source -verktøy utviklet av Hashicorp. Ved hjelp av IAC kan vi administrere infrastrukturoppsett med konfigurasjonsfiler. For e.g., Vi kan distribuere, oppdatere og administrere infrastrukturen vår ved å definere de nødvendige ressursene.

Hva vil vi dekke?

I denne guiden lærer vi om terraformvariabler. Vi vil se hvorfor terraformvariabler er viktige, og hvordan vi skal definere og bruke dem.

Hvorfor skal du bry deg om terraformvariabler?

I terraform kan vi tildele verdier til argumentene via litteraler som heltall og strenger. Dette kan være en god tilnærming for små infrastrukturkonfigurasjoner, men etter hvert som størrelsen på infrastrukturen vokser, blir denne tilnærmingen veldig ineffektiv. I slike tilfeller kan vi bruke Terraforms inngangsvariabler, der vi erklærer en verdi på bare ett sted og deretter bruker den verdien i andre deler av koden og filene ved å henvise dem til. Denne tilnærmingen er mer effektiv ettersom den gjør koden gjenbrukbar og komponerbar.

Merk at Terraform bruker begrepet 'variabler' eller 'Terraform -variabler' for å referere til inngangsvariabler.

Definere en variabel

I terraform er variabler definert i en 'variabel' navngitt blokk, som har følgende type syntaks:

variabel variabel_navn argumenter

Selve "variable" nøkkelordet erklærer selve blokken som en 'variabel' blokkeringstype. 'Variable_name', etter variabelt nøkkelord, er navnet på variabelen vi skal definere. Dette navnet må være særegent fra andre variabler innenfor samme modul. Ved hjelp av dette navnet tildeles variabelen en verdi utenfra. Tilsvarende ved å bruke variabelnavnet, kan vi referere til verdien i modulen.

Merk at følgende reserverte identifikatorer ikke kan brukes til et variabelt navn: kilde, versjon, leverandører, count, for_each, livssyklus, avhenger_on, lokalbefolkningen.

Argumenter for variabelblokken

Følgende argumenter kan deklareres i en variabel type blokk:

Standard - den angir en standardverdi for blokken. En variabel er valgfri hvis en standardverdi er til stede. Denne verdien vil bli brukt hvis ingen annen verdi er spesifisert mens du ringer en modul.

Type - den spesifiserer hvilke typer verdier som kan brukes med variabelen.

Beskrivelse - Det er en slags kommentar om selve variabelen.

Validering - Det er en blokk å definere forhold/sjekker for en variabel.

Sensitiv - Det skjuler konfidensielle data som skal vises mens du kjører 'Plan' eller 'Apply' -kommandoen.

Nullable - Det styrer om variabelen kan tildeles en verdi i modulen.

Å få tilgang til en variabels verdier

For å få tilgang til en verdi av variabelen fra modulen, bruk formatet:

var.

Hvor 'var' er et prefiks og er etiketten etter nøkkelordet 'variabel'. Denne tildelte verdien av en variabel kan bare nås i uttrykk i modulen der den ble definert. Som et eksempel kan du vurdere en variabel 'tast' definert som:

variabel “instans_type”
standard = “T2.mikro ”


Vi kan referere til variabelen ovenfor som følger:

ressurs "aws_instance" "eksempel"
instance_type = "var.forekomst_type "
ami = var.image_id

Kommandolinjevariabler

For å tilordne en verdi til en variabel på kommandolinjen, bruker Terraform alternativet '-Var'. For e.g., Når Terraform Plan og Terraform anvendelse av kommandoen blir utført, kan vi gjøre som følger:

1. Passerer en forekomst ami-id

$ Terraform Apply -Var = "Image_id = Ami -Xyz123"


2. Passerer en liste over forekomster AMI-ID-er

$ Terraform Apply -Var = 'Image_Id_List = ["Ami -Xyz123", "Ami -Abc456"]' -Var = "Instance_Type = T2.mikro "


3. Passering av en karttypeverdi

$ Terraform Apply -Var = 'Image_Id_Map = "US-East-1": "Ami-Xyz123", "US-East-2": "Ami-Abc456"'

Variable definisjonsfiler (.tfvars)

Når det er mange variabler, er det lurt å sette dem alle i en variabel definisjonsfil (a .TFVARS -fil eller .tfvars.JSON -fil). Vi kan deretter passere denne filen på kommandolinjen som følger:

$ Terraform Apply -Var -file = "Eksempel.tfvars "


Denne filen blir analysert automatisk hvis den heter 'Terraform.tfvars '.

Merk at vi ikke legger denne filen i noe kildekontrollsystem for å unngå eksponering for sensitive data.

Også hvis vi legger til '.Auto 'til et filnavn før'.tfvars ', for eksempel myfil.bil.tfvars, denne filen lastes automatisk uten å spesifisere flagget "var-fil". Dette er det samme som 'Terraform.TFVARS 'fil.

Miljøvariabler

Miljøvariabler, med navn prefiks med TF_VAR, kan brukes til å definere inngangsvariabler. For e.g., “TF_VAR_MYKEY” vil referere til verdien av en terraformvariabel som heter “Mykey”. For å angi en enkelt verdi for denne miljøvariabelen på UNIX/Linux, bruk formatet:

$ TF_VAR_MYKEY = “FHJ7-47DD-HLL02-PJU8”


Tilsvarende, for Windows OS, bruk formatet:

Sett TF_VAR_MYKEY = “FHJ7-47DD-HLL02-PJU8”


Alternativt kan vi også bruke terraformen.TFVARS -fil.

Innpakning

Vi avslutter nå endelig denne artikkelen, selv om det er mange andre ting å dekke. Vi har presentert et syn på høyt nivå av terraformvariabler. Foruten Terraform, er det også andre verktøy som AWS CloudFormation, Chef, Puppet, Ansible og så videre. Hvert verktøy har sine egne fordeler og begrensninger. Fordelen med å bruke terraform er at den ikke er bundet til en bestemt tjenesteleverandør.