更新时间:2022-02-10 GMT+08:00

state管理命令

Terraform 在完成资源的创建和修改后,会将资源的状态和属性信息会保存在 terraform.tfstate 文件中。我们可以使用 "terraform state" 相关命令对 state 进行管理。

terraform state list

该命令列出当前state文件中配置的所有资源,输出格式为:<资源类型>.<资源名称>

$ terraform state list
data.huaweicloud_identity_role.role_example
huaweicloud_identity_group_membership.membership_example
huaweicloud_identity_group.group_example
huaweicloud_identity_user.user_example
random_password.password

terraform state show

该命令可以查看某个资源的所有属性值,命令格式为:terraform state show <资源类型>.<资源名称>

$ terraform state show huaweicloud_identity_user.user_example
# huaweicloud_identity_user.user_example:
resource "huaweicloud_identity_user" "user_example" {
  domain_id = "0970d7b7d400f*************a03560"
  enabled   = true
  id        = "0aa800908f00f35b1f92c0038250d042"
  name      = "user_example"
  password  = (sensitive value)
  region    = "cn-north-1"
}

terraform state rm

该命令用于在state文件中移除指定的资源,而非真正从华为云中将资源删除,命令格式为:terraform state rm <资源类型>.<资源名称>

$ terraform state rm huaweicloud_identity_group_membership.membership_example
Removed huaweicloud_identity_group_membership.membership_example
Successfully removed 1 resource instance(s).

terraform state mv

该命令用于变更指定资源的存放地址,主要用法有:

  • 变更资源名称

    命令格式为:terraform state mv <资源类型>.<资源名称1> <资源类型>.<资源名称2>

    $ terraform state mv huaweicloud_identity_group_membership.membership_example huaweicloud_identity_group_membership.membership_1
    Move "huaweicloud_identity_group_membership.membership_example" to "huaweicloud_identity_group_membership.membership_1"
    Successfully moved 1 object(s).
  • 变更资源路径

    用于将指定资源从当前 state 文件中移动至另一个指定 state 文件中,同时可以变更资源名称,命令格式为:

    terraform state mv -state-out=state文件相对/绝对路径 <资源类型>.<资源名称1> <资源类型>.<资源名称2>
    $ terraform state mv -state-out=../vpc_basic/terraform.tfstate huaweicloud_identity_user.user_example huaweicloud_identity_user.user_1
    Move "huaweicloud_identity_user.user_example " to "huaweicloud_identity_user.user_1"
    Successfully moved 1 object(s).