Terraform教程 - state


Terraform state的作用

在Terraform中,state文件就像是一个将被创建资源的blueprint,里面描绘了资源的详细信息。有了state文件 (terraform.tfstate),Terraform就可以根据它来真正创建和维护相应的资源了。在每个资源的状态信息中,包含了一个唯一性的ID。terraform.tfstate.backup中保存了之前的状态。

Terraform的state还能被用来提升性能。试想如果需要管理成百上千个资源,每次获取资源状态信息的过程是很耗时的。如果有了state,就相当于在本地缓存了资源状态信息。

state相关的命令

查看所有资源列表

> terraform state list
aws_subnet.subnet-dev-1
aws_subnet.subnet-dev-2

查看某个具体资源详情

terraform state show RESOURCE_ID

查看当前资源状态

可以运行如下命令来查看当前资源状态:

terraform plan --refresh=false

使用state文件时的注意事项

在团队协作的时候,还经常把terraform.tfstate存储在云端共享。

  • state文件中可能包含很多机密信息,包含各种云端资源的详细信息。因此不能将这个文件提交到源码仓库,同时在存储到云端时还需要加密。

使用Remote State

在主文件main.tf中添加:

terraform {
  required_version = ">=1.2.9"

  # default value for backend is local
  backend "s3" {
    bucket = "lcoding-bucket"
    key = "lcoding-tf/state.tfstate"
    region = "eu-west-1"
  }
}

之后,所有的state信息都会被保存在S3之中。如果多人协作+CI/CD,就可以访问同一个state文件了。

注意:

  • 建议开启S3 Bucket的versioning。
  • 更改了Terraform backend配置后,需要重新运行terraform init

文章作者: 逻思
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 逻思 !
  目录