【发布时间】:2020-08-13 17:45:21
【问题描述】:
我正在尝试禁用特定环境的资源,在这种情况下,它是 qa 环境,我只希望为生产和登台创建资源。 我有相同的 terraform 代码,可通过管道运行 qa、登台和生产。
我有一些用于创建 ECS 集群的代码。我不希望它为 qa 环境创建。 这是在 ECS 上创建集群的代码:
resource "aws_ecs_cluster" "main" {
name = "${terraform.workspace}-main"
tags = {
App = var.app_name
Environment = terraform.workspace
}
}
output "main_ecs_id" {
value = aws_ecs_cluster.main.id
}
我尝试使用 count 来禁用 qa 环境,这很有效:
resource "aws_ecs_cluster" "main" {
count = terraform.workspace != "qa" ? 1 : 0
name = "${terraform.workspace}-main"
tags = {
App = var.app_name
Environment = aws_ecs_cluster.main[count.index].name
}
}
output "main_ecs_id" {
value = aws_ecs_cluster.main.*.id
}
唯一的问题是它不适用于我希望创建资源的环境(生产和暂存)。 当它尝试在生产和登台时使用该代码创建资源时,我收到此错误:
Error: Self-referential block
on ecs.tf line 8, in resource "aws_ecs_cluster" "main":
8: Environment = aws_ecs_cluster.main[count.index].name
Configuration for aws_ecs_cluster.main may not refer to itself.
知道我做错了什么吗? 谢谢
【问题讨论】:
标签: terraform