Запрос данных с помощью источников данных
Используйте источники данных для получения информации о существующей инфраструктуре или внешних сервисах, создавая более динамичные и адаптивные конфигурации.
«Запрос данных с помощью источников данных» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Что такое источники данных?
В Terraform часто требуется обращаться к существующей инфраструктуре или внешним данным, которыми не управляет текущая конфигурация.
Именно для этого предназначены источники данных! Они позволяют конфигурации Terraform получать сведения о уже подготовленных ресурсах или внешних службах.
Источники данных и ресурсы
Важно различать источники данных и ресурсы.
- Ресурсы определяют инфраструктуру, которую Terraform будет создавать, обновлять или удалять.
- Источники данных только получают сведения о существующей инфраструктуре или данных. Они ничего не создают и не изменяют.
Представляйте их как запросы к инфраструктуре, доступные только для чтения.
Практические сценарии использования
Источники данных особенно полезны для следующих задач:
- Поиск ID существующей виртуальной частной сети (VPC).
- Получение последнего образа Amazon Machine Image (AMI) для экземпляра EC2.
- Получение секретов из службы управления секретами.
- Поиск записей DNS или сетевых конфигураций.
Они делают конфигурации более динамичными и уменьшают количество жёстко заданных значений.
Определение источника данных
Блок источника данных похож на блок ресурса. Он начинается с ключевого слова data, за которым следуют провайдер и тип, а затем локальное имя.
data "aws_vpc" "selected" {
filter {
name = "tag:Name"
values = ["my-existing-vpc"]
}
}Использование полученных данных
После получения сведений источником данных его атрибуты становятся доступными другим частям конфигурации. Обращаться к ним можно с помощью синтаксиса: data.<TYPE>.<NAME>.<ATTRIBUTE>.
Например, чтобы получить ID выбранной VPC:
output "vpc_id" {
value = data.aws_vpc.selected.id
}Получение последнего AMI
Одна из распространённых задач — поиск последнего образа Amazon Machine Image (AMI) для экземпляра EC2. Это позволяет не задавать ID AMI жёстко и делает конфигурацию более надёжной.
Вот как получить последний AMI 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
}Динамический документ политики S3
Источники данных предназначены не только для облачных ресурсов. Источник данных aws_iam_policy_document помогает структурированно создавать сложные политики IAM.
Он не создаёт политику, а формирует документ JSON, который затем можно применить к такому ресурсу, как корзина 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
}Уточнение поиска
Многие источники данных поддерживают блоки фильтров. Они позволяют задать критерии для сужения результатов и гарантировать получение нужного ресурса или данных.
Фильтры обычно принимают name (атрибут, по которому выполняется фильтрация) и values (список допустимых значений этого атрибута).
data "aws_instance" "web" {
instance_state_names = ["running"]
filter {
name = "tag:Environment"
values = ["production"]
}
filter {
name = "instance-type"
values = ["t2.micro", "t3.micro"]
}
}Рекомендации по работе с источниками данных
Чтобы конфигурации оставались понятными и эффективными:
- Будьте точны: используйте фильтры, чтобы получать именно нужные данные и избегать неоднозначности.
- Идемпотентность: источники данных по своей природе идемпотентны, то есть многократный запуск даёт один и тот же результат.
- Сокращайте количество обращений: получайте данные только при необходимости, чтобы ускорить операции
terraform plan. - Сочетайте с выходными значениями: используйте выходные значения, чтобы предоставлять полученные данные другим конфигурациям или пользователям.
Тест по источникам данных
Какие из следующих утверждений об источниках данных Terraform являются TRUE?
Итоги: получение данных
Вы узнали, как источники данных Terraform позволяют конфигурациям запрашивать и получать сведения о существующей инфраструктуре или внешних службах.
Эта мощная возможность помогает создавать динамичные, гибкие и надёжные конфигурации: вместо жёстко заданных значений они адаптируются к текущему состоянию среды. Помните: источники данных только читают данные и никогда не создают и не изменяют их!
Часто задаваемые вопросы
Урок «Запрос данных с помощью источников данных» бесплатный?
Да — полный текст урока «Запрос данных с помощью источников данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Чему я научусь в уроке «Запрос данных с помощью источников данных»?
Используйте источники данных для получения информации о существующей инфраструктуре или внешних сервисах, создавая более динамичные и адаптивные конфигурации. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?
Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Запрос данных с помощью источников данных»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?
Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Запрос данных с помощью источников данных
- Провижионеры local и remote exec
- Ресурсы Null и триггеры
- Использование внешних данных и шаблонов