1.7.18.5.1. replace-provider
terraform state replace-provider
命令可以替换状态文件中资源对象所使用的 Provider.
1.7.18.5.1.1. 用法
terraform state replace-provider [options] FROM_PROVIDER_FQN TO_PROVIDER_FQN
该命令会更新所有使用 from 的 Provider 的资源,将它们使用的 Provider 更新为 to Provider。这让我们可以更新状态文件中资源所使用的 Provider 的源。
该命令在进行任意修改之前会先生成一个备份文件。备份机制不可关闭。
支持以下可选参数:
-auto-approve
:跳过交互式提示确认环节-lock=false
:执行时是否先锁定状态文件。如果其他人可能同时对同一工作区运行命令,则这是危险的。-lock-timeout=0s
:除非使用-lock=false
禁用锁定,否则命令 Terraform 为上锁操作设置一个超时时长。持续时间语法是一个数字后跟一个时间单位字母,例如“3s”表示三秒。
以下是使用 local
Backend 时可用的遗留参数:
-backup=FILENAME
:指定源状态文件的备份地址,默认为源状态文件加上".backup"后缀-bakcup-out=FILENAME
:指定目标状态文件的备份地址,默认为目标状态文件加上".backup"后缀-state=FILENAME
:源状态文件地址,默认为当前 Backend 或是"terraform.tfstate"-state-out=FILENAME
:目标状态文件地址。如果不指定则使用源状态文件。可以是一个已经存在的文件或新建一个文件
1.7.18.5.1.2. 样例
下面的示例将 hashicorp/aws
Provider 程序替换为 acme
的复刻版本,该 Provider 托管在 registry.acme.corp
的私有注册表中:
$ terraform state replace-provider hashicorp/aws registry.acme.corp/acme/aws