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
广告
将在 10 秒后关闭
bannerAds