Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@longunder

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

More than 1 year has passed since last update.

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

1
Help us understand the problem. What is going on with this article?
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
longunder
Web系の会社でインフラエンジニアをしています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?