Size: a a a

2020 June 17

N

Nikolai in terraform_ru
Victor Tur
да, не забывай что zsh “стреляет в колено” - нужно всегда брать в кавычки если используешь всякие globs, list нотации и прочее [0], .*
О, да :)))
источник

V

Vladislav in terraform_ru
iam_role
The iam_role attribute can be used to specify an IAM role that Terragrunt should assume prior to invoking Terraform.

The precedence is as follows: --terragrunt-iam-role command line option → TERRAGRUNT_IAM_ROLE env variable → iam_role attribute of the terragrunt.hcl file in the module directory → iam_role attribute of the included terragrunt.hcl.

Example:

iam_role = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"


В Террагранте есть такая классная штука как IAM ROLE от которой все будет запускаться.
Не доконца понимаю как это работает.

1. Будте ли работать если я пропишу эту роль в конфиге (в облаке она уже создана) и запущи террагрант на своем ноуте?
   Не понимаю как просто по имени роли он сможет что-то сделать в Обалке ?
   Или дополнительно нужно иметь еще креды в .aws/credentials? Если да - то тогда како смысла ?

2. Может идея использвоания Роли оправдана когда в облаке есть специальная машины с Terraform и Terragrunt - с которой все и запускать ?
источник

V

Vladislav in terraform_ru
Развернул все через Terragrunt apply-all. Успешно.

Изменил немного DNS ресурс. Добавил DelegationSet.
От ресурса DNS зависят EC2, Aurora (так как на базе него создают свои А записи)

Получил ошибку:

Encountered the following errors:
Cannot process module Module /Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/aurora (excluded: false, dependencies: [/Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/vpc, /Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/dns]) because one of its dependencies, Module /Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/dns (excluded: false, dependencies: [/Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/vpc]),


В такой ситуации только  destroy-all или есть варианты?

Так и не понял depends_on поможет ли ...
источник
2020 June 18

YM

Yevhen Malyy in terraform_ru
Vladislav
Развернул все через Terragrunt apply-all. Успешно.

Изменил немного DNS ресурс. Добавил DelegationSet.
От ресурса DNS зависят EC2, Aurora (так как на базе него создают свои А записи)

Получил ошибку:

Encountered the following errors:
Cannot process module Module /Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/aurora (excluded: false, dependencies: [/Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/vpc, /Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/dns]) because one of its dependencies, Module /Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/dns (excluded: false, dependencies: [/Users/admin/git/platform-engineering/terraform2/region/nvirginia/prod/na5/vpc]),


В такой ситуации только  destroy-all или есть варианты?

Так и не понял depends_on поможет ли ...
Проверяй депендс_он, они в цикл ушли у тебя скорее всего
источник

YM

Yevhen Malyy in terraform_ru
Alexey Remizov
Везут официальный провайдер Kubernetes с поддержкой произвольных ресурсов. Пока альфа:
https://www.hashicorp.com/blog/deploy-any-resource-with-the-new-kubernetes-provider-for-hashicorp-terraform/
Есть смысл? Думаю куб ресурсы убрать из тф
источник

V

Vladislav in terraform_ru
Yevhen Malyy
Проверяй депендс_он, они в цикл ушли у тебя скорее всего
У меня нигде в коде Терраформа нет depends_on. Зависимости у меня в Террагранте.
источник

V

Vladislav in terraform_ru
Aliaksandr Dounar
которые можно загружать и переиспользовать как вводные переменные модулей
locals {
 service = basename(path_relative_to_include())
 region  = basename(dirname(path_relative_to_include()))
 account = basename(dirname(dirname(path_relative_to_include())))
 envopt  = yamldecode(file(find_in_parent_folders("environment.yaml")))

 # Import region level terragrunt.hcl
 terragrunt = read_terragrunt_config(find_in_parent_folders("terragrunt.hcl"))
}


Туго переваривается. В целом ясно, но нужно детально разобраться - у меня же своя структура кода...

Есть ли возможность прогнать выражения basename(path_relative_to_include()) и прочие не запуская целиком деплой кода ?

Доки читал...
источник

AD

Alex Domoradov in terraform_ru
привет, подскажите а как правильно использовать if в template?
источник

AD

Alex Domoradov in terraform_ru
%{ if ${database_enabled} == "true" }
[database_instance]
database ansible_host=${database_public_ip} ansible_user=ansible private_ip=${database_private_ip}
%{ endif }


пробовал так, но в итоге в файл попадает
%{ if true == "true" }
[database_instance]
database ansible_host=34.89.xxx.xxx ansible_user=ansible private_ip=10.0.9.37
%{ endif }
источник

AA

Alexey Abramov in terraform_ru
мне кажется синтаксис ${database_enabled} как раз и подставляет значение взятого в ${..} вот и выходит true == "true" ))
источник

AA

Alexey Abramov in terraform_ru
может попробовать убрать ${...}
источник

YM

Yevhen Malyy in terraform_ru
Alexey Abramov
может попробовать убрать ${...}
Попробуй в ковычках "${...}"
источник

AD

Alex Domoradov in terraform_ru
а почему вообще конструкция if/else попадает в вывод?
источник

AD

Alex Domoradov in terraform_ru
Yevhen Malyy
Попробуй в ковычках "${...}"
тоже самое, только

if “true” == “true”
источник

AR

Alexey Remizov in terraform_ru
Alex Domoradov
привет, подскажите а как правильно использовать if в template?
Покажи целиком конфиг в части, касающейся шаблона.
источник

AD

Alex Domoradov in terraform_ru
data "template_file" "ansible_inventory" {
   template = "${file("./templates/hosts.tpl")}"

   vars {
       jfrt_public_ip  = "${local.gce_jfrt_public_ip}"
       jfrt_private_ip = "${local.gce_jfrt_private_ip}"

       database_public_ip  = "${local.gce_db_public_ip}"
       database_private_ip = "${local.gce_db_private_ip}"
       database_enabled    = "${var.use_external_db}"
   }
}
источник

AD

Alex Domoradov in terraform_ru
сам шаблон
$ cat templates/hosts.tpl
[localhost]
127.0.0.1 ansible_connection=local

[artifactory_instance]
artifactory ansible_host=${jfrt_public_ip} ansible_user=ansible private_ip=${jfrt_private_ip}

%{ if "${database_enabled}" == "true" }
[database_instance]
database ansible_host=${database_public_ip} ansible_user=ansible private_ip=${database_private_ip}
%{ endif }
источник

AR

Alexey Remizov in terraform_ru
Какая версия терраформа?
источник

AD

Alex Domoradov in terraform_ru
0.11
источник

i

inqfen in terraform_ru
А ты старовер
источник