Size: a a a

2020 February 13

AR

Alexey Remizov in terraform_ru
Так абстрактно слишком. Это какие ресурсы и как ты их итерируешь?
источник

DS

Dmitry SH in terraform_ru
Daniel Stranger Chaplin
оберни var.switch-count и var.compute-count в range()
Спасибо, получилось реализовать задуманное такой конструкцией


name             = element(flatten([for i in range(var.switch_count): [for j in range(var.compute_count):"net-${i+1}-${j+1}"]]), count.index)
источник

DC

Daniel Stranger Chaplin in terraform_ru
Dmitry SH
Спасибо, получилось реализовать задуманное такой конструкцией


name             = element(flatten([for i in range(var.switch_count): [for j in range(var.compute_count):"net-${i+1}-${j+1}"]]), count.index)
Не за что) теперь стоит внимательно это порефакторить в мапы, как уже говорили выше
источник

BD

Banschikov Denis in terraform_ru
Alexey Remizov
Так абстрактно слишком. Это какие ресурсы и как ты их итерируешь?
count = length(var.instance_group)

Если правильно понял вопрос.
источник

BD

Banschikov Denis in terraform_ru
variable "instance_group" { type = list(map(string)) }
источник

AR

Alexey Remizov in terraform_ru
Banschikov Denis
count = length(var.instance_group)

Если правильно понял вопрос.
В общем, если это один в один атрибуты ресурса, то просто передай null в те атрибуты, которых не должно быть.
источник

BD

Banschikov Denis in terraform_ru
Alexey Remizov
В общем, если это один в один атрибуты ресурса, то просто передай null в те атрибуты, которых не должно быть.
Пробовал, если правильно понял про новую фичу в 12 версии. Он подставляет параметры по умолчанию провайдера. А мне бы хотелось их пропустить, если их нет в блоке инстанс группы
источник

AR

Alexey Remizov in terraform_ru
Banschikov Denis
Пробовал, если правильно понял про новую фичу в 12 версии. Он подставляет параметры по умолчанию провайдера. А мне бы хотелось их пропустить, если их нет в блоке инстанс группы
Ресурс-то какой?
источник

BD

Banschikov Denis in terraform_ru
Alexey Remizov
Ресурс-то какой?
источник

DS

Dmitry SH in terraform_ru
Daniel Stranger Chaplin
Не за что) теперь стоит внимательно это порефакторить в мапы, как уже говорили выше
если в будущем планируется 1000 инстансов, это получается в переменную map заносить 1000 имен вручную или я не правильно понимаю?
источник

DC

Daniel Stranger Chaplin in terraform_ru
Dmitry SH
если в будущем планируется 1000 инстансов, это получается в переменную map заносить 1000 имен вручную или я не правильно понимаю?
не совсем, мап тоже можно сгенерировать
источник

AR

Alexey Remizov in terraform_ru
Ага. Самое простое — в исходных данных задавать свойства health_check как список мап, и потом добавлять в node_group как dynamic block.
источник

DC

Daniel Stranger Chaplin in terraform_ru
Dmitry SH
если в будущем планируется 1000 инстансов, это получается в переменную map заносить 1000 имен вручную или я не правильно понимаю?
используя блок local {} можно сохранить этот map локально и использовать как local.name_map, а сам ресурс, который хочет name  итерировать уже по нему, тогда каждый ресурс будет иметь путь вида resource_name.resource_id[name], а не resource_name.resource_id[count], что даст возможность, обозначенную выше
источник

DS

Dmitry SH in terraform_ru
Daniel Stranger Chaplin
используя блок local {} можно сохранить этот map локально и использовать как local.name_map, а сам ресурс, который хочет name  итерировать уже по нему, тогда каждый ресурс будет иметь путь вида resource_name.resource_id[name], а не resource_name.resource_id[count], что даст возможность, обозначенную выше
Спасибо, буду разбираться и пробовать применять на практике👍
источник

AR

Alexey Remizov in terraform_ru
То есть в любом случае задача решается только через dynamic block. Нужно только выбрать способ сформировать подходящие входные данные для for_each. Самое простое - сразу передать пригодную структуру.
источник

BD

Banschikov Denis in terraform_ru
Alexey Remizov
Ага. Самое простое — в исходных данных задавать свойства health_check как список мап, и потом добавлять в node_group как dynamic block.
спасибо. понял.
источник

BD

Banschikov Denis in terraform_ru
а можно где-нибудь примеры посмотреть?
источник

AR

Alexey Remizov in terraform_ru
Banschikov Denis
спасибо. понял.
Вот пример. Я бы сразу посоветовал входные данные передавать мапой а не списком. Тут для группы "a" создастся health_check, а для "b" — нет.
locals {
 instance_groups = {
   a = {
     health_check = [
       {
         interval = 1
       }
     ]
   }
   b = {
     health_check = []
   }
 }
}

resource "yandex_compute_instance_group" "group" {
 for_each = local.instance_groups
 
 name = each.key
 
 dynamic "health_check" {
   for_each = each.value["health_check"]
   
   content {
     interval = health_check.value["interval"]
   }
 }
}
источник

BD

Banschikov Denis in terraform_ru
Alexey Remizov
Вот пример. Я бы сразу посоветовал входные данные передавать мапой а не списком. Тут для группы "a" создастся health_check, а для "b" — нет.
locals {
 instance_groups = {
   a = {
     health_check = [
       {
         interval = 1
       }
     ]
   }
   b = {
     health_check = []
   }
 }
}

resource "yandex_compute_instance_group" "group" {
 for_each = local.instance_groups
 
 name = each.key
 
 dynamic "health_check" {
   for_each = each.value["health_check"]
   
   content {
     interval = health_check.value["interval"]
   }
 }
}
Вау. спасибо большое.
источник

I

Ivgenich in terraform_ru
Добрый вечер, коллеги. Кто-нибудь сталкивался с проблемой: terraform aws rds при создании инстанса readonly replica ждет от нее статуса 'available, storage-optimization', а она просто переходит по готовности в статус available, терраформ продолжает ждать и в итоге отваливается по таймауту. Есть идеи как заставить его ждать просто available? Увеличивал таймаут, инстанс успевает создаться, но терраформ все равно в итоге отвалится с ошибкой по таймауту сессии авторизации (1 час).
источник