0Pricing
Terraform Infrastructure as Code · Lekcja

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.tf dla danych wejściowych oraz pliku outputs.tf dla 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

  1. Wprowadzenie do modułów Terraform
  2. Tworzenie modułów wielokrotnego użytku
  3. Korzystanie z obszarów roboczych dla środowisk
  4. Publikowanie modułów w rejestrze
← Powrót do Terraform Infrastructure as Code