Help us understand the problem. What is going on with this article?

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

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すれば良いと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした