我有一个看起来像以下
的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
以上是一个示例。总的来说,我真的很想知道我是否可以在覆盖中删除属性。
是的,当您从资源中删除属性时,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希望通过删除名称标签来修改实例。如果我运行terraform apply
,则将删除标签。
如果要在覆盖文件中删除标签(例如,Override.tf),则将明确将标签设置为空MAP:
resource "aws_instance" "web" {
ami = "ami-408c7f28"
instance_type = "m1.small"
tags = {}
}
注意,只有在您的us-east-1中的帐户仍然具有EC2典型支持时,这些具体示例才能起作用。