0Pricing
Terraform Infrastructure as Code · Lekcja

Odpytywanie danych za pomocą źródeł danych

Wykorzystaj źródła danych do pobierania informacji o istniejącej infrastrukturze lub usługach zewnętrznych, tworząc bardziej dynamiczne i elastyczne konfiguracje.

Odpytywanie danych za pomocą źródeł danych 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ą źródła danych?

W Terraform często potrzebujemy odwoływać się do istniejącej infrastruktury lub danych zewnętrznych, którymi nie zarządza bieżąca konfiguracja.

Właśnie do tego służą źródła danych! Umożliwiają konfiguracji Terraform pobieranie informacji o zasobach, które zostały już utworzone, lub o usługach zewnętrznych.

Źródła danych a zasoby

Ważne jest rozróżnienie źródeł danych od zasobów.

  • Zasoby definiują infrastrukturę, którą Terraform utworzy, zaktualizuje lub usunie.
  • Źródła danych jedynie pobierają informacje o istniejącej infrastrukturze lub danych. Nie tworzą ani nie modyfikują żadnych elementów.

Można traktować je jako zapytania tylko do odczytu dotyczące infrastruktury.

Praktyczne zastosowania

Źródła danych są niezwykle przydatne do:

  • Znajdowania identyfikatora istniejącej Virtual Private Cloud (VPC).
  • Pobierania najnowszego Amazon Machine Image (AMI) dla instancji EC2.
  • Pobierania danych uwierzytelniających z usługi zarządzania sekretami.
  • Wyszukiwania rekordów DNS lub konfiguracji sieci.

Dzięki nim konfiguracje są bardziej dynamiczne i mniej zależne od wartości wpisanych na stałe.

Definiowanie źródła danych

Blok źródła danych wygląda podobnie do bloku zasobu. Rozpoczyna się od słowa kluczowego data, po którym następują dostawca i typ, a następnie nazwa lokalna.

data "aws_vpc" "selected" {
  filter {
    name   = "tag:Name"
    values = ["my-existing-vpc"]
  }
}

Korzystanie z pobranych danych

Gdy źródło danych pobierze informacje, jego atrybuty stają się dostępne dla innych części konfiguracji. Możesz odwoływać się do nich za pomocą składni: data.<TYPE>.<NAME>.<ATTRIBUTE>.

Na przykład aby uzyskać identyfikator wybranej VPC:

output "vpc_id" {
  value = data.aws_vpc.selected.id
}

Pobieranie najnowszego AMI

Typowym zadaniem jest znalezienie najnowszego Amazon Machine Image (AMI) dla instancji EC2. Pozwala to uniknąć wpisywania identyfikatorów AMI na stałe i sprawia, że konfiguracja jest bardziej niezawodna.

Oto sposób pobrania najnowszego obrazu Amazon Linux 2:

provider "aws" {
  region = "us-east-1"
}

data "aws_ami" "amazon_linux_2" {
  most_recent = true
  owners      = ["amazon"]

  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-gp2"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

output "latest_ami_id" {
  value = data.aws_ami.amazon_linux_2.id
}

Dynamiczny dokument zasad S3

Źródła danych nie służą wyłącznie do obsługi zasobów chmurowych. Źródło danych aws_iam_policy_document pomaga w uporządkowany sposób konstruować złożone zasady IAM.

Nie tworzy ono zasady, lecz generuje dokument JSON, który można następnie zastosować do zasobu, takiego jak zasobnik S3.

provider "aws" {
  region = "us-east-1"
}

data "aws_iam_policy_document" "s3_read_only_policy" {
  statement {
    principals {
      type        = "AWS"
      identifiers = ["arn:aws:iam::123456789012:user/example-user"]
    }
    actions = [
      "s3:GetObject",
      "s3:ListBucket"
    ]
    resources = [
      "arn:aws:s3:::my-example-bucket",
      "arn:aws:s3:::my-example-bucket/*"
    ]
  }
}

output "policy_json" {
  value = data.aws_iam_policy_document.s3_read_only_policy.json
}

Uściślanie wyszukiwania

Wiele źródeł danych obsługuje bloki filter. Umożliwiają one określenie kryteriów zawężających wyniki i zapewniają pobranie właściwego zasobu lub danych.

Filtry zazwyczaj przyjmują wartość name (atrybut, według którego odbywa się filtrowanie) oraz values (listę dopuszczalnych wartości tego atrybutu).

data "aws_instance" "web" {
  instance_state_names = ["running"]
  filter {
    name   = "tag:Environment"
    values = ["production"]
  }
  filter {
    name   = "instance-type"
    values = ["t2.micro", "t3.micro"]
  }
}

Najlepsze praktyki dotyczące źródeł danych

Aby zachować przejrzystość i wydajność konfiguracji:

  • Określaj szczegółowe kryteria: Używaj filtrów, aby pobierać dokładnie potrzebne dane i unikać niejednoznaczności.
  • Idempotencja: Źródła danych są z natury idempotentne, co oznacza, że wielokrotne ich uruchomienie daje ten sam wynik.
  • Ograniczaj liczbę wywołań: Pobieraj dane tylko wtedy, gdy jest to konieczne, aby przyspieszyć działanie terraform plan.
  • Łącz z wartościami wyjściowymi: Używaj outputs do udostępniania pobranych danych, których mogą potrzebować inne konfiguracje lub użytkownicy.

Quiz o źródłach danych

Które z poniższych stwierdzeń dotyczących źródeł danych Terraform są PRAWDZIWE?

Podsumowanie: odpytywanie danych

Dowiedziałeś się, jak źródła danych Terraform umożliwiają konfiguracjom odpytywanie i pobieranie informacji o istniejącej infrastrukturze lub usługach zewnętrznych.

Ta zaawansowana funkcja pozwala tworzyć dynamiczne, elastyczne i niezawodne konfiguracje, unikając wartości wpisanych na stałe i dostosowując się do bieżącego stanu środowiska. Pamiętaj: źródła danych tylko odczytują dane — nigdy ich nie tworzą ani nie modyfikują!

Często zadawane pytania

Czy lekcja „Odpytywanie danych za pomocą źródeł danych” jest bezpłatna?

Tak — pełny tekst „Odpytywanie danych za pomocą źródeł danych” 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 „Odpytywanie danych za pomocą źródeł danych”?

Wykorzystaj źródła danych do pobierania informacji o istniejącej infrastrukturze lub usługach zewnętrznych, tworząc bardziej dynamiczne i elastyczne konfiguracje. Ć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 „Odpytywanie danych za pomocą źródeł danych”?

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. Odpytywanie danych za pomocą źródeł danych
  2. Provisionery local-exec i remote-exec
  3. Zasoby null i wyzwalacze
  4. Korzystanie z danych zewnętrznych i szablonów
← Powrót do Terraform Infrastructure as Code