Tworzenie modułów wielokrotnego użytku
Nauczą się Państwo tworzyć własne moduły Terraform, definiując dane wejściowe, wyjściowe i zasoby w celu budowania modularnych i elastycznych konfiguracji.
Tworzenie modułów wielokrotnego użytku 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.
Tworzenie własnych modułów Terraform
W poprzedniej lekcji nauczyliśmy się korzystać z istniejących modułów Terraform. Teraz zajmiemy się tworzeniem własnych modułów wielokrotnego użytku!
Tworzenie modułów pomaga hermetyzować typowe wzorce infrastruktury, dzięki czemu konfiguracje są przejrzystsze, bardziej spójne i łatwiejsze w utrzymaniu.
Organizowanie plików modułu
Moduł Terraform to zasadniczo zbiór plików .tf przechowywanych w dedykowanym katalogu.
W najprostszej postaci katalog modułu zawiera:
variables.tf: Definiuje zmienne wejściowe modułu.main.tf: Zawiera deklaracje zasobów.outputs.tf: Definiuje wartości wyjściowe modułu.
Można także dodać plik versions.tf z wymaganiami dotyczącymi dostawcy oraz plik README.md z dokumentacją.
Dane wejściowe modułu: zmienne
Aby moduł był elastyczny, należy zdefiniować zmienne wejściowe. Umożliwiają one użytkownikom modułu dostosowanie jego działania bez zmieniania podstawowego kodu modułu.
Zmienne definiuje się za pomocą bloku variable, określając description, type i opcjonalnie wartość default.
Przykład: definiowanie zmiennej modułu
Oto sposób definiowania zmiennej określającej typ instancji w pliku variables.tf modułu:
# variables.tf
variable "instance_type" {
description = "The EC2 instance type to use."
type = string
default = "t2.micro"
}Zasoby modułu: podstawowa logika
Sercem modułu są jego deklaracje zasobów. Są to rzeczywiste zasoby chmurowe, które moduł aprowizuje.
Te bloki zasobów, takie jak instancja AWS EC2 lub zasobnik S3, należy umieścić w pliku main.tf modułu.
Co ważne, zasoby wewnątrz modułu często korzystają ze zdefiniowanych zmiennych wejściowych.
Deklarowanie zasobu za pomocą danych wejściowych
Zadeklarujmy instancję EC2 w pliku main.tf, korzystając ze zmiennej instance_type:
# main.tf
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890" # Example AMI ID
instance_type = var.instance_type
tags = {
Name = "MyWebServer"
}
}Wartości wyjściowe modułu: udostępnianie informacji
Tak jak moduły przyjmują dane wejściowe, mogą również udostępniać wartości wyjściowe. Są one przydatne do eksportowania informacji o zasobach utworzonych przez moduł.
Można na przykład udostępnić publiczny adres IP instancji EC2 lub ARN zasobnika S3.
Wartości wyjściowe definiuje się w pliku outputs.tf za pomocą bloku output.
Definiowanie wartości wyjściowej modułu
Oto sposób definiowania wartości wyjściowej dla publicznego adresu IP naszej instancji EC2 w pliku outputs.tf:
# outputs.tf
output "instance_public_ip" {
description = "The public IP address of the EC2 instance."
value = aws_instance.web_server.public_ip
}Wywoływanie nowego modułu
Po zdefiniowaniu modułu można używać go w konfiguracji głównej (lub w innym module) tak samo jak każdego innego modułu.
Należy określić parametr source (ścieżkę do katalogu modułu) i przekazać wartości do jego zmiennych wejściowych.
# root_config/main.tf
module "my_web_server_module" {
source = "../my-ec2-module" # Path to your module
instance_type = "t3.small" # Override default
}
output "web_server_ip" {
value = module.my_web_server_module.instance_public_ip
}Sprawdzenie elementów modułu
Udało się Państwu poznać najważniejsze pliki w module Terraform. Który plik służy przede wszystkim do definiowania wartości, które można przekazać do modułu?
Podsumowanie: tworzenie modułów wielokrotnego użytku
Świetna praca! Wiedzą już Państwo, jak tworzyć własne moduły Terraform.
- Moduły to katalogi zawierające pliki
.tf. - Plik
variables.tfsłuży do definiowania danych wejściowych. - Definicje zasobów należy umieszczać w pliku
main.tf. - Wartości wyjściowe należy definiować w pliku
outputs.tf, aby udostępniać dane.
Ta umiejętność ma kluczowe znaczenie podczas tworzenia skalowalnej, łatwej w utrzymaniu i spójnej infrastruktury jako kodu.
Często zadawane pytania
Czy lekcja „Tworzenie modułów wielokrotnego użytku” jest bezpłatna?
Tak — pełny tekst „Tworzenie modułów wielokrotnego użytku” 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 „Tworzenie modułów wielokrotnego użytku”?
Nauczą się Państwo tworzyć własne moduły Terraform, definiując dane wejściowe, wyjściowe i zasoby w celu budowania modularnych i elastycznych 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 „Tworzenie modułów wielokrotnego użytku”?
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
- Wprowadzenie do modułów Terraform
- Tworzenie modułów wielokrotnego użytku
- Korzystanie z obszarów roboczych dla środowisk
- Publikowanie modułów w rejestrze