我应用了 Terraform 来创建 Redis 集群。
进行到一半时,应用程序失败并显示以下错误消息:
Error: Error waiting for elasticache replication group (my-project) to be created: SerializationError: failed decoding Query response
status code: 200, request id: 3d5a5394-20f0-4834-9e2a-9aff20cceecf
caused by: read tcp 192.168.86.116:53912->54.222.5.156:443: read: connection reset by peer
Run Code Online (Sandbox Code Playgroud)
我知道我已经成功创建了集群,因为我可以使用redis-cli
.
但是如果我再做terraform apply
一次,terraform 会说
module.my_project.aws_elasticache_replication_group.main[0] is tainted, so must be replaced
Run Code Online (Sandbox Code Playgroud)
它试图销毁并重新创建资源,而不是像no action
我预期的那样。
我尝试将资源导入到状态文件中以纠正该问题。但是 terraform 会抛出错误:
错误:资源已由 Terraform 管理
如果操作一开始就成功,我就不会看到tainted
错误消息。
有什么办法可以解决这个问题吗?我想避免删除然后重新创建资源。
理想情况下,我希望能够清除状态文件中的资源,这样 terraform 就不会尝试破坏新创建的集群。
Terraform 将该对象标记为受污染,因为由于错误,无法确定该对象是否处于完整功能状态。
但是,如果您知道(通过带外检查)对象处于合适的状态,则可以使用以下terraform untaint
命令覆盖 Terraform 的确定:
terraform untaint module.my_project.aws_elasticache_replication_group.main[0]
Run Code Online (Sandbox Code Playgroud)
此后,Terraform 将认为该对象处于适合进一步操作的状态。理想情况下,这意味着后续操作terraform plan
根本不会检测到该实例的任何更改。如果创建不完整但可以通过更新修复,则提供商可能会制定就地更新计划以匹配配置。
归档时间: |
|
查看次数: |
6029 次 |
最近记录: |