Ehdolliset lausekkeet ja splat-lausekkeet
Toteuttakaa määrityksissänne ehdollista logiikkaa ternäärioperaattoreilla ja tutustukaa splat-lausekkeisiin objektien listojen muuntamista varten.
Ehdolliset lausekkeet ja splat-lausekkeet on ilmainen Terraform ja infrastruktuuri koodina-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Terraform ja infrastruktuuri koodina-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Terraform ja infrastruktuuri koodina-kurssilla on yhteensä 4 oppituntia.
Dynaaminen logiikka Terraformissa
Terraformissa ei ole kyse vain staattisista määrityksistä! Jotta infrastruktuurin määrityksistä voidaan tehdä älykkäämpiä ja mukautuvampia, käytämme dynaamista logiikkaa.
Tässä oppitunnissa esitellään kaksi tehokasta työkalua: ehtolausekkeet ja splat-lausekkeet. Niiden avulla infrastruktuuri voi mukautua eri tilanteisiin ja tietoja voidaan muuntaa tehokkaasti.
Ehtolausekkeet: perusteet
Ehtolausekkeilla, joita kutsutaan usein ternäärioperaattoreiksi, voit valita jommankumman kahdesta arvosta sen perusteella, onko ehto tosi vai epätosi. Ne vastaavat arvoille tarkoitettua yksinkertaista "if-else"-lausetta.
- Syntaksi:
condition ? value_if_true : value_if_false - Ne sopivat erinomaisesti joustavien ja uudelleenkäytettävien määritysten tekemiseen sekä eri ympäristöihin ja asetuksiin mukautumiseen.
Ehto: yksinkertainen arvoesimerkki
Katsotaan, miten ehtolausekkeella voidaan määrittää paikallisen muuttujan arvo dynaamisesti syötemuuttujan perusteella. Kokeile muuttaa default = "dev" muotoon default = "prod" ja suorittaa määritys uudelleen.
variable "env" {
description = "Deployment environment (dev or prod)"
type = string
default = "dev"
}
locals {
instance_type = var.env == "prod" ? "t3.medium" : "t3.micro"
}
output "chosen_instance_type" {
value = local.instance_type
description = "The instance type selected based on environment."
}Ehto: resurssin attribuuttiesimerkki
Ehtolausekkeilla voi hallita myös resurssien attribuutteja ja jopa sitä, luodaanko resurssi lainkaan! Tässä S3-säilö luodaan ehdollisesti count-metamääritteen avulla.
variable "create_bucket" {
description = "Whether to create an S3 bucket"
type = bool
default = true
}
resource "aws_s3_bucket" "my_bucket" {
# If create_bucket is true, count is 1 (create one bucket).
# If create_bucket is false, count is 0 (create no buckets).
count = var.create_bucket ? 1 : 0
bucket = "coddykit-unique-bucket-12345" # IMPORTANT: Replace with a globally unique name!
acl = "private"
}
output "bucket_id" {
value = var.create_bucket ? aws_s3_bucket.my_bucket[0].id : "No bucket created"
description = "The ID of the created S3 bucket, or a message if not created."
}Splat-lausekkeiden ymmärtäminen
Splat-lausekkeilla ([*]) muunnetaan olioiden luettelo luetteloksi, joka sisältää kyseisten olioiden tiettyjä attribuutteja. Se on tehokas oikotie tietojen poimimiseen useista kohteista kerralla.
- Syntaksi:
LIST_OF_OBJECTS[*].ATTRIBUTE - Ne helpottavat kokoelmien käsittelyä, esimerkiksi
count-metamääritteellä luotuja useita resursseja tai monimutkaisia luettelomuuttujia.
Splat: resurssien tuloste-esimerkki
Oletetaan, että luot useita EC2-instansseja. Miten saat helposti luettelon niiden kaikista julkisista IP-osoitteista? Splat-lausekkeet sopivat tähän täydellisesti! Huomautus: Tarvitset AWS-alueellesi kelvollisen AMI-tunnuksen.
resource "aws_instance" "web" {
count = 2 # Creates two instances
ami = "ami-0abcdef1234567890" # Replace with a valid AMI ID for your region
instance_type = "t2.micro"
tags = {
Name = "web-instance-${count.index}"
}
}
output "web_instance_public_ips" {
value = aws_instance.web[*].public_ip
description = "A list of public IP addresses for all web instances."
}Splat: muuttujaluetteloesimerkki
Splat-lausekkeet eivät ole tarkoitettu vain resursseille, vaan ne toimivat erinomaisesti myös monimutkaisten muuttujien kanssa. Tässä meillä on käyttäjäolioiden luettelo, josta haluamme poimia vain sähköpostiosoitteet.
variable "users" {
description = "List of user objects, each with name, email, and role."
type = list(object({
name = string
email = string
role = string
}))
default = [
{ name = "Alice", email = "alice@example.com", role = "admin" },
{ name = "Bob", email = "bob@example.com", role = "viewer" },
{ name = "Charlie", email = "charlie@example.com", role = "editor" }
]
}
output "user_emails" {
value = var.users[*].email
description = "A list containing only the email addresses of the users."
}Ehtolausekkeiden ja splat-lausekkeiden yhdistäminen
Ehto- ja splat-lausekkeita voi yhdistää edistyneemmän ja tiiviimmän logiikan toteuttamiseksi. Voit esimerkiksi valita resurssiluettelon ehdollisesti ja käyttää sitten valittuun luetteloon splat-lauseketta.
- Näin voit tehdä määrityksistä erittäin mukautuvia, jolloin ne reagoivat monimutkaisiin tilanteisiin.
- Esimerkiksi
(var.env == "prod" ? aws_instance.prod : aws_instance.dev)[*].idvoi hakea tunnukset eri instanssijoukoista ympäristön perusteella.
Dynaamisen logiikan parhaat käytännöt
Vaikka dynaaminen logiikka on tehokasta, se voi vaikeuttaa määritysten ymmärtämistä, jos sitä ei käytetä harkiten. Tässä muutamia vinkkejä:
- Pidä koodi luettavana: Pilko monimutkaiset lausekkeet pienemmiksi ja helpommin hallittaviksi osiksi.
- Käytä paikallisia arvoja: Tallenna monimutkaiset ehto- tai splat-lausekkeet
locals-lohkoihin luettavuuden parantamiseksi ja toiston välttämiseksi. - Testaa perusteellisesti: Dynaaminen logiikka voi johtaa odottamattomaan toimintaan. Suorita aina
terraform planja tarkista ehdotetut muutokset huolellisesti. - Dokumentoi: Lisää kommentteja monimutkaisen logiikan selittämiseksi, erityisesti ehtolausekkeita ja splat-lausekkeita yhdistettäessä.
Pikatarkistus
Tarkastele seuraavaa Terraform-määritystä:
variable "server_names" {
type = list(string)
default = ["web-01", "db-01", "cache-01"]
}
output "filtered_names" {
value = var.server_names[*]
}Kertaus ja seuraavat vaiheet
Hienoa työtä! Olet oppinut tekemään Terraform-määrityksistä paljon dynaamisempia ja joustavampia:
- Tutustuimme ehtolausekkeisiin (ternäärioperaattori), joiden avulla arvoja voidaan muuttaa dynaamisesti tiettyjen ehtojen perusteella.
- Opimme käyttämään splat-lausekkeita (
[*]) attribuuttiluetteloiden tehokkaaseen poimimiseen olio- tai resurssikokoelmista.
Nämä työkalut ovat skaalautuvan, uudelleenkäytettävän ja mukautuvan infrastruktuurin koodina rakentamisen perusta. Harjoittele niiden käyttöä, jotta voit ottaa ne osaksi päivittäisiä Terraform-työnkulkujasi!
Opi Terraform ja infrastruktuuri koodina tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Ehdolliset lausekkeet ja splat-lausekkeet” ilmainen?
Kyllä – oppitunnin ”Ehdolliset lausekkeet ja splat-lausekkeet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Terraform ja infrastruktuuri koodina-kurssin, päivitä CoddyKit PROhon. Terraform ja infrastruktuuri koodina-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Ehdolliset lausekkeet ja splat-lausekkeet”?
Toteuttakaa määrityksissänne ehdollista logiikkaa ternäärioperaattoreilla ja tutustukaa splat-lausekkeisiin objektien listojen muuntamista varten. Harjoittelet Terraform ja infrastruktuuri koodina-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Terraform ja infrastruktuuri koodina-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Terraform ja infrastruktuuri koodina-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Ehdolliset lausekkeet ja splat-lausekkeet”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Terraform ja infrastruktuuri koodina-oppitunnilla?
Kyllä. Jokainen Terraform ja infrastruktuuri koodina-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Silmukat `for_each`- ja `count`-konstruktioilla
- Terraformin sisäänrakennetut funktiot
- Ehdolliset lausekkeet ja splat-lausekkeet
- Dynaamiset lohkot sisäkkäisiä määrityksiä varten