Что такое Data Source в контексте IaC и DevOps?

«Что такое Data Source в контексте IaC и DevOps?» — вопрос из категории Базы данных, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В инфраструктуре как код (IaC), Data Source — это механизм для запроса и чтения информации из внешних систем или существующей инфраструктуры без её изменения. Это позволяет динамически получать данные (например, ID последнего AMI, параметры VPC, IP-адреса) для использования в декларативной конфигурации.

Пример в Terraform (получение ID последнего AMI Ubuntu для AWS):

data "aws_ami" "latest_ubuntu" {
  most_recent = true
  owners      = ["099720109477"] # Canonical

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
  }
}

resource "aws_instance" "web" {
  ami           = data.aws_ami.latest_ubuntu.id # Использование данных из источника
  instance_type = "t2.micro"
  tags = {
    Name = "Web Server from Latest AMI"
  }
}

Ключевые моменты:

  • Только для чтения: Data Source не создает и не изменяет ресурсы, он только запрашивает информацию.
  • Динамичность: Позволяет избежать хардкода значений (например, конкретных ID образов), которые могут меняться со временем.
  • Зависимости: Ресурсы, использующие Data Source, будут ждать, пока источник не вернет данные, обеспечивая корректный порядок развертывания.