Size: a a a

2021 July 09

SK

Sergey Kletsov in terraform_ru
сравню с Яндекс есть ли там это
источник

ВИ

Владимир Ильяков... in terraform_ru
Delivery delay
источник

SK

Sergey Kletsov in terraform_ru
у яндекс видимо работает это как то по иному так как все 36 сообщений ждут таймаут и потом все 36 доступны
источник

SK

Sergey Kletsov in terraform_ru
выстроить не выходит только если на уровне продюсера класть их не разом а через инетрвал
источник

SK

Sergey Kletsov in terraform_ru
но тогда упираемся в таймаут работы функции
источник

Y

Yks in terraform_ru
Приветствую!
Terraform v1.0.2
+ provider registry.terraform.io/vmware/vcd v3.3.1
VCD - 10.0.0
Пытаюсь создать в vcd вмку с vapp и получаю ошибку
Error: error retrieving Org and VDC: error retrieving Org org_105168: [ENF] entity not found
Тем не менее название Org 100 раз проверил и оно совпадает. Как и vdc.
Что я делаю не так?
источник

ES

Evgeny Shurygin (nsk... in terraform_ru
добрый день. задача из мапы объектов достать значения списка "name".

variable "queues" {
 type = map(object({
   name = list(string),
   vhost = string
 }))
 default = {}
}

resource "rabbitmq_queue" "queues" {
 for_each = var.queues
 name  = element(each.value["name"], 0)
 vhost = each.value["vhost"]
 settings {
   durable     = true
   auto_delete = false
 }
}

на вход передаются данные:

queues = {
 example1 = {
   vhost = "/",
   name = [
     "one",
     "two"
   ],
 example2 = {
vhost = "second_vhost",
name = [
  "three",
  "four"
]
}
 }
}

сейчас могу забрать, к примеру, нулевой элемент списка:

 for_each = var.queues
 name  = element(each.value["name"], 0)

не знаю, как вставить сюда цикл и перебрать весь список "name" внутри объекта. подскажите, пожалуйста, какую конструкцию применить?
источник

MY

Mihail Yakubiv in terraform_ru
>   name  = element(each.value["name"], 0)

name принимает string?
какая стоит задача?
нужно для каждого элемента queues  создать несколько  ресурсов rabbitmq_queue (для каждого из queues.name) ?

тоесть ресурсов rabbitmq_queue в итоге будет len(queues)*len(queues.name) ?
источник

ES

Evgeny Shurygin (nsk... in terraform_ru
name = list (string). задача состоит в том, чтобы с помощью одного универсального ресурса queues создавать очереди в разных виртуальных хостах в рэббите
источник

ES

Evgeny Shurygin (nsk... in terraform_ru
name принимает string, да. а у меня лист на входе. про количество ресурсов тоже верно
источник

MY

Mihail Yakubiv in terraform_ru
какая версия терраформа?
источник

ES

Evgeny Shurygin (nsk... in terraform_ru
последняя
источник

AR

Alexey Remizov in terraform_ru
  queue_names = setunion([for k, v in local.queues : v["name"]]...)
источник

AR

Alexey Remizov in terraform_ru
Если я всё правильно понял.
источник

MY

Mihail Yakubiv in terraform_ru
в первую очередь я бы переименовал name = list(string) в names = list(string),

как решение я бы выделил resource "rabbitmq_queue в отдельный модуль, и сделал бы два цикла. один по модулю (for_each, бежим по мапе), второй по ресурсу (count, бежим по списку)


module "rabbitmq_queue_module" {
for_each = var.queues
queue = item
...


в самом же модуле rabbitmq_queue_module
resource "rabbitmq_queue" "queues" {
 count = len(queue.names)
 name  = queue.names[count.index]
 vhost = queue.vhost
 settings {
   durable     = true
   auto_delete = false
 }
}



upd. модуль rabbitmq_queue_module лучше назвать типа rabbitmq_queues_for_vhost или типа того
источник

MY

Mihail Yakubiv in terraform_ru
альтернативный вариант превратить queues во что-то типа

queues = {
 example1_one = {
   vhost = "/",
   name = "one" }
 example1_two = {
   vhost = "/",
   name = "two" }
 example2_three = {
vhost = "second_vhost",
name =  "three" }
 example2_four = {
vhost = "second_vhost",
name =  "four" }
}

но я бы взял первый вариант, он прозрачнее (имхо)
источник

AR

Alexey Remizov in terraform_ru
Лучше так. Для терраформа старше 0.11 не надо использовать count, если задача не требует буквально последовательного перебора целых чисел.
источник

MY

Mihail Yakubiv in terraform_ru
а как циклом бежать по списку [] ?
for_each вроде только мапы умеет, а count остался для списков
или не так?
источник

MY

Mihail Yakubiv in terraform_ru
хотя да
если выкинуть с середины списка значение то при count могут быть проблемы со сдвигом ресурсов
источник

AR

Alexey Remizov in terraform_ru
for_each умеет множества. Когда порядок не важен. А count остался для задач, где порядок важен.
источник