Источники данных в террафоре используются для получения информации о ресурсах, внешних на террафору и использовать их для настройки ваших террафовых ресурсов. Например, список IP-адресов облачного провайдера обнаруживает.
Мы можем найти отличные примеры использования источника данных в AWS Provider Docs :
variable "vpc_id" {} data "aws_vpc" "selected" { id = var.vpc_id } resource "aws_subnet" "example" { vpc_id = data.aws_vpc.selected.id availability_zone = "us-west-2a" cidr_block = cidrsubnet(data.aws_vpc.selected.cidr_block, 4, 1) }
В этом сценарии мы, возможно, создали нашу aws_vpc вручную, потому что он также содержит другие ресурсы вручную, и теперь мы хотим начать добавлять его для удаленных ресурсов Terraform.
Для этого мы используем источник данных AWS_VPC, чтобы найти вручную создавать AWS_VPC, а затем использовать его свойства для настройки нашего AWS_SUBNET.
Еще одно причудливый случай использования будет использовать GitHub Provider Pull Запросы источника данных Чтобы перечислить все запросы на тягу, а затем предоставить среду предварительного просмотра по требованию для каждого запроса на тягу. Это пойдет по линии:
data "github_repository_pull_requests" "pull_requests" { base_repository = "example-repository" base_ref = "main" state = "open" } module "preview-environment" { for_each = data.github_repository_pull_requests.pull_requests.results name = each.value.title commit_sha = each.value.head_sha // ... }
По умолчанию Terraform будет освещать все источники данных перед созданием плана. Вы также можете явно освежить все источники данных, запущенные Обновить террафору
Отказ
Изредка у вас будет источники данных, которые изменяются очень часто и хотели бы сохранить ваши ресурсы синхронизированными с этими изменениями. Самый простой способ добиться этого состоит в том, чтобы просто запустить террафом каждые несколько минут или около того, сделайте обновление и примените все полученные изменения.
Вы также можете использовать что-то похожее на Обнаружение дрейфа Spacelift Чтобы автоматизировать этот процесс и убедиться, что он не мешает вашему ручному казням террафора.
Установите больше пособий по террафом:
- Импортировка существующей инфраструктуры в террафору
- Как использовать переменные Terraform
- Как использовать модули террафора
Оригинал: «https://dev.to/spacelift/terraform-data-sources-how-they-are-utilised-26a4»