Zarządzanie stanem Terraform i zdalnymi backendami
Zrozum stan Terraform, skonfiguruj bezpieczne zdalne backendy, obsługuj blokowanie stanu i unikaj jego uszkodzenia we współpracujących potokach IaC.
Zarządzanie stanem Terraform i zdalnymi backendami to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 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.
Czym jest stan Terraform
Terraform zapisuje informacje o utworzonych zasobach w pliku stanu (terraform.tfstate). Odwzorowuje on konfigurację na rzeczywiste zasoby w chmurze.
Bez stanu Terraform nie wiedziałby, które zasoby już istnieją, i mógłby utworzyć duplikaty lub nie zaktualizować zasobów.
Dlaczego lokalny stan nie sprawdza się w zespołach
Domyślnie stan jest przechowywany na dysku lokalnym. Nie sprawdza się to w pracy zespołowej ani w CI:
- Inne osoby nie mogą zobaczyć stanu
- Równoczesne uruchomienia mogą uszkodzić plik
- Plik zawiera sekrety w postaci jawnego tekstu i może przypadkowo trafić do repozytorium
Rozwiązaniem jest zdalny backend.
Zdalne backendy
Zdalny backend przechowuje stan we współdzielonej, trwałej lokalizacji, takiej jak zasobnik S3, Azure Blob, GCS lub Terraform Cloud.
Dzięki temu każde uruchomienie potoku korzysta z jednego źródła prawdy na temat bieżącej infrastruktury.
terraform {
backend "s3" {
bucket = "my-tf-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
}
}Blokowanie stanu
Jeśli dwa uruchomienia potoku wykonują operację apply jednocześnie, mogą uszkodzić stan. Blokowanie stanu temu zapobiega, zezwalając tylko na jeden zapis naraz.
W przypadku backendu S3 blokadę zapewnia tabela DynamoDB. Terraform Cloud blokuje stan automatycznie.
backend "s3" {
bucket = "my-tf-state"
key = "prod/terraform.tfstate"
dynamodb_table = "tf-locks"
}Szyfrowanie stanu
Pliki stanu często zawierają poufne wartości, takie jak hasła i klucze. Zawsze szyfruj stan w spoczynku.
W przypadku backendu S3 włącz szyfrowanie zasobnika i ustaw encrypt = true w konfiguracji backendu.
backend "s3" {
bucket = "my-tf-state"
key = "prod/terraform.tfstate"
encrypt = true
}Obszary robocze dla środowisk
Obszary robocze Terraform pozwalają jednej konfiguracji zarządzać wieloma plikami stanu — po jednym dla każdego środowiska.
Przełączaj się między nimi, aby środowiska staging i produkcyjne nigdy nie współdzieliły tego samego stanu.
terraform workspace new staging
terraform workspace select productionPlanowanie i zastosowanie zmian w CI
W potoku uruchom terraform plan, aby wyświetlić podgląd zmian (często dla żądań PR), oraz terraform apply, aby je zastosować (po scaleniu do gałęzi main).
Zapisz plan do pliku, aby polecenie apply użyło dokładnie tego, co zostało sprawdzone.
terraform plan -out=tfplan
terraform apply -auto-approve tfplanInspekcja stanu
Możesz odpytywać stan, aby sprawdzić, co śledzi Terraform.
terraform state list— wyświetla zarządzane zasobyterraform state show <addr>— wyświetla szczegóły jednego zasobu
Unikaj ręcznej edycji stanu; zamiast tego używaj poleceń.
terraform state list
terraform state show aws_instance.webImportowanie istniejących zasobów
Jeśli zasób został utworzony poza Terraform, przejmij nad nim zarządzanie za pomocą terraform import, zamiast tworzyć go ponownie.
Zapobiega to destruktywnemu duplikowaniu zasobów podczas wdrażania IaC w istniejącej infrastrukturze.
terraform import aws_s3_bucket.logs my-existing-bucketObsługa rozbieżności
Rozbieżność powstaje, gdy ktoś ręcznie zmieni infrastrukturę i rzeczywisty stan przestaje odpowiadać stanowi zapisanemu w Terraform.
Regularnie uruchamiaj terraform plan, aby wykrywać rozbieżności, a następnie ponownie zastosuj konfigurację w celu przywrócenia stanu albo zaktualizuj konfigurację, aby odpowiadała rzeczywistości.
Nigdy nie zatwierdzaj stanu w repozytorium
Nawet w przypadku zdalnego backendu upewnij się, że lokalne pliki stanu i pliki planu są ignorowane przez Git. Zawierają sekrety.
Dobry plik .gitignore chroni przed przypadkowymi wyciekami.
# .gitignore
*.tfstate
*.tfstate.*
tfplan
.terraform/Szybkie sprawdzenie
Sprawdź swoje zrozumienie stanu Terraform.
Podsumowanie
Nauczyłeś się bezpiecznie zarządzać stanem Terraform.
- Stan odwzorowuje konfigurację na rzeczywiste zasoby; nigdy nie edytuj go ręcznie
- Zdalne backendy udostępniają stan zespołowi i systemowi CI
- Blokowanie i szyfrowanie chronią przed uszkodzeniem danych i wyciekami
- Obszary robocze izolują środowiska, a
planwykrywa rozbieżności
Solidne zarządzanie stanem jest podstawą niezawodnych potoków IaC.
Często zadawane pytania
Czy lekcja „Zarządzanie stanem Terraform i zdalnymi backendami” jest bezpłatna?
Tak — pełny tekst „Zarządzanie stanem Terraform i zdalnymi backendami” 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 „Zarządzanie stanem Terraform i zdalnymi backendami”?
Zrozum stan Terraform, skonfiguruj bezpieczne zdalne backendy, obsługuj blokowanie stanu i unikaj jego uszkodzenia we współpracujących potokach IaC. Ć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 4 z 4.
Ile czasu zajmuje lekcja „Zarządzanie stanem Terraform i zdalnymi backendami”?
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
- IaC z Terraform i GitHub Actions
- Zarządzanie zasobami chmurowymi
- Automatyzacja aktualizacji infrastruktury
- Zarządzanie stanem Terraform i zdalnymi backendami