Terraform Resource не имеет атрибута для переменной - PullRequest
0 голосов
/ 11 июля 2019

Запуск Terraform 0.11.7 и получение следующей ошибки:

module.frontend_cfg.var.web_acl: Resource 'data.terraform_remote_state.waf' does not have attribute 'waf_nonprod_id' for variable 'data.terraform_remote_state.waf.waf_nonprod_id'

Ниже приведен файл terraform:

module "frontend_cfg"
{
    source        = "../../../../modules/s3_fe/developers"
    region        = "us-east-1"
    dev_shortname = "cfg"
    web_acl       = "${data.terraform_remote_state.waf.waf_nonprod_id}"
}

data "terraform_remote_state" "waf" {
  backend = "local"
  config = {
    name = "../../../global/waf/terraform.tfstate"
  }
}

Файл, который создает файл tfstate, указанный выше, приведен ниже. Этот файл не имел проблем со сборкой.

resource "aws_waf_web_acl" "waf_fe_nonprod"
{
    name        = "fe_nonprod_waf"
    metric_name = "fenonprodwaf"

    default_action
    {
        type = "ALLOW"
    }
}

output waf_nonprod_id
{
    value = "${aws_waf_web_acl.waf_fe_nonprod.id}"
}

Я позабочусь о полном выводе файла облачного фронта, однако следующий текст охватывает:

resource "aws_cloudfront_distribution" "fe_distribution"
{
    web_acl_id          = "${var.web_acl}"
}

Если я добавлю идентификатор идентификатора waf в переменную web_acl, он будет работать нормально, поэтому я подозреваю, что проблема связана с тем, как я называю данные. Это похоже на документацию.

1 Ответ

0 голосов
/ 11 июля 2019

Использовать путь вместо имени в terraform_remote_state, https://www.terraform.io/docs/backends/types/local.html

data "terraform_remote_state" "waf" {
  backend = "local"
  config = {
    path = "../../../global/waf/terraform.tfstate"
  }
}

или

data "terraform_remote_state" "waf" {
  backend = "local"
  config = {
    path = "${path.module}/../../../global/waf/terraform.tfstate"
  }
}

Я тестировал его с версиями terraform 0.11.7 и 0.11.14


Если вы обновляете terraform до версии 0.12.x, синтаксис с использованием параметра remote_state изменился. Так что поменяй

web_acl       = "${data.terraform_remote_state.waf.waf_nonprod_id}"

до

web_acl       = data.terraform_remote_state.waf.outputs.waf_nonprod_id

или

web_acl       = "${data.terraform_remote_state.waf.outputs.waf_nonprod_id}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...