Терраформ модульная структура - PullRequest
0 голосов
/ 26 апреля 2018

У меня была плоская структура всех моих .tf файлов, и я хочу выполнить миграцию в папку (т.е. module) на основе настроек, чтобы мой код был более четким.

Например, я перенес определения своего экземпляра и эластичного IP (eip) в отдельные папки

/terraform
 ../instance
   ../instance.tf
 ../eip
    ../eip.tf

По моему instance.tf:

resource "aws_instance" "rancher-node-production" {}

По моему eip.tf:

module "instance" {
  source = "../instance"
}


resource "aws_eip" "rancher-node-production-eip" {
  instance = "${module.instance.rancher-node-production.id}"

Однако при запуске terraform plan:

Ошибка: ресурс 'aws_eip.rancher-node-production-eip' config: "rancher-node-production.id" не является допустимым выводом для модуля "instance"

1 Ответ

0 голосов
/ 26 апреля 2018

Думайте о модулях как о черных ящиках, в которые вы не можете "добраться". Чтобы получить данные из модуля, этот модуль должен экспортировать эти данные с output. Таким образом, в вашем случае вам нужно объявить идентификатор rancher-node-production как вывод модуля instance.

Если вы посмотрите на полученную ошибку, это именно то, что она говорит: rancher-node-production.id не является допустимым выводом модуля (потому что вы никогда не определяли его как вывод).

В любом случае, вот как это будет выглядеть.

# instance.tf
resource "aws_instance" "rancher-node-production" {}

output "rancher-node-production" {
    value = {
        id = "${aws_instance.rancher-node-production.id}"
    }
}

Надеюсь, это поможет вам.

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