[英]terraform S3 module, can't call the KMS key arn calling module
[英]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.