如何在Terraform中跳过已存在的资源

91次阅读
没有评论

问题描述

在使用Terraform创建一个Secret时遇到了错误,因为该Secret已经手动创建过了。他想知道是否有办法告诉Terraform如果资源已经存在就跳过创建。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Terraform中,没有办法告诉它如果资源已经存在就跳过创建。Terraform的设计理念是用它来管理整个基础架构,而不是选择性地管理某些资源。但是,你可以使用terraform import功能将现有的基础架构导入到Terraform的状态文件中,这样它就不会尝试创建已经存在的资源。每种资源类型的文档都会告诉你如何导入它。

方案2

请注意以下操作注意版本差异及修改前做好备份。
在Terraform 0.12之后的版本中,我们可以使用生命周期(lifecycle)来控制资源的创建。通过设置ignore_changes属性,我们可以简单地跳过资源的创建。
以下是一个示例,演示如何在Terraform中跳过资源的创建:

resource "aws_instance" "web" {
  ami = "foo"
  lifecycle {
    ignore_changes = ["ami"]
  }
}

在上面的示例中,我们定义了一个名为web的AWS实例资源。通过在lifecycle块中设置ignore_changes属性,我们告诉Terraform在更新资源时忽略ami属性的变化。这将导致Terraform跳过对该资源的创建。
请注意,这种方法仅适用于Terraform 0.12及更高版本。
以上是两种在Terraform中跳过已存在资源的方法。根据你的具体需求,选择适合你的方法即可。

正文完