【发布时间】:2022-11-15 02:38:33
【问题描述】:
我正在设置一个在 AWS 中预置资源的管道。每次我运行管道时,我都会得到一个模块已经存在的错误。我知道我已经提供了我想要的资源,但我对 Terraform 的理解是,如果它已经存在,它会跳过它并提供其余不存在的资源。如何让它跳过现有模块而不导致管道构建错误。
【问题讨论】:
标签: amazon-web-services terraform terraform-provider-aws
我正在设置一个在 AWS 中预置资源的管道。每次我运行管道时,我都会得到一个模块已经存在的错误。我知道我已经提供了我想要的资源,但我对 Terraform 的理解是,如果它已经存在,它会跳过它并提供其余不存在的资源。如何让它跳过现有模块而不导致管道构建错误。
【问题讨论】:
标签: amazon-web-services terraform terraform-provider-aws
我对 Terraform 的理解是,如果它已经存在,它只是跳过它并提供
很遗憾你的理解是不正确的。 TF 在提供资源之前不会检查是否存在某些内容。根据 TF 设计原则,假定资源不存在如果它们要由 TF 管理。
如何让它跳过现有模块而不导致管道构建错误。
你必须手动完成。将一些变量传递给您的 TF 脚本以用于有条件地创建资源。 TF 没有能力检查资源的预先存在,除非你自己做。
【讨论】:
如果资源已经存在,Terraform 不会跳过该资源,它会引发错误并退出执行。
要处理此类问题,最好的替代方法是将现有资源导入您的状态文件。
在官方文档的每个资源页面的末尾,您会找到一个“导入”部分,通常如下所示:
terraform import terraform_state_id component_id
Example:
terraform import aws_instance.web i-12345678
【讨论】: