我想为几个开发和生产环境使用相同的terraform模板.
我的方法:据我所知,资源名称必须是唯一的,terraform在内部存储资源的状态.因此,我尝试使用变量作为资源名称 - 但似乎不支持.我收到一条错误消息:
$ terraform plan
var.env1
Enter a value: abc
Error asking for user input: Error parsing address 'aws_sqs_queue.SqsIntegrationOrderIn${var.env1}': invalid resource address "aws_sqs_queue.SqsIntegrationOrderIn${var.env1}"
Run Code Online (Sandbox Code Playgroud)
我的terraform模板:
variable "env1" {}
provider "aws" {
region = "ap-southeast-2"
}
resource "aws_sqs_queue" "SqsIntegrationOrderIn${var.env1}" {
name = "Integration_Order_In__${var.env1}"
message_retention_seconds = 86400
receive_wait_time_seconds = 5
}
Run Code Online (Sandbox Code Playgroud)
我认为,无论是我的方法是错误还是语法.有任何想法吗?
我建议为每个环境使用不同的工作区。这允许您像这样指定配置:
variable "env1" {}
provider "aws" {
region = "ap-southeast-2"
}
resource "aws_sqs_queue" "SqsIntegrationOrderIn" {
name = "Integration_Order_In__${var.env1}"
message_retention_seconds = 86400
receive_wait_time_seconds = 5
}
Run Code Online (Sandbox Code Playgroud)
确保根据环境创建“aws_sqs_queue”资源的名称(例如,将其包含在名称中)以避免 AWS 中的名称冲突。
| 归档时间: |
|
| 查看次数: |
9691 次 |
| 最近记录: |