Size: a a a

2020 January 22

b

bykva in terraform_ru
если у модулей несколько уровней вложенности, то можно еще качать на нижний уровень через terraform get в .terraform в папку где он вызывается
источник

T

Timur in terraform_ru
господа, а как в структуре входных данных описать опциональные аргументы? Точнее вот что мне надо - запихиваю DNS-зону из cloudflare в терраформ, и в каких-то записях (SRV) надо заполнять структуру data, а в каких-то - надо всего лишь указать value (т.е. текстовое значение).

проблема в том, что для resource "cloudflare_record" параметры data и value взаимоисключающие - можно задать либо то, либо это.

записи у меня создаются через for_each, я просто сразу определяю зону и в одном лупе делаю для неё все записи (это логично, в общем).

как мне правильнее и лучше всего определить структуру данных?
источник

T

Timur in terraform_ru
накостылять я могу легко - никто не мешает мне сделать 2 типа resource, например - один для srv, а другой для всех остальных типов, но это не очень красиво, кмк
источник

AK

Andrey Kartashov in terraform_ru
Timur
господа, а как в структуре входных данных описать опциональные аргументы? Точнее вот что мне надо - запихиваю DNS-зону из cloudflare в терраформ, и в каких-то записях (SRV) надо заполнять структуру data, а в каких-то - надо всего лишь указать value (т.е. текстовое значение).

проблема в том, что для resource "cloudflare_record" параметры data и value взаимоисключающие - можно задать либо то, либо это.

записи у меня создаются через for_each, я просто сразу определяю зону и в одном лупе делаю для неё все записи (это логично, в общем).

как мне правильнее и лучше всего определить структуру данных?
Попробуй динамические блоки
источник

AR

Alexey Remizov in terraform_ru
Как-то типа
value = lookup(args, "value", null)
data = lookup(args, "data", null)

?
источник

e

ep4sh in terraform_ru
всем привет, помогите пожалуйста советом.
Есть проект у него два энва - dev и prod, причем это два разных AWS аккаунта.
Соотвественно сети, security_gropus везде разные и выбираются на основе dev / prod.

Каким способом мне лучше менеджить terraform state (использую s3 as backend)?
Я вижу ясно, что это два разных S3 bucket, но как дальше? Создать две директории и в каждой будет свой код?
источник

A

Andor in terraform_ru
подскажите, есть ли простой и быстрый способ проверить, есть ли в сгенерированном плане изменения или там 0 to add, 0 to change, 0 to destroy?
источник

VT

Victor Tur in terraform_ru
Timur
господа, а как в структуре входных данных описать опциональные аргументы? Точнее вот что мне надо - запихиваю DNS-зону из cloudflare в терраформ, и в каких-то записях (SRV) надо заполнять структуру data, а в каких-то - надо всего лишь указать value (т.е. текстовое значение).

проблема в том, что для resource "cloudflare_record" параметры data и value взаимоисключающие - можно задать либо то, либо это.

записи у меня создаются через for_each, я просто сразу определяю зону и в одном лупе делаю для неё все записи (это логично, в общем).

как мне правильнее и лучше всего определить структуру данных?
Как Алексей выше написал - используй тип nul, чтобы проигнорировать какие-то параметры
источник

VT

Victor Tur in terraform_ru
ep4sh
всем привет, помогите пожалуйста советом.
Есть проект у него два энва - dev и prod, причем это два разных AWS аккаунта.
Соотвественно сети, security_gropus везде разные и выбираются на основе dev / prod.

Каким способом мне лучше менеджить terraform state (использую s3 as backend)?
Я вижу ясно, что это два разных S3 bucket, но как дальше? Создать две директории и в каждой будет свой код?
Разница между окружения и должна быть только в передаваемых переменных инфраструктурным модулям.
Стейт, общие переменные - помогает удобно организовать terragrunt. Но можно и свой простой враппер сделать на коленке за 5 минут
источник

A

Andor in terraform_ru
Andor
подскажите, есть ли простой и быстрый способ проверить, есть ли в сгенерированном плане изменения или там 0 to add, 0 to change, 0 to destroy?
юзкейс - если есть изменения, то сделать в мёрж-реквесте в гитлабе "тред", который без ручного вмешательства не замёржить автоматом
а если нет, то просто оставить комментарий, что всё ок и тогда замёржится само
источник

AR

Alexey Remizov in terraform_ru
Andor
подскажите, есть ли простой и быстрый способ проверить, есть ли в сгенерированном плане изменения или там 0 to add, 0 to change, 0 to destroy?
Это смотрел? https://github.com/lifeomic/terraform-plan-parser
Не знаю, насколько просто и быстро.
источник

A

Andor in terraform_ru
1) оно на жаваскрипте, хотелось бы избегать
2) оно не протухло?
источник

A

Andor in terraform_ru
технически я могу и попарсить вывод terraform show но это тупо
источник

VT

Victor Tur in terraform_ru
) хотел написать что норм.)) js действительно отпугивает
источник

VT

Victor Tur in terraform_ru
Andor
технически я могу и попарсить вывод terraform show но это тупо
Я примерно так и делал.
источник

A

Andor in terraform_ru
проблема ещё в том что оно в пределах версий внутри 0.12 уже менялось как минимум однажды
источник

A

Andor in terraform_ru
в смысле вывод этой команды
источник

AR

Alexey Remizov in terraform_ru
Не знаю, как оно. Где-то год назад посмотрел и тоже не смог переступить через js :)
источник

A

Andor in terraform_ru
на питоне ещё есть парсер, но мне же реально не надо парсить план целиком, только проверить, есть изменения или нет
источник

AR

Alexey Remizov in terraform_ru
Я, наверное, задачу не понял, но в таком виде чем не подходит тупо terraform plan|grep 'No changes. Infrastructure is up-to-date.' ?
источник