我有一个类似于以下
的terraform资源resource "aws_instance" "web" {
ami = "ami-408c7f28"
tags = { Name = "hello World"}
}
我想覆盖它以删除标记并让它看起来像这样
resource "aws_instance" "web" {
ami = "ami-408c7f28"
}
基本上删除标签。
有没有办法在覆盖文件中执行此操作,如此处所述? https://www.terraform.io/docs/providers/aws/r/instance.html
以上是一个例子。一般来说,我真的想知道我是否可以删除覆盖中的属性。
答案 0 :(得分:2)
是的,Terraform应该能够从您的资源中删除属性。例如,假设我已经使用以下.tf文件运行terraform apply
:
resource "aws_instance" "web" {
ami = "ami-408c7f28"
instance_type = "m1.small"
tags = { Name = "hello World"}
}
现在,如果我将.tf文件更改为:
resource "aws_instance" "web" {
ami = "ami-408c7f28"
instance_type = "m1.small"
}
并运行terraform plan
,我应该看到这样的输出:
~ aws_instance.web
tags.%: "1" => "0"
tags.Name: "hello World" => ""
这表明terraform想要通过删除Name标签来修改实例。如果我运行terraform apply
,则该标记将被删除。
如果要删除override file中的标记(例如override.tf),则应将标记显式设置为空地图:
resource "aws_instance" "web" {
ami = "ami-408c7f28"
instance_type = "m1.small"
tags = {}
}
请注意,只有在us-east-1中的帐户仍有EC2-Classic支持时,这些具体示例才有效。