0Pricing
DevOps Bootcamp · Lekcja

Importowanie istniejących zasobów

Dowiedz się, jak importować istniejącą infrastrukturę chmurową do stanu Terraform, obejmując wcześniej utworzone zasoby zarządzaniem IaC.

Importowanie istniejących zasobów to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 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.

Wprowadzenie istniejącej infrastruktury do IaC

Czasami masz zasoby chmurowe utworzone ręcznie lub przez inne narzędzia. Funkcja import Terraform pozwala objąć te istniejące zasoby zarządzaniem przez Terraform.

Oznacza to, że Terraform będzie śledzić ich stan, a przyszłe zmiany będzie można stosować za pomocą plików konfiguracyjnych. To kluczowy krok w procesie wdrażania Infrastructure as Code (IaC) w środowisku typu „brownfield”.

Kiedy należy importować zasoby

Importowanie jest przydatne w kilku sytuacjach:

  • Migracja istniejącej infrastruktury: Wprowadzanie do procesu IaC zasobów utworzonych poza Terraform.
  • Stopniowe wdrażanie Terraform: Rozpoczęcie pracy z istniejącymi zasobami zamiast odtwarzania wszystkiego od podstaw.
  • Odzyskiwanie po utracie stanu: Ponowne powiązanie Terraform z zasobami w przypadku utraty pliku stanu (choć przy zdalnym stanie zdarza się to rzadko).

Opanowanie polecenia import

Podstawowa składnia polecenia terraform import jest prosta. Polecenie nakazuje Terraform odnaleźć istniejący zasób u dostawcy chmury i dodać go do pliku stanu, przypisując go do bloku zasobu w konfiguracji.

Wymaga dwóch głównych informacji: Terraform adresu zasobu oraz identyfikatora tego zasobu u dostawcy chmury.

Czym jest adres zasobu?

Adres zasobu to sposób, w jaki Terraform identyfikuje konkretny zasób w konfiguracji. Ma on postać resource_type.resource_name.

  • resource_type: Typ zasobu (np. aws_s3_bucket, azurerm_resource_group).
  • resource_name: Lokalna nazwa nadana zasobowi w konfiguracji Terraform (np. my_bucket, web_app).

Ten adres musi już istnieć w plikach .tf.

Znajdowanie identyfikatora w chmurze

Każdy zasób u dostawcy chmury, takiego jak AWS, Azure czy GCP, ma unikalny identyfikator, często nazywany ID. Będziesz potrzebować tego identyfikatora, aby wskazać Terraform, który konkretnie istniejący zasób ma zaimportować.

Identyfikator znajdziesz w konsoli dostawcy chmury, za pomocą jego interfejsu CLI lub przez jego API. Na przykład identyfikatorem zasobnika AWS S3 jest jego nazwa, natomiast instancja EC2 ma identyfikator instancji, taki jak i-0abcdef1234567890.

Zdefiniuj HCL przed importem

Kluczowy krok: Przed uruchomieniem terraform import musisz mieć odpowiedni blok zasobu zdefiniowany w plikach konfiguracyjnych Terraform (plikach .tf).

Ten blok informuje Terraform, jakiego typu zasobu należy oczekiwać i jakie powinien mieć atrybuty. Terraform używa tej definicji, aby podczas importu rozpoznać schemat zasobu.

HCL dla zasobnika S3

Załóżmy, że masz istniejący zasobnik AWS S3 o nazwie my-existing-coddykit-bucket-123. Najpierw zdefiniuj dla niego blok zasobu w pliku main.tf:

resource "aws_s3_bucket" "my_imported_bucket" {
  bucket = "my-existing-coddykit-bucket-123"
  # Add other expected attributes if known
  # e.g., acl = "private"
}

Importowanie zasobnika S3

Po zdefiniowaniu HCL możesz uruchomić polecenie terraform import. Zastąp my-existing-coddykit-bucket-123 rzeczywistą nazwą lub identyfikatorem istniejącego zasobnika.

Upewnij się, że w swoim katalogu zostało już uruchomione terraform init!

terraform import aws_s3_bucket.my_imported_bucket my-existing-coddykit-bucket-123

Sprawdzanie stanu Terraform

Po pomyślnym imporcie Terraform doda zasób do pliku stanu. Możesz to zweryfikować za pomocą terraform state show, które wyświetla atrybuty zaimportowanego zasobu widziane przez Terraform.

Następnie koniecznie uruchom terraform plan, aby upewnić się, że między HCL a rzeczywistym stanem zaimportowanego zasobu nie ma nieoczekiwanych różnic.

terraform state show aws_s3_bucket.my_imported_bucket

Szybkie sprawdzenie: kolejność importowania

Chcesz zaimportować istniejącą instancję AWS EC2 do Terraform. Który z poniższych kroków MUSI zostać wykonany przed uruchomieniem polecenia terraform import?

Podsumowanie: wprowadzanie infrastruktury do Terraform

Dowiedziałeś się, jak objąć istniejące zasoby chmurowe zarządzaniem przez Terraform za pomocą terraform import.

  • Najpierw zdefiniuj blok zasobu w HCL.
  • Następnie określ identyfikator zasobu u dostawcy chmury.
  • Na koniec uruchom terraform import ADDRESS ID.
  • Zawsze wykonuj potem terraform plan, aby uzgodnić ewentualne różnice.

To potężne polecenie pomaga połączyć ręcznie zarządzaną infrastrukturę z w pełni opartym na IaC środowiskiem.

Często zadawane pytania

Czy lekcja „Importowanie istniejących zasobów” jest bezpłatna?

Tak — pełny tekst „Importowanie istniejących zasobów” 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 „Importowanie istniejących zasobów”?

Dowiedz się, jak importować istniejącą infrastrukturę chmurową do stanu Terraform, obejmując wcześniej utworzone zasoby zarządzaniem 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 3 z 4.

Ile czasu zajmuje lekcja „Importowanie istniejących zasobów”?

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

  1. Zdalne backendy stanu
  2. Blokowanie stanu i spójność
  3. Importowanie istniejących zasobów
  4. Refaktoryzacja stanu za pomocą moved i removed
← Powrót do DevOps Bootcamp