Wprowadzenie do modułów Terraform
Poznają Państwo zalety modułów służących do hermetyzowania i ponownego używania typowych wzorców infrastruktury, co poprawia organizację i łatwość utrzymania kodu.
Wprowadzenie do modułów Terraform to bezpłatna lekcja Terraform Infrastructure as Code na CoddyKit. To lekcja 1 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.
Czym są moduły Terraform?
Moduł Terraform to samodzielny pakiet konfiguracji Terraform. Można porównać go do funkcji lub klasy w językach programowania. Umożliwia grupowanie powiązanych zasobów i zarządzanie nimi jako jedną całością.
Moduły pomagają organizować kod infrastruktury i ułatwiają zarządzanie nim, szczególnie w większych projektach.
Dlaczego warto używać modułów Terraform?
Moduły oferują kilka kluczowych korzyści dla infrastruktury jako kodu:
- Wielokrotne użycie: Zdefiniowanie fragmentu infrastruktury raz i używanie go wielokrotnie w różnych projektach lub środowiskach.
- Organizacja: Podział złożonych konfiguracji na mniejsze, łatwiejsze w zarządzaniu i logiczne komponenty.
- Spójność: Zapewnienie każdorazowego aprowizowania zasobów w ustandaryzowany sposób, co ogranicza rozbieżności konfiguracji i liczbę błędów.
- Współpraca: Zespoły mogą tworzyć i udostępniać moduły, przyspieszając prace i utrzymując standardy.
Wyjaśnienie struktury modułu
Moduł Terraform to zasadniczo katalog zawierający co najmniej jeden plik .tf. Struktura jest elastyczna, ale często obejmuje:
main.tf: Definiuje główne zasoby tworzone przez moduł.variables.tf: Deklaruje zmienne wejściowe dostosowujące działanie modułu.outputs.tf: Definiuje wartości wyjściowe udostępniane przez moduł wywołującym go konfiguracjom.versions.tf: Określa ograniczenia dotyczące wersji Terraform i dostawcy dla modułu.
Taka uporządkowana struktura pomaga utrzymać porządek i czytelność kodu.
Kod pierwszego modułu
Zdefiniujmy bardzo prosty moduł, który tworzy zasobnik AWS S3. Taki kod zwykle znajdowałby się w osobnym katalogu, na przykład modules/my_s3_bucket/main.tf.
Ten kompletny plik można uruchomić jako moduł główny, aby zobaczyć jego działanie, ale jego głównym celem jest pokazanie wewnętrznej struktury modułu.
provider "aws" {
region = "us-east-1" # Example region
}
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}
resource "aws_s3_bucket" "example_bucket" {
bucket = var.bucket_name
acl = var.acl_setting
tags = {
Environment = "Dev" # Example tag
}
}
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}Dane wejściowe modułu: zmienne
Zmienne wejściowe pozwalają dostosować działanie modułu bez zmieniania jego podstawowego kodu. Są definiowane w pliku variables.tf znajdującym się w katalogu modułu.
Podczas wywoływania modułu przekazują Państwo wartości tych zmiennych, dzięki czemu moduł można łatwo ponownie wykorzystać w różnych scenariuszach i środowiskach. Można je porównać do argumentów funkcji.
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}Wartości wyjściowe modułu: udostępnianie danych
Wartości wyjściowe służą do udostępniania danych z modułu konfiguracji, która go wywołuje. Dzięki nim można uzyskać ważne informacje o zasobach utworzonych przez moduł.
Wartości wyjściowe definiuje się w pliku outputs.tf znajdującym się w katalogu modułu. Mogą się do nich odwoływać inne części konfiguracji Terraform, a nawet inne moduły.
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}Wywoływanie własnego modułu
Skoro zdefiniowaliśmy już moduł my_s3_bucket, wywołajmy go z konfiguracji głównej. Atrybut source określa, gdzie Terraform może znaleźć moduł.
W przypadku modułów lokalnych jest to ścieżka względna do katalogu modułu. Przekazujemy wartości do zmiennych wejściowych modułu i możemy korzystać z udostępnianych przez niego wartości wyjściowych.
provider "aws" {
region = "us-east-1"
}
module "my_website_bucket" {
source = "./modules/my_s3_bucket" # Path to your local module
bucket_name = "my-unique-website-bucket-12345"
acl_setting = "public-read"
}
output "website_bucket_arn" {
description = "ARN of the website S3 bucket."
value = module.my_website_bucket.bucket_arn
}
output "website_bucket_id" {
description = "ID of the website S3 bucket."
value = module.my_website_bucket.bucket_id
}Różne źródła modułów
Moduły nie muszą być tylko lokalne! Terraform może pobierać moduły z różnych źródeł, zapewniając elastyczność:
- Ścieżki lokalne:
./modules/my_module(jak w naszym przykładzie) - Terraform Registry:
hashicorp/vpc/aws(publicznie dostępne moduły) - Repozytoria Git:
git::https://example.com/repo.git - Zasobniki S3:
s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip
Terraform Registry to świetne miejsce do znajdowania gotowych modułów zweryfikowanych przez społeczność, przeznaczonych do typowych wzorców infrastruktury.
Praktyczne znaczenie modułów
Wyobraźmy sobie zarządzanie setkami zasobów w wielu środowiskach (programistycznym, testowym i produkcyjnym). Bez modułów mieliby Państwo ogromne, powtarzalne pliki konfiguracyjne.
Moduły pozwalają zdefiniować wzorzec „serwera internetowego” lub „bazy danych” raz, a następnie wywoływać ten moduł dla każdej instancji, przekazując różne zmienne zależne od środowiska. Znacząco ogranicza to liczbę błędów, upraszcza aktualizacje i sprawia, że infrastruktura staje się naprawdę skalowalna.
Szybkie sprawdzenie
Poznali już Państwo strukturę i korzyści płynące z modułów Terraform. Sprawdźmy, czy potrafią Państwo wskazać jedną z ich kluczowych zalet.
Podsumowanie i następne kroki
W tej lekcji przedstawiliśmy moduły Terraform jako zaawansowane narzędzia do organizowania i ponownego wykorzystywania kodu infrastruktury. Nauczyli się Państwo, że:
- Moduły hermetyzują zasoby w jednostkach wielokrotnego użytku.
- Usprawniają organizację kodu, spójność i możliwość ponownego użycia.
- Moduły używają pliku
variables.tfdla danych wejściowych oraz plikuoutputs.tfdla udostępnianych danych. - Moduły można wywoływać ze ścieżek lokalnych, rejestrów lub repozytoriów Git.
W następnej części dokładniej zajmiemy się tworzeniem własnych modułów wielokrotnego użytku, poznając bardziej zaawansowane wzorce i dobre praktyki.
Często zadawane pytania
Czy lekcja „Wprowadzenie do modułów Terraform” jest bezpłatna?
Tak — pełny tekst „Wprowadzenie do modułów 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 „Wprowadzenie do modułów Terraform”?
Poznają Państwo zalety modułów służących do hermetyzowania i ponownego używania typowych wzorców infrastruktury, co poprawia organizację i łatwość utrzymania kodu. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Wprowadzenie do modułów 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
- Wprowadzenie do modułów Terraform
- Tworzenie modułów wielokrotnego użytku
- Korzystanie z obszarów roboczych dla środowisk
- Publikowanie modułów w rejestrze