如何删除Terraform资源覆盖中的属性



我有一个看起来像以下

的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典型支持时,这些具体示例才能起作用。

最新更新