Size: a a a

2020 June 16

k

kvaps in terraform_ru
хотя, полагаю, и jsonnet по началу выглядит таким же
источник

AR

Alexey Remizov in terraform_ru
kvaps
так он работает же, версия из master, а вопрос был конкретно про список :)
Это в той части, где конкретно в terraform списочный синтаксис не работает. Если написано, что нужно использовать блоки, значит нужно использовать их.
источник

AR

Alexey Remizov in terraform_ru
kvaps
any way, спасибо за разьяснения, после jsonnet хочется плеваться от HCL, слишком уж он странный)
Кстати, никогда не пробовал, но, похоже, можно упороться и генерировать манифесты терраформа из jsonnet:
https://www.terraform.io/docs/configuration/syntax-json.html
Но лучше всё-таки привыкнуть к hcl. Народ не поймёт.
источник

VT

Victor Tur in terraform_ru
Если ты один в компании и компания не очень большая,  да еще и проект тоже в единственном числе и небольшой - то можно что угодно делать. Pulumi, jsonnet, ansible/jinja, sdk(i.e. boto3) напрямую.
Все даже будет круто выглядеть и работать.
Только первый человек который за вами придет - тут же снесет это все и поставит что-то свое. Как в старые добрые времена.
Jsonnet хорошо зайдет если вся команда умеет и понимает.

Пока я видел только понимающих hcl/jinja.
источник

ac

anton chernyaev in terraform_ru
anton chernyaev
Добрый день) подскажите как разрулить

есть такая конструкция

resource "cloudflare_filter" "wordpress" {
 zone_id = "d41d8cd98f00b204e9800998ecf8427e"
 description = "Wordpress break-in attempts that are outside of the office"
 expression = "(http.request.uri.path ~ \".*wp-login.php\" or http.request.uri.path ~ \".*xmlrpc.php\") and ip.src ne 192.0.2.1"
}

resource "cloudflare_firewall_rule" "wordpress" {
 zone_id = "d41d8cd98f00b204e9800998ecf8427e"
 description = "Block wordpress break-in attempts"
 filter_id = cloudflare_filter.wordpress.id
 action = "block"
}

Но есть есть например "cloudflare_filter"  которые без "cloudflare_firewall_rule"

данные для них лупятся в двумерный массив
это в норме
[expression, description_firewall_rule, action, priority, paused(true/false)]

но для некоторых значений массива подмассив такой

[expression, "", "", "", ""]


Вопрос. Как в модуле влупить проверку что если допустим отсуствует action то часть в модуле относящуюся к "cloudflare_firewall_rule" не выполнять.
у меня просто уже count занят и устанавливается длинной основного массива.

resource "cloudflare_filter" "filter" {
 count = length(var.PARAMS)
 expression = var.PARAMS[count.index].[0]
 zone_id = var.ZONE_ID
}
источник

ac

anton chernyaev in terraform_ru
может у кого-то есть какие-то мысли? а то возвращаюсь к проблеме  уже наверное 4-5 ый раз и что-то никак не могу придумать как решить задачку.
источник

AR

Alexey Remizov in terraform_ru
anton chernyaev
у меня просто уже count занят и устанавливается длинной основного массива.

resource "cloudflare_filter" "filter" {
 count = length(var.PARAMS)
 expression = var.PARAMS[count.index].[0]
 zone_id = var.ZONE_ID
}
Не надо использовать count, используй for_each. Ключами сделай текущие имена ресурсов, значениями — текущие соответствующие элементы массива свойств. Для filter проходи по всей мапе, для rule через {for ... } выбери только те элементы, у которых нужные значения не пустые.
источник

ac

anton chernyaev in terraform_ru
Оо респект покурю такой вариант
источник

A.

Alex .~• in terraform_ru
народ, ломаю голову и не могу прикинуть как решить проблему
делаю два ресурса:
resource "aws_autoscaling_attachment" "traefik_asg_attachment_ext" {
 alb_target_group_arn   = aws_alb_target_group.traefik_target_group_ext.arn
 autoscaling_group_name = aws_autoscaling_group.nodePool["kubsystem"].id
}

resource "aws_autoscaling_attachment" "traefik_asg_attachment_int" {
 alb_target_group_arn   = aws_alb_target_group.traefik_target_group_int.arn
 autoscaling_group_name = aws_autoscaling_group.nodePool["kubsystem"].id
}

при деплое получил ошибку:
Error: Invalid index

 on modules/aws/alb.tf line 181, in resource "aws_autoscaling_attachment" "traefik_asg_attachment_ext":
181:   autoscaling_group_name = aws_autoscaling_group.nodePool["kubsystem"].id
   |----------------
   | aws_autoscaling_group.nodePool is object with 3 attributes

The given key does not identify an element in this collection value.


Error: Invalid index

 on modules/aws/alb.tf line 186, in resource "aws_autoscaling_attachment" "traefik_asg_attachment_int":
186:   autoscaling_group_name = aws_autoscaling_group.nodePool["kubsystem"].id
   |----------------
   | aws_autoscaling_group.nodePool is object with 3 attributes

The given key does not identify an element in this collection value.

памагиитииии
источник

A.

Alex .~• in terraform_ru
куда смотреть кого бить?
источник

VT

Victor Tur in terraform_ru
опять ты со своими индексами и count.
тебе по русски пишут - aws_autoscaling_group.nodePool is object with 3 attributes
aws_autoscaling_group.nodePool - это один ресурс. Какой еще kubsystem? К артибутам обращаются через точку .
источник

A.

Alex .~• in terraform_ru
Victor Tur
опять ты со своими индексами и count.
тебе по русски пишут - aws_autoscaling_group.nodePool is object with 3 attributes
aws_autoscaling_group.nodePool - это один ресурс. Какой еще kubsystem? К артибутам обращаются через точку .
kubesystem это нодпул
источник

A.

Alex .~• in terraform_ru
не могу понять какой индекс где(((
источник

VT

Victor Tur in terraform_ru
aws_autoscaling_group.nodePool["kubsystem"].id
Что пытался тут сделать? Какая логика здесь заложена?
Если for_each - то что если kubesystem еще не создан? Зачем такой хардкод?
источник

A.

Alex .~• in terraform_ru
Victor Tur
aws_autoscaling_group.nodePool["kubsystem"].id
Что пытался тут сделать? Какая логика здесь заложена?
Если for_each - то что если kubesystem еще не создан? Зачем такой хардкод?
хм….тож верно
источник

OB

Oleksii Borodai in terraform_ru
Alex .~•
хм….тож верно
Вот это aws_autoscaling_group.nodePool is object with 3 attributes - “тож верно”.  Если ты хочешь чтобы тебе помогли - обьясни проблему нормально, а не “тож верно”.
источник

VT

Victor Tur in terraform_ru
Oleksii Borodai
Вот это aws_autoscaling_group.nodePool is object with 3 attributes - “тож верно”.  Если ты хочешь чтобы тебе помогли - обьясни проблему нормально, а не “тож верно”.
👍!
источник

A.

Alex .~• in terraform_ru
приаттачить трагеты к автоскейл группе … исходя из кода
источник

A.

Alex .~• in terraform_ru
я так понимаю ему kubesystem не нравится
источник

A.

Alex .~• in terraform_ru
писал не я просто хочу разобраться где концы искать
источник