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
- Odpytywanie danych za pomocą źródeł danych
- Provisionery local-exec i remote-exec
- Zasoby null i wyzwalacze
- Korzystanie z danych zewnętrznych i szablonów