0Pricing
DevOps Bootcamp · Lekcja

Wbudowane funkcje Terraform

Poznaj szeroki zakres wbudowanych funkcji Terraform do przetwarzania ciągów znaków i list, konwersji typów oraz wielu innych zastosowań, które ułatwiają tworzenie konfiguracji.

Wbudowane funkcje Terraform to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Odblokuj dynamiczne konfiguracje

Wbudowane funkcje Terraformu przypominają małe programy, które pomagają przetwarzać i przekształcać wartości bezpośrednio w plikach konfiguracyjnych.

Pozwalają tworzyć dynamiczne, wielokrotnego użytku i bardziej inteligentne definicje infrastruktury.

  • Przekształcanie danych: zmienianie ciągów znaków, liczb lub list.
  • Obliczanie wartości: wykonywanie obliczeń lub kontroli logicznych.
  • Generowanie dynamicznej zawartości: tworzenie nazw zasobów lub tagów w locie.

Przekształcanie tekstu

Funkcje ciągów znaków są niezbędne do manipulowania tekstem. Dwie podstawowe funkcje to upper() i lower(), które zmieniają wielkość liter w ciągu znaków.

Są przydatne do ujednolicania konwencji nazewnictwa lub spełniania określonych wymagań.

variable "region_code" {
  type    = string
  default = "us-east-1"
}

output "upper_region" {
  value = upper(var.region_code)
}

output "lower_example" {
  value = lower("AWS_REGION")
}

Łączenie i dzielenie ciągów znaków

Funkcja join() łączy elementy listy w jeden ciąg znaków, używając określonego separatora. Z kolei split() dzieli ciąg znaków na listę podciągów na podstawie separatora.

Funkcje te doskonale nadają się do analizowania danych lub konstruowania złożonych nazw.

variable "tags_list" {
  type    = list(string)
  default = ["web", "frontend", "prod"]
}

output "joined_tags" {
  value = join(",", var.tags_list)
}

output "split_string" {
  value = split("-", "server-01-app")
}

Matematyka w konfiguracjach

Funkcje numeryczne umożliwiają wykonywanie podstawowych operacji matematycznych. ceil() zaokrągla w górę, floor() zaokrągla w dół, a min()/max() wyszukują odpowiednio najmniejszą i największą wartość w zbiorze.

Są bardzo przydatne podczas obliczania liczby zasobów lub określania ich rozmiaru.

variable "instance_ratio" {
  type    = number
  default = 3.7
}

output "rounded_up_instances" {
  value = ceil(var.instance_ratio)
}

output "rounded_down_instances" {
  value = floor(var.instance_ratio)
}

output "smallest_val" {
  value = min(10, 5, 12, 8)
}

Praca z listami

Listy to uporządkowane kolekcje elementów. Funkcje takie jak length() informują, ile elementów znajduje się na liście, a element() pobiera element na podstawie jego indeksu numerycznego (zaczynającego się od 0).

Przydają się podczas iterowania lub wybierania konkretnych elementów.

variable "zones" {
  type    = list(string)
  default = ["us-east-1a", "us-east-1b", "us-east-1c"]
}

output "num_zones" {
  value = length(var.zones)
}

output "first_zone" {
  value = element(var.zones, 0)
}

Obsługa danych klucz-wartość

Mapy przechowują dane w postaci par klucz-wartość. Funkcja lookup() pobiera wartość dla danego klucza, z opcjonalną wartością domyślną używaną, gdy klucz nie zostanie znaleziony. Funkcja merge() łączy wiele map w jedną mapę.

Mapy idealnie nadają się do zarządzania metadanymi lub tagami zasobów.

variable "server_info" {
  type = map(string)
  default = {
    name = "backend-server"
    env  = "dev"
  }
}

variable "additional_info" {
  type = map(string)
  default = {
    owner = "team-a"
  }
}

output "server_name" {
  value = lookup(var.server_info, "name", "unknown")
}

output "merged_map" {
  value = merge(var.server_info, var.additional_info)
}

Zmiana typów danych

Czasami argument zasobu musi mieć określony typ danych (np. być ciągiem znaków zamiast liczbą). Pomagają w tym funkcje konwersji typów, takie jak tostring() i tonumber().

Zapewnia to zgodność między różnymi częściami konfiguracji.

variable "port_number" {
  type    = number
  default = 8080
}

output "port_as_string" {
  value = tostring(var.port_number)
}

output "string_to_number" {
  value = tonumber("123") + 7
}

Funkcje w działaniu

Wbudowane funkcje można łączyć lub zagnieżdżać, aby przeprowadzać złożone transformacje danych. Ten przykład tworzy nazwę zasobu, łącząc zmienne, konwertując jedną z nich na wielkie litery i upewniając się, że typy są prawidłowe.

variable "env" {
  type    = string
  default = "dev"
}

variable "service" {
  type    = string
  default = "app"
}

variable "instance_id" {
  type    = number
  default = 1
}

output "resource_name" {
  value = join("-", [
    upper(var.env),
    var.service,
    tostring(var.instance_id)
  ])
}

Najlepsze praktyki

Podczas korzystania z funkcji należy dążyć do przejrzystości i łatwości utrzymania kodu:

  • Zachowaj czytelność: Nie zagnieżdżaj nadmiernie funkcji, jeśli przez to kod staje się trudny do zrozumienia.
  • Korzystaj ze zmiennych: Zapisuj złożone wyniki pośrednie w zmiennych lokalnych, aby zwiększyć czytelność.
  • Testuj za pomocą terraform console: Szybko testuj funkcje, aby sprawdzić ich wynik przed dodaniem ich do konfiguracji.

Wyzwanie dotyczące funkcji

Sprawdźmy, jak dobrze rozumiesz współdziałanie wbudowanych funkcji Terraform.

Funkcje opanowane!

Zapoznałeś się z potężnymi wbudowanymi funkcjami Terraform!

Wiesz już, jak używać funkcji operujących na ciągach znaków, liczbach i kolekcjach, a także funkcji konwersji typów, aby tworzyć dynamiczne i elastyczne konfiguracje. Narzędzia te mają kluczowe znaczenie podczas pisania wydajnego i wielokrotnego użytku kodu Infrastructure as Code.

Często zadawane pytania

Czy lekcja „Wbudowane funkcje Terraform” jest bezpłatna?

Tak — pełny tekst „Wbudowane funkcje Terraform” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Wbudowane funkcje Terraform”?

Poznaj szeroki zakres wbudowanych funkcji Terraform do przetwarzania ciągów znaków i list, konwersji typów oraz wielu innych zastosowań, które ułatwiają tworzenie konfiguracji. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Wbudowane funkcje Terraform”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Korzystanie z pętli `for_each` i `count`
  2. Wbudowane funkcje Terraform
  3. Wyrażenia warunkowe i splaty
  4. Dynamiczne bloki dla zagnieżdżonej konfiguracji
← Powrót do DevOps Bootcamp