Size: a a a

2019 August 27

DZ

Dmytro Zavalkin in terraform_ru
Анатолий Облаухов
В нашем CI не хватает интерактивности. Непонятно, как аппрувить план. Я пишу костыль: план запускается и сохраняет .tfplan в заранее расшаренную папку, а локально запущенный сервис следит за этой папкой и если там появляется tfplan - запускает консольное приложение, которое рисует этот план и спрашивает аппрувить ли его
у нас в CI plan и approve идут команды одна за другой
источник

DZ

Dmytro Zavalkin in terraform_ru
но там вокруг ТФ свой велосипед на питоне с отдельным стейтом для каждой ASG + LB (каждого сервиса)
источник

DZ

Dmytro Zavalkin in terraform_ru
а stateful ресурсы типа rds или elasticache обычно создаются 1 раз с машины девопса и потом урлы хардкодятся в коде который напихивает user data в соответствующую ASG
источник

РР

Роман Рахманин in terraform_ru
Атлантис отличная штука, если к нему волт прикрутить и нормально сторить ключи
источник

АО

Анатолий Облаухов in terraform_ru
Dmytro Zavalkin
а stateful ресурсы типа rds или elasticache обычно создаются 1 раз с машины девопса и потом урлы хардкодятся в коде который напихивает user data в соответствующую ASG
у меня для этого отдельный стейт, который называется core, и который никогда не запускается на дестрой
источник

РР

Роман Рахманин in terraform_ru
А так у меня было вплоть до того, что plan output - это артефакт, передаваймый с билда на деплой.
источник

РР

Роман Рахманин in terraform_ru
так что по итогу билда сверяем план, и если все ок - передаем на деплой
источник

АО

Анатолий Облаухов in terraform_ru
Роман Рахманин
так что по итогу билда сверяем план, и если все ок - передаем на деплой
тоже мысль)
источник

DZ

Dmytro Zavalkin in terraform_ru
Анатолий Облаухов
у меня для этого отдельный стейт, который называется core, и который никогда не запускается на дестрой
ну тут этих стейтов дофига - лежат по разным путям в одном бакете. По сути после создания ресурса стейт практически не используется
источник

DZ

Dmytro Zavalkin in terraform_ru
короче я думаю это пример как делать не надо
источник

АО

Анатолий Облаухов in terraform_ru
Dmytro Zavalkin
ну тут этих стейтов дофига - лежат по разным путям в одном бакете. По сути после создания ресурса стейт практически не используется
а почему хардкод вместо remote state?
источник

DZ

Dmytro Zavalkin in terraform_ru
ну там remote state
источник

DZ

Dmytro Zavalkin in terraform_ru
просто питон велосипед генерирует path с именем сервиса, именем авс ресурса и т.п.
источник

GT

Grisha Tatsiy in terraform_ru
Error: Error in function call

 on prometheus.tf line 20, in resource "aws_instance" "prometheus":
 20:   subnet_id                   = "${element(data.aws_subnet_ids.private.ids, count.index)}" # subnet-private-1c
   |----------------
   | count.index is 0
   | data.aws_subnet_ids.private.ids is set of string with 3 elements

Call to function "element" failed: cannot read elements from set of string.
a
ws_subnet_ids. = [
 [
   "subnet-0229ce875150ccf38",
   "subnet-0429e7fc67e8651b0",
   "subnet-0b593740c2e8322a4",
 ],
]
Ребят, подскажи ЧЯДНТ?
источник

GT

Grisha Tatsiy in terraform_ru
не могу достать сабнет ид
источник

АВ

Андрей Волошин in terraform_ru
Grisha Tatsiy
Error: Error in function call

 on prometheus.tf line 20, in resource "aws_instance" "prometheus":
 20:   subnet_id                   = "${element(data.aws_subnet_ids.private.ids, count.index)}" # subnet-private-1c
   |----------------
   | count.index is 0
   | data.aws_subnet_ids.private.ids is set of string with 3 elements

Call to function "element" failed: cannot read elements from set of string.
a
ws_subnet_ids. = [
 [
   "subnet-0229ce875150ccf38",
   "subnet-0429e7fc67e8651b0",
   "subnet-0b593740c2e8322a4",
 ],
]
Ребят, подскажи ЧЯДНТ?
| count.index is 0 мне кажется дело в этом
источник

GT

Grisha Tatsiy in terraform_ru
понимаю, но беру из екземпла
источник

GT

Grisha Tatsiy in terraform_ru
data "aws_subnet_ids" "private" {
   vpc_id = "vpc-05ecf2b49733444fb"

   filter {
     name   = "tag:Name"
     values = ["subnet-private-1a", "subnet-private-1b", "subnet-private-1c"]
   }
 }

 count                       = 1
#  subnet_id                   = "subnet-0b593740c2e8322a4" # subnet-private-1c
 subnet_id                   = "${data.aws_subnet_ids.private.ids, count.index)}" # subnet-private-1c
источник

GT

Grisha Tatsiy in terraform_ru
вот такая конструкция у меня
источник

GT

Grisha Tatsiy in terraform_ru
если взять на аутпут aws_subnet_ids.private я получаю
ws_subnet_ids. = [
 [
   "subnet-0229ce875150ccf38",
   "subnet-0429e7fc67e8651b0",
   "subnet-0b593740c2e8322a4",
 ],
]
источник