我正在设置一个在AWS中提供资源的管道。每次我运行管道时,我都会得到一个模块已经存在的错误。我知道我已经提供了我想要的资源,但我对Terraform的理解是,如果它已经存在,它就会跳过它,并提供其他不存在的资源。我如何使它跳过现有的模块,而不是导致管道构建错误。
很遗憾,你的理解是错误的。TF在提供资源之前不会检查是否存在某些内容。根据TF设计原则,假定资源不存在如果它们是由TF管理的我对Terraform的理解是,如果它已经存在,它就会跳过它并提供
如何使其跳过现有模块而不导致管道构建错误。
你必须手工做。将一些变量传递给TF脚本,以便有条件地创建资源。TF没有检查资源是否预先存在的能力,除非您自己检查。
如果资源已经存在,Terraform不会跳过它,它会抛出一个错误并退出执行。
要处理这类问题,最好的替代方法是将现有的资源导入到您的状态文件中。
在官方文档的每个资源页的末尾,您会发现一个"import"。部分,通常是这样的:
terraform import terraform_state_id component_id
Example:
terraform import aws_instance.web i-12345678