1.7.21.1. untaint

Terraform 有一个名为“tainted”的标记,用于跟踪可能损坏的对象,该命令已被废弃,应使用 terraform apply -replace 代替

如果创建一个资源的操作由多个步骤组成,操作期间其中之一的操作发生错误,Terraform 会自动将对象标记为“受污染”,因为 Terraform 无法确定该对象是否处于完整功能状态。

terraform untaint 命令可以手动清除一个 Terraform 管理的资源对象上的污点,恢复它在状态文件中的状态。它是 terraform taint 的逆向操作。

该命令不会修改实际的基础设施资源,只会在资源文件中清除资源对象上的污点标记。

如果我们从对象中删除污点标记,但后来发现它还是损坏了,则可以使用如下命令创建并应用一个计划来替换受损的资源对象,而无需首先重新在该对象上标记污点:

terraform apply -replace="aws_instance.example[0]"

1.7.21.1.1. 用法

terraform untaint [options] address

name参数是要清除污点的资源的资源名称。该参数的格式为TYPE.NAME,比如aws_instance.foo。

可以使用如下可选参数:

  • -allow-missing:如果声明该参数,那么即使资源不存在,命令也会返回成功(状态码0)。对于其他异常情况,该命令可能仍会返回错误,例如读取或写入状态时出现问题。
  • -lock=false:执行时是否先锁定状态文件。如果其他人可能同时对同一工作区运行命令,则这是危险的。
  • -lock-timeout=DURATION:除非使用 -lock=false 禁用锁定,否则命令 Terraform 为上锁操作设置一个超时时长。持续时间语法是一个数字后跟一个时间单位字母,例如“3s”表示三秒。
  • -no-color:关闭彩色输出。在无法解释输出色彩的终端中运行 Terraform 时请使用此参数。

以下是使用 local Backend 时可用的遗留参数:

  • -backup=FILENAME:指定源状态文件的备份地址,默认为源状态文件加上".backup"后缀
  • -bakcup-out=FILENAME:指定目标状态文件的备份地址,默认为目标状态文件加上".backup"后缀
  • -state=FILENAME:源状态文件地址,默认为当前 Backend 或是"terraform.tfstate"
  • -state-out=FILENAME:目标状态文件地址。如果不指定则使用源状态文件。可以是一个已经存在的文件或新建一个文件

results matching ""

    No results matching ""