Dostawcy i zasoby
Poznają Państwo sposób interakcji Terraform z różnymi dostawcami usług i chmury oraz definiowania poszczególnych komponentów infrastruktury jako zasobów.
Dostawcy i zasoby to bezpłatna lekcja DevOps Bootcamp 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 DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Podstawowe elementy Terraform
Witamy! Terraform pomaga zarządzać infrastrukturą chmurową za pomocą kodu. Ale jak właściwie komunikuje się z dostawcami chmury i określa, co ma zostać utworzone?
W tej lekcji przedstawiono dwa podstawowe pojęcia: Providery i Zasoby. Są to podstawowe elementy każdej konfiguracji Terraform i klucz do zrozumienia działania IaC.
Czym są providery Terraform?
Provider można traktować jako wtyczkę, która umożliwia Terraform komunikację z zewnętrzną usługą lub interfejsem API. Może to być dostawca chmury, taki jak AWS, Azure lub Google Cloud, a także usługi takie jak GitHub, Kubernetes czy Datadog.
- Każdy provider rozumie wywołania API specyficzne dla swojej usługi.
- Przekłada oczekiwaną infrastrukturę na działania, które usługa może wykonać.
- Konfiguruje Pan/Pani providery, aby wskazać Terraform, z której usługi ma korzystać i jak ma się uwierzytelniać.
Deklarowanie bloku providera
Aby użyć providera, należy zadeklarować go w plikach konfiguracyjnych Terraform za pomocą bloku provider. Ten blok określa nazwę providera i wymagane przez niego ustawienia, takie jak region dostawcy chmury.
Oto typowy przykład dla providera AWS:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}Źródło i wersja providera
Sekcja required_providers w bloku terraform ma istotne znaczenie. Informuje Terraform, gdzie znaleźć providera (jego source) i której version użyć. Zapewnia to spójność i zapobiega nieoczekiwanemu działaniu.
- Source: określa ścieżkę providera w rejestrze, np.
hashicorp/aws. - Version: przypina wersję providera, zapobiegając niekompatybilnym zmianom wprowadzanym w nowych wydaniach.
- Blok
provider "aws"konfiguruje następnie konkretne ustawienia, takie jakregionAWS, dla wszystkich zasobów zarządzanych przez tego providera.
Czym są zasoby Terraform?
Zasób to blok opisujący pojedynczy element infrastruktury. Może nim być maszyna wirtualna (VM), sieć, baza danych, bucket obiektów, a nawet konto użytkownika.
- Każdym typem zasobu zarządza określony provider, np.
aws_s3_bucketjest obsługiwany przez providera AWS. - Deklaruje Pan/Pani oczekiwany stan zasobu, a Terraform dąży do jego osiągnięcia.
- Zasoby mają argumenty określające ich właściwości, takie jak rozmiar, nazwa czy lokalizacja.
Deklarowanie bloku zasobu
Zasób definiuje się za pomocą bloku resource. Ten blok wymaga dwóch ciągów znaków:
- typu zasobu, np.
aws_s3_bucket; - lokalnej nazwy, np.
my_first_bucket, unikalnej w obrębie konfiguracji.
Typ informuje Terraform, jakiego rodzaju element infrastruktury opisuje zasób, a nazwa nadaje mu unikalny identyfikator, za pomocą którego Terraform może go śledzić.
resource "aws_s3_bucket" "my_first_bucket" {
# Arguments go here to define its properties
}resource "aws_s3_bucket" "my_first_bucket" {
# Arguments go here to define its properties
}Argumenty i właściwości zasobów
Wewnątrz bloku resource określa się argumenty. Są to pary klucz-wartość definiujące właściwości i konfigurację elementu infrastruktury. Dostępne argumenty zależą od typu zasobu i zarządzającego nim providera.
- W przypadku bucketa AWS S3 argumenty mogą obejmować
bucket(unikalną nazwę),acl(listę kontroli dostępu) lubtagsdo oznaczania zasobu. - Terraform używa tych argumentów, aby utworzyć lub zaktualizować zasób i dopasować go do oczekiwanego stanu w chmurze.
Połączenie elementów: provider i zasób
Oto prosta, kompletna konfiguracja Terraform. Deklaruje providera AWS, a następnie używa go do utworzenia podstawowego bucketa S3. Ten jeden plik wystarczy, aby rozpocząć definiowanie infrastruktury!
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "my_unique_bucket" {
bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique!
acl = "private"
tags = {
Environment = "Development"
Project = "CoddyKit"
}
}terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "my_unique_bucket" {
bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique!
acl = "private"
tags = {
Environment = "Development"
Project = "CoddyKit"
}
}Powiązanie z procesem Terraform
Podczas wykonywania poleceń Terraform providery i zasoby pełnią kluczowe role:
terraform init: pobiera niezbędne wtyczki providerów.terraform plan: używa providera do komunikacji z chmurowym API i określa, jakie zmiany są potrzebne, aby osiągnąć oczekiwany stan zasobu.terraform apply: nakazuje providerowi wprowadzić te zmiany w rzeczywistej infrastrukturze chmurowej.
Są to podstawowe punkty interakcji podczas zarządzania infrastrukturą.
Szybkie sprawdzenie: rola providera
Wiedzą już Państwo, czym są Providery i Zasoby. Sprawdźmy, czy potrafią Państwo prawidłowo określić ich role.
Podsumowanie: providery i zasoby
Świetna praca! W tej lekcji zdobył(a) Pan/Pani podstawową wiedzę o dwóch najważniejszych pojęciach w Terraform:
- Providery: niezbędne wtyczki umożliwiające Terraform interakcję z różnymi usługami chmurowymi i interfejsami API. Konfiguruje się je, aby określić, z której usługi korzystać i jak się uwierzytelniać.
- Zasoby: poszczególne elementy infrastruktury deklarowane w konfiguracji. Mają typy i argumenty definiujące ich oczekiwany stan.
Te dwa elementy współpracują ze sobą, umożliwiając wydajne definiowanie infrastruktury i zarządzanie nią jako kodem!
Często zadawane pytania
Czy lekcja „Dostawcy i zasoby” jest bezpłatna?
Tak — pełny tekst „Dostawcy i zasoby” 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 „Dostawcy i zasoby”?
Poznają Państwo sposób interakcji Terraform z różnymi dostawcami usług i chmury oraz definiowania poszczególnych komponentów infrastruktury jako zasobów. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Dostawcy i zasoby”?
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
- Dostawcy i zasoby
- Zmienne i wartości wyjściowe
- Podstawy zarządzania stanem
- Moduły i ponowne używanie kodu