Terraform使用技巧综述
首先
土地形成云很好。在将tfstate的后端从s3迁移到Terraform云的过程中,我也在进行模块的重构和资源代码的Terraform管理,现在我把使用的命令作为备忘录整理如下。
环境
-
- terraform v1.0.8
- terraform-provider-aws v3.0.0
导入资源
已从控制台创建了资源,但如果使用Terraform管理先前创建的资源,则将资源的状态导入到tfstate中。
- moduleを使っていないケース
resource "aws_ecr_repository" "hog" {
省略
}
$ terraform import aws_ecr_repository.hog xxx-api
- moduleを使っているケース
module "ecr_module" {
省略
}
$ terraform import module.ecr_module.aws_ecr_repository.hog xxx-api
- main.tfに複数リソースを定義しいる場合
通过分别执行import命令,将其添加到tfstate中。
resource "aws_ecr_repository" "hog" {
省略
}
resource "aws_lambda_function" "hog" {
省略
}
$ terraform import aws_ecr_repository.hog xxx-api
$ terraform import aws_lambda_function.hog xxx-function
更改资源名称
当需要发现重构、错别字等问题并想要修改资源名称时,仅仅改变资源名称然后运行terraform apply命令会导致销毁并重新创建资源。
这将导致RDS等资源出现严重问题。
因此,我们可以使用terraform state mv命令来修改tfstate文件中的资源名称。
resource "aws_ecr_repository" "hog" {
省略
}
// 上記を以下に変更
resource "aws_ecr_repository" "fuga" {
省略
}
- moduleを使っていないケース
$ terraform state mv aws_ecr_repository.hog aws_ecr_repository.fuga
- moduleを使っているケース
module "ecr" {
省略
}
$ terraform state mv module.ecr.aws_ecr_repository.hog module.ecr.aws_ecr_repository.fuga