Sobes.tech
Назад к вопросам
Senior
3

В чём разница между count и for_each в Terraform?

Компании, где спрашивали
Madiff

Ответ от нейросети

sobes.tech AI

В Terraform count и for_each используются для создания нескольких ресурсов, но имеют разные сценарии применения и возможности:

  • count — создает заданное количество одинаковых ресурсов, индексируемых числом от 0. Подходит, когда нужно создать несколько однотипных ресурсов без уникальных ключей.

  • for_each — создает ресурсы для каждого элемента из коллекции (множество, список, карта), где каждый ресурс идентифицируется уникальным ключом из коллекции. Позволяет работать с именованными или сложными наборами данных.

Пример с count:

resource "aws_instance" "example" {
  count = 3
  ami           = "ami-123456"
  instance_type = "t2.micro"
}

Создаст 3 одинаковых инстанса с индексами 0,1,2.

Пример с for_each:

resource "aws_instance" "example" {
  for_each = {
    web1 = "ami-123456"
    web2 = "ami-654321"
  }
  ami           = each.value
  instance_type = "t2.micro"
}

Создаст два инстанса с ключами web1 и web2, что удобнее для управления и ссылок.

Итого:

  • Используйте count, когда ресурсы одинаковые и не нужно уникальных ключей.
  • Используйте for_each, когда нужно создавать ресурсы из именованных или сложных коллекций и обращаться к ним по ключу.