Модули Terraform - Невозможно получить доступ к переменной из корня - PullRequest
0 голосов
/ 07 февраля 2019

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

└── Terraform
            ├── main.tf
            ├── variable.tf
    └── module
                ├──main.tf
                ├── variable.tf

Версия Terraform:

Terraform v0.11.11
+ provider.openstack v1.15.0

Файлы конфигурации Terraform /Terraform/main.tf:

provider "openstack" {
openstack_user_name         = "${var.openstack_user_name}"
openstack_tenant_name   = "${var.openstack_tenant_name}"
openstack_password      = "${var.openstack_password}"
openstack_auth_url          = "${var.openstack_auth_url}"
domain_name             = "${var.domain_name}"
}
module "testMod" {
name                    = "${var.name}"
imageId                     = "${var.imageId}"
flavor_name                 = "${var.flavor_name}"
openstack_keypair   = "${var.openstack_keypair}"
tenant_network_id           = "${var.tenant_network_id}"
tenant_network      = "${var.tenant_network}"
source = "./modules"
}

/ Terraform / variable.tf:

variable "name" {default = "XXX"}
variable "imageId" {default = "11-22-33"}
variable "flavor_name"{default = "flavor"}
...

/ Terraform / modules / main.tf:

resource "openstack_compute_instance_v2" "test" {
 name               = "${var.name}"
imageId                 = "${var.imageId}"
flavor_name             = "${var.flavor_name}"
openstack_keypair       = "${var.openstack_keypair}"
security_groups     =   ["default"]

network {
tenant_network_id       = "${var.tenant_network_id}"
tenant_network      = "${var.tenant_network}"
    }
}

/ Terraform / modules / variable.tf:

variable "name" {}
variable "imageId" {}
variable "flavor_name" {}
variable "openstack_keypair" {}
variable "tenant_network_id"{}
variable "tenant_network" {}

Фактическое поведение

Error: module.testMod.openstack_compute_instance_v2.test: : invalid or unknown key: imageId

Действия для воспроизведения

  1. terraform init
  2. terraform apply

Не знаете, что здесь происходит не так

1 Ответ

0 голосов
/ 07 февраля 2019

Ошибка предупреждает вас о неизвестном ключе imageId.Это сообщение является точным, так как ключ должен быть image_id.Вы можете проверить документацию ресурса Terraform openstack_compute_instance_v2 и заметить наличие аргумента image_id .

Ваш код будет выглядеть следующим образом:

resource "openstack_compute_instance_v2" "test" {
  name              = "${var.name}"
  image_id          = "${var.imageId}"
  flavor_name       = "${var.flavor_name}"
  openstack_keypair = "${var.openstack_keypair}"
  security_groups   = ["default"]
}
...