4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Terrafrom運用の細かい操作まとめ

Last updated at Posted at 2021-12-07

はじめに

Terraform cloudいいですね。tfstateのbackendをs3からTerrafrom cloudに移動している中でmoduleもリファクターとTerrafrom管理をしていなかったリソースのコード化も進めているのですが、そこで使用しているコマンドを備忘録的にまとめておきます。

環境

  • terraform v1.0.8
  • terraform-provider-aws v3.0.0

リソースをimportする

すでにリソースをコンソールから作成済みだけど、その作成済みのリソースもterrafromで管理した場合にリソースの状態をtfstateにimportします。

  • 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するとdestroyされてリソースが再作成されてしまします。
これでは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
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?