繁体   English   中英

无法获取 Terraform 模块中定义的变量值

[英]Not able to fetch the variable's value defined in a module in Terraform

我是 terraform 的新手...我在模块内创建了一个 dev.tfvars 文件并在其中声明了一些变量。 我正在尝试获取此值并将其分配给不同模块中的另一个变量。 这是行不通的。

下面是代码片段..

module "mydemomodule" {
  source = "../modules/dev_env"  // module call
}

resource "aws_instance" "demo" {
    ami = "${module.mydemomodule.AMIS.LINUX_MUMBAI}" // trying to fetch the value 
    region = "${module.mydemomodule.AWS_MUMBAI_REGION}"  // trying to fetch the value 
    instance_type = "${module.mydemomodule.INSTANCE_TYPE}" // trying to fetch the value 
    key_name = "${aws_key_pair.ssshkey.key_name}"
    tags = {
        Name = "${terraform.workspace}_server"
    }
}

dev.tfvars // this file is inside other module
-----------------------------------------------
variable "INSTANCE_TYPE"{
    default = "t2.micro"
}
 
//AWS_REGION      = "us-east-1"
variable "AWS_MUMBAI_REGION"{
    default = "ap-south-1"
}

variable "AWS_SINGAPORE_REGION"{
    default = "us-southeast-1"
}

variable "AMIS" {
     type = map
     default = {
        LINUX_MUMBAI  = "ami-0cca134ec43cf708f"
        UBUNTU_MUMBAI = "ami-07ffb2f4d65357b42"
        LINUX_SGP     = "ami-005835d578c62050d"
        UBUNTU_SGP    = "ami-02045ebddb047018b"
     }
}

运行 terraform 计划时出现如下错误

Error: Unsupported attribute
│
│   on main.tf line 16, in resource "aws_instance" "demo":
│   16:     ami = "${module.mydemomodule.AMIS.LINUX_MUMBAI}"
│     ├────────────────
│     │ module.mydemomodule is a object
│
│ This object does not have an attribute named "AMIS".
╵
╷
│ Error: Unsupported argument
│
│   on main.tf line 17, in resource "aws_instance" "demo":
│     ├────────────────
│     │ module.mydemomodule is a object
│
│ This object does not have an attribute named "INSTANCE_TYPE".
╵

模块中的变量仅限于该模块,不能在该模块外访问。 如果您在多个模块中需要该值,为什么不在顶层定义它,并将它传递给所有需要它的模块呢?

如果您绝对需要在模块内定义值,那么您需要向该模块添加一个output以输出该值,以便您可以在顶层访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM