Size: a a a

2019 September 06

AK

Andrey Kartashov in terraform_ru
ты гдето в другом месте ссылаешься на aws_acm_certificate_validation.static_cert без указания индекса
источник

AK

Andrey Kartashov in terraform_ru
inqfen
переделал так, но тоже падает

Because aws_acm_certificate_validation.static_cert has \"for_each\" set, its\nattributes must be accessed on specific instances.
^^^, сделай grep aws_acm_certificate_validation.static_cert -r по коду
источник

AK

Andrey Kartashov in terraform_ru
может в output
источник

AK

Andrey Kartashov in terraform_ru
терраформ не говорит, на какой линии ошибка?
источник

i

inqfen in terraform_ru
Andrey Kartashov
^^^, сделай grep aws_acm_certificate_validation.static_cert -r по коду
да, нашел где косяк, в клаудфронте
источник

i

inqfen in terraform_ru
Ладно, пойду пиво пить, потом переделываю, а то уже ничего не соображаю
источник
2019 September 08

S

Stefan in terraform_ru
добрый вечер, постигаю тут workspace
подкажите, пожалуйста, может я не так делаю, есть такая ситуация:
я написал модуль для добавления доменов в r53, в зависимости от окружения
сейчас у меня оно по структуре так:
terraform/dev, terraform/qa и тд
в каждой из этих папок лежит такой вот main.tf файл с доменами:
module "r53_updater" {
 source = "../modules/r53"
 domains = [
             "iptc.dev.io",
             "ipts.dev.io",
             "pas.dev.io",
             "paus.dev.io",
             "pdc.dev.io",
             "kube-dashboard.io",
             "nats.dev.io"
           ]
         
 hosted_zone = "ZH9"
 #Nginx-rm ingress controller
 elb = "ad02.elb.amazonaws.com"
}
то есть сейчас сделано так, что переменная в модуле для доменов динамична
если в случае внедерения workspace, мне получается нужно будет вносить все эти домены в один файл, но не понятно следующее, как мне реализовать условие? знаю что есть переменная terraform.workspace но её нужно применять в формате bucket = "${terraform.workspace == "preprod" ? var.bucket_demo_preprod}"(это как пример), не хочу добавлять в сам модуль лишние переменные и делать на каждую из них ветвление, можно это как-то иначе релизовать? скажем делать условие на этапе, когда я вношу в переменную домены в приведенном выше файле? а не строить ветвление на уровне аж самого модуля(
источник

i

iF in terraform_ru
Для каждого окружения создейте отдельный файл с нужными переменными (domain, hosted_zone, etc) и подключайте через -var-file, не забыв переключится в нужный воркспейс, получится один манифест и по файлу переменных на окружение
источник

S

Stefan in terraform_ru
iF
Для каждого окружения создейте отдельный файл с нужными переменными (domain, hosted_zone, etc) и подключайте через -var-file, не забыв переключится в нужный воркспейс, получится один манифест и по файлу переменных на окружение
понял, а как обойти проблему, учитывая что я до этого работал в default воркспейсе и при создании нового воркспейса, оно мне предлагает создать новые сущности( tfstate не может обновиться для нового воркспейса, из-за ошибки, мол ресурс уже создан
очень не хотелось бы руками всё испортить((
источник

i

iF in terraform_ru
Ну насколько я знаю текущая реализация не умеет генерить новые, поэтому видимо руками. Тут есть кто эту проблему глубоко копал, пояснит если увидит. У меня нет опыта ручных переносов
источник

S

Stefan in terraform_ru
iF
Ну насколько я знаю текущая реализация не умеет генерить новые, поэтому видимо руками. Тут есть кто эту проблему глубоко копал, пояснит если увидит. У меня нет опыта ручных переносов
ясно, спасибо
источник

S

Stefan in terraform_ru
iF
Для каждого окружения создейте отдельный файл с нужными переменными (domain, hosted_zone, etc) и подключайте через -var-file, не забыв переключится в нужный воркспейс, получится один манифест и по файлу переменных на окружение
я так понял что это не модульная реализация?
источник

i

iF in terraform_ru
нет, это для манифеста. Модуль не должен содержать хардкода
источник

S

Stefan in terraform_ru
iF
нет, это для манифеста. Модуль не должен содержать хардкода
чтоб понимать, просто может мне и нах не нужно было писать модуль в моем случае, а можно было действительно обойтись обычными переменными в файлах
источник

S

Stefan in terraform_ru
но хотел написать свой первый модуль для понимания)))
источник

i

iF in terraform_ru
модуль поддерживать надо, ну и всё зависит от политики организации, есть такие, где внешние модули запрещены. Ну и если ресурс вызывается больше двух раз и различаются только переменные, то напрашивается модуль.
источник
2019 September 09

S

Stefan in terraform_ru
доброе утро) скажите, пожалуйста, а можно как-то обойти использование переменной terraform.workspace таким образом, чтоб оно не ругалось когда у меня не тот воркспейс, а скипало и создавало ресурс для нужного воркспейса?
resource "aws_route53_record" "r53_domains_dev" {
 zone_id = var.hosted_zone_io
 count   = length(terraform.workspace == "dev" ? var.domains_dev : null)
 name    = element(terraform.workspace == "dev" ? var.domains_dev : null, count.index)
 type    = "A"

 alias {
    name    = var.elb
    zone_id = var.shared_zone
    evaluate_target_health = false
 }
}
получается когда в qa воркспейсе, то на этом этапе сразу отваливается весь процесс и ругается мол не верный воркспейс и не доходит до нужного ресурса с нужным воркспейсом( хочу просто обезопасить себя, от завтыка при выборе нужного воркспейса и применении изменений..
источник

AO

Anton Olifir in terraform_ru
что то кажется так ненужно использовать воркспейсы
источник

S

Stefan in terraform_ru
Anton Olifir
что то кажется так ненужно использовать воркспейсы
((((((
источник

AO

Anton Olifir in terraform_ru
самое правильное поведение это как раз ругаться что воркспейс не тот и ничего не создавать
источник