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 Terraform Infrastructure as Code 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 Terraform Infrastructure as Code, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Terraform Infrastructure as Code 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 Terraform Infrastructure as Code, przejdź na CoddyKit PRO. Kurs Terraform Infrastructure as Code 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 Terraform Infrastructure as Code 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ąć Terraform Infrastructure as Code?
Nie wymagamy żadnego doświadczenia. Terraform Infrastructure as Code 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 Terraform Infrastructure as Code?
Tak. Każda lekcja Terraform Infrastructure as Code 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
- Korzystanie z pętli `for_each` i `count`
- Wbudowane funkcje Terraform
- Wyrażenia warunkowe i splaty
- Dynamiczne bloki dla zagnieżdżonej konfiguracji