Size: a a a

2020 May 14

AB

Anton Babenko in terraform_ru
Thanks! Фидбек, как всегда, приветствуется!
источник

B

Bandikoot in terraform_ru
господа, добрый вечер

есть ли в 0.12 способ сделать описание в resource по условию наличия переменной?

кейс такой:
- есть модуль с ресурсом
- в описании ресурса есть обязательный блок network_interface с ключами:
subnet_id (string)
ip_address (string)
nat (bool)
nat_ip_address (string)


обязательный ключ из них только subnet_id
- я хотел бы иметь возможность указывать остальные 3 ключа опционально. т.е. если в map-переменной кого-то из них нет, то этот ключ не передавать вовсе
- дефолтные значения задать не выйдет из-за логики работы ресурса

пробовал в таком виде, но не взлетело
модуль blah.tf:
resource "blah-type" "blah-name" {
...
 dynamic network_interface {
   for_each = var.network_config
   content {
     each.key = each.value
   }
 }
...
}

вызов модуля:
module "blah" {
 network_config = {
   subnet_id = "<some_id>"
   ip_address = 127.0.0.1
 }
}

как это описать, чтобы оно ещё и работало?)
источник

DZ

Dmytro Zavalkin in terraform_ru
count нужен видимо
источник

B

Bandikoot in terraform_ru
Dmytro Zavalkin
count нужен видимо
увы, никак не поможет. проблема же в неизвестном для модуля (хоть и ограниченном) наборе ключей, а не в том, чтобы блок из известных ключей размножить

я даже не уверен, что терраформ так вообще умеет
источник

AR

Alexey Remizov in terraform_ru
Bandikoot
увы, никак не поможет. проблема же в неизвестном для модуля (хоть и ограниченном) наборе ключей, а не в том, чтобы блок из известных ключей размножить

я даже не уверен, что терраформ так вообще умеет
resource "blah-type" "blah-name" {
 attr = null
}

Вот это всё равно, что пропустить установку attr. Пример слишком синтетический для точного ответа.
источник

B

Bandikoot in terraform_ru
Alexey Remizov
resource "blah-type" "blah-name" {
 attr = null
}

Вот это всё равно, что пропустить установку attr. Пример слишком синтетический для точного ответа.
если с конкретикой, то ресурс это yandex compute instance

ключи проблемного блока network_interface там же на странице чуть ниже описаны (Ctrl+F, The network_interface block supports)
источник

B

Bandikoot in terraform_ru
subnet_id я задать обязан

а вот nat_ip_address:
- обязательно нужно задать из переменной, если он статический под dns
- обязательно не задавать вовсе, если на инстансе не должно быть внешнего адреса
источник

AR

Alexey Remizov in terraform_ru
Bandikoot
subnet_id я задать обязан

а вот nat_ip_address:
- обязательно нужно задать из переменной, если он статический под dns
- обязательно не задавать вовсе, если на инстансе не должно быть внешнего адреса
Вот так должно сработать:
locals {
 interfaces = [
   {
     subnet_id = ""
     nat_ip_address = "1.1.1.1"
   },
   {
     subnet_id = ""
   },
 ]
}

resource "yandex_compute_instance" "default" {
 dynamic "network_interface" {
   for_each = local.interfaces
   content {
     subnet_id      = lookup(network_interface, "subnet_id")
     nat_ip_address = lookup(network_interface, "nat_ip_address", null)
   }
 }
}
источник

B

Bandikoot in terraform_ru
Alexey Remizov
resource "blah-type" "blah-name" {
 attr = null
}

Вот это всё равно, что пропустить установку attr. Пример слишком синтетический для точного ответа.
Алексей, спасибо огромное!

мне оказалось достаточно объяснения про attr = null. dynamic block и for_each только усложняли общую схему. выкинул их, разобрался с type constraints для объектов, и в итоге описал всё ровно так, как задумывал
источник
2020 May 15

М

Максим Родькин (1566... in terraform_ru
ищу уверенного админа k8s. нужна консультация
источник

AA

Artyom Abramovich in terraform_ru
а tf при чем?
источник

i

inqfen in terraform_ru
Видимо tf добавляет уверенности и повышает самооценку
источник

ac

anton chernyaev in terraform_ru
Хм, народ, есть вопрос, делал импорт из cloudflale и получил 706000 строк кода в терраформ), вопрос чем и как из него парсить (чтоб sed aws и прочеми изыратными методами, а как json оном) может есть какая утилита?
источник

ac

anton chernyaev in terraform_ru
Собственно конечная цель сделать пл модулям и по красоте но прежде надо будет распарсить...
источник

ac

anton chernyaev in terraform_ru
Грубо говоря выдернуть какую группу значений из опредленного ресурса с опреленным именем
источник

B

Bandikoot in terraform_ru
anton chernyaev
Хм, народ, есть вопрос, делал импорт из cloudflale и получил 706000 строк кода в терраформ), вопрос чем и как из него парсить (чтоб sed aws и прочеми изыратными методами, а как json оном) может есть какая утилита?
источник

ac

anton chernyaev in terraform_ru
еще вопрос на засыпку... импорт налупил дубликатов
источник

ac

anton chernyaev in terraform_ru
как поудалять дубликаты?
источник

ac

anton chernyaev in terraform_ru
может есть у кого мысли...
источник

VT

Victor Tur in terraform_ru
Чем делал импорт?
источник