3
1

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 3 years have passed since last update.

AWSの既存のリソースをterraformで管理する

Last updated at Posted at 2020-02-16

1. 概要

マネジメントコンソールから作成した既存のセキュリティグループをterraformで管理するようにしたので、その手順を記載します。
今回はterraformerを使ってimportしています。
tfstateファイルはS3に置くようにしています。

2. 前提条件

terraform、terraformer、aws configの設定は済んでいることとします。

※ terraformerのインストール方法や使い方は下記を参照して下さい。
https://github.com/GoogleCloudPlatform/terraformer

3. 手順

3.1 terraformのmain.tfファイルを作成する

$ vi main.tf

設定例)

terraform {
  required_version = "0.12.20"
}

provider "aws" {
  region  = "ap-northeast-1"
  version = "2.49.0"
}

terraform {
  backend "s3" {
    bucket = "hogehoge"
    key    = "hogehoge/terraform.tfstate"
    region = "ap-northeast-1"
  }
}

3.2 terraform initする

$ terraform init 

リソースを定義していないため、tfstateは作成されません。

3.3 terraformer importする

$ terraformer import aws --resources=sg --filter=aws_security_group=sg-093ffc7be63295434 --regions=ap-northeast-1

→コマンドを実行したディレクトリ配下に「generated/aws/sg/ap-northeast-1」ディレクトリが作成されます。
sg-093ffc7be63295434は、terraformで管理したいセキュリティグループのグループIDです。

3.4 作成されたterraform.tfstateのterraform_version を main.tfで指定しているバージョンに合わせる

$ vi generated/aws/sg/ap-northeast-1/terraform.tfstate

generated/aws/sg/ap-northeast-1/terraform.tfstateのterraform_versionは、terraformerのバージョンによって変わるようです。
こちらはterraformのバージョンと合わせる必要があります。

3.5 ディレクトリを移動する

$ cd generated/aws/sg/ap-northeast-1/

3.6 terraform state mv する

$ terraform state mv -state-out=../../../../terraform.tfstate 'aws_security_group.tfer--qiita_sg-002D-093ffc7be63295434' 'aws_security_group.qiita'

aws_security_group.tfer--qiita_sg-002D-093ffc7be63295434 → terrafomerでimportしたリソース名
aws_security_group.qiita → terrafomのリソース名

3.7 ディレクトリを移動する

$ cd ../../../../

terraform.tfstateが作成されているはずです。

3.8 terraform planで差分が出なくなるようにリソースを定義する

$ vi security_group.tf

generated/aws/sg/ap-northeast-1/security_group.tf を参考にすると良いです。

3.9 terraform planで差分が出ないことを確認する

$ terraform plan

差分が出なくなっていればterraformで管理出来ています。

4. まとめ

既にtfstateが存在しているscopeに既存のリソースをimportする場合は少し手順が変わります。
terraformerが対応していないリソースをimportしたい場合は、terraform importすれば良いと思います。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?