Terraform модули и провайдеры - PullRequest
0 голосов
/ 14 июня 2019

У меня есть модуль, который определяет поставщика следующим образом

provider "aws" {
    region                  = "${var.region}"
    shared_credentials_file = "${module.global_variables.shared_credentials_file}"
    profile                 = "${var.profile}"
}

и экземпляр EC следующим образом

resource "aws_instance" "node" {
    ami = "${lookup(var.ami, var.region)}"
    key_name   = "ib-us-east-2-production"
    instance_type = "${var.instance_type}"
    count = "${var.count}"
    security_groups = "${var.security_groups}"
    tags {
        Name = "${var.name}"
    }
    root_block_device {
        volume_size = 100
    }

В скрипте terraform, который вызывает этот модуль, я бы хотел создать ELB и прикрепить его к экземпляру, что-то вроде

resource "aws_elb" "node_elb" {
    name               = "${var.name}-elb"
    .........

Однако terraform продолжает запрашивать у меня область aws, которая уже определена в модуле. Единственный способ обойти это - скопировать блок провайдера в файл, вызывающий модуль. Есть ли более чистый способ приблизиться к этому?

1 Ответ

2 голосов
/ 14 июня 2019

Единственный способ обойти это - скопировать блок провайдера в файл, вызывающий модуль.

Блок провайдера должен фактически находиться в вашем файле, вызывающем модуль, и вы можете удалить его из модуля.

Из документов:

ДляУдобство в простых конфигурациях: дочерний модуль автоматически наследует конфигурации по умолчанию (без псевдонимов) от своего родителя.Это означает, что явные блоки провайдера появляются только в корневом модуле, а нижестоящие модули могут просто объявлять ресурсы для этого провайдера и автоматически связывать их с конфигурациями корневого провайдера.

https://www.terraform.io/docs/configuration/modules.html#implicit-provider-inheritance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...