Size: a a a

2019 May 01

S

Stefan in terraform_ru
понимаю что с другими ресурсами оно норм работать будет, но пока хотелось решить проблему с провайдером(
источник

VT

Victor Tur in terraform_ru
дерево модулей спукается как направленный граф. (dag)
так даже удобнее для понимания.
Зачем тебе копипасть provider если он и так неявно работает?
источник

S

Stefan in terraform_ru
Victor Tur
т.е. in short:
root модуль, от которого ты пляшешь не в курсе что в модуле есть объявление провайдера.
Это получается обратная зависимость, снизу вверх. Насколько я тебя понял.
и странно, ведь объявление провайдера зато указано в main.tf модуля(
источник

S

Stefan in terraform_ru
и в теории он должен был без проблем всё вытянуть в темплейт r53
источник

S

Stefan in terraform_ru
тупо подставить то, что находится в main.tf(
источник

VT

Victor Tur in terraform_ru
нет ничего странного.
как я уже сказал - оно даже работать будет :)
попробуй добавить в свой root модуль provider "aws" с другими credentials
источник

S

Stefan in terraform_ru
Victor Tur
нет ничего странного.
как я уже сказал - оно даже работать будет :)
попробуй добавить в свой root модуль provider "aws" с другими credentials
root модуль это мой темплейт с r53?
я что-то с терминолгией путаюсь
источник

VT

Victor Tur in terraform_ru
ты можешь в outputs модуля вывести свои variables (сделать экспорт) и передать их в root модуль) но это бред.)) смысл?
источник

VT

Victor Tur in terraform_ru
Да.
Проще говоря, Root модуль - это твоя  самая верхняя папка с tf файлами, в которой ты выполняешь terraform init/plan/apply
источник

S

Stefan in terraform_ru
Victor Tur
Да.
Проще говоря, Root модуль - это твоя  самая верхняя папка с tf файлами, в которой ты выполняешь terraform init/plan/apply
а, понятно))
тогда не совсем понял, чем мне поможет это ? "попробуй добавить в свой root модуль provider "aws" с другими credentials"
хрень в том, что если не париться с модулями, то само собой оно нормально работает в root папке с темплейтом, но вот когда я хочу избавиться от постоянного добавления provider "aws" {} в темплейты других root папок, то оно не считывает модуль, который я создал для реюза и предлагает ввести регион
источник

VT

Victor Tur in terraform_ru
ещё раз...
зачем тебе provider "aws" {} каждый раз?
источник

VT

Victor Tur in terraform_ru
While in principle provider blocks can appear in any module, it is recommended that they be placed only in the root module of a configuration, since this approach allows users to configure providers just once and re-use them across all descendent modules.
источник

VT

Victor Tur in terraform_ru
источник

S

Stefan in terraform_ru
Victor Tur
ещё раз...
зачем тебе provider "aws" {} каждый раз?
эээээээ, то есть ты хочешь сказать, что если я однажды уже делал terraform init, где вытягивал provider "aws", то мне уже не нужно это каждый раз указывать в последующих темплейтах?
источник

VT

Victor Tur in terraform_ru
блок "provider" дёргается при каждом выполнении.
при init - нам нужно передать backend config
источник

VT

Victor Tur in terraform_ru
"последующих темплейтах" - поясни что это относительно одного инфраструктурного Root модуля который например отвечает за App ? (i.e. ec2, auto scaling, alb)
источник

S

Stefan in terraform_ru
Victor Tur
блок "provider" дёргается при каждом выполнении.
при init - нам нужно передать backend config
так, смотри, вот это один темплейт, для р53, допустим мне захочется сделать темплейт с секьюрити группами, мне там тоже ведь нужно будет в папке сделать terrafrom init и прописать provider "aws" {} ? чтоб этого не делать для каждого, я и хотел сделать реюзебл модуль с провайдером и кредами
provider "aws" {
 region = "eu-central-1"
 access_key = "key"
 secret_key = "key"
}
#module "providers" {
#  source = "/home/ubuntu/terraform/modules/providers"
#}

resource "aws_route53_record" "dev_domains" {
 zone_id = "${var.hosted-zones["test-terraform.com"]}"
 count   = "${length(var.dev-domains)}"
 name    = "${element(var.dev-domains, count.index)}"
 type    = "A"
 ttl     = "300"
 records = ["1.1.1.1"]
источник

VT

Victor Tur in terraform_ru
надо мне отойти на часок.
ты пока почитай документацию ещё раз что я тебе скинул внимательно.
источник

VT

Victor Tur in terraform_ru
я рекомендую сделать инфрастуктурные модули по их назначению.
app,db, network, general
и да, у всех их явно прописан блок provider "aws", с переменными.
в каждом из app,db,network,general - внутри описания модулей уже структурных, таких как autoscaling, load balancer, route53 и прочее.
которым уже неявно передаётся твоё объявление provider "aws" которое ты сделал выше.
источник

VT

Victor Tur in terraform_ru
Если у тебя есть модуль с жёсткими регионами прописанными и алиасами - ты снизу вверху не вытащишь. в root модуль всё равно.
источник