3
2

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.

[GCP] 手動作成したリソースをTerraform管理するまでにやったこと

Last updated at Posted at 2022-03-11

はじめに

備忘録です(予防線)

また、本記事ではterraformerを使用していますが、万一を想定して.tfコード生成のみの目的で使用しています。
(2022年3月4日時点で、terraformの最新はv1.1.7に対し、terraformerの対応はv0.13

環境

  • クラウド先: GCP
  • コード管理: github
  • apply環境: CircleCI
  • terraformバージョン
    • ci上コンテナ: v0.14
    • ローカル: v0.13 (後述)

やったこと

手順1 terraformer導入(ローカル)

既にあるリソースをterraform管理したい場合、terraform importが一般的だと思います。
しかし、このコマンドでは、tfstateのみしか更新を行いません。

Webコンソール画面・terraformドキュメント・エディタを行き来して、tfコードを生成するのは大変です。

そこで、.tfコードを自動作成してくれるterraformerを用いました。

brew環境だと、以下でインストールできます。

brew install terraformer

また、私の環境だとterraform v0.14以上だと動きませんでした(2022年3月4日時点)
以下記事にもあるように、v0.13を導入すると良いでしょう
https://dev.classmethod.jp/articles/terraformer-version-dependence/

手順2 安全な環境の作成

作業前に、既存環境を壊さない準備をします。
以下の作業を行いました。

  • tfstateのバックアップ
  • 一時的なバケットの作成(S3/GCS)(terraformer用)
  • 一時的な作業用ディレクトリの作成
    • provider設定を引き継ぐ
    • tfstate管理先を、上記作成のバケットへ

手順3 terraformer実行

以下より、コード化したいリソースのterraformer上表記を調べます
https://github.com/GoogleCloudPlatform/terraformer/blob/master/docs/gcp.md

そして、既存環境の.tfコードを生成します。
(tfstate管理先が一時的なバケットであるディテクトリで)

terraformer import google --resources=gcs,iam --projects=<プロジェクト名>

また、--resourcesは*で全リソース取得できます

手順4 リファクタ

terraformerにより作成された.tfコードのうち、必要なものを持ってきます。
(tfstate管理先が本番を向いている、元々のディレクトリへの移動/コピー)

また、以下をリファクタします

  • terraformリソース名(長い)
  • 変数(いらないものがある)
  • リソース自体(terraform管理したくないリソースが含まれていたりする)

手順5 terraform import

リソースブロック単位でterraform importを実行します
コマンド例は公式ドキュメントにあります

ここでは、service_accountを例にします。
https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_service_account#import

terraform import google_service_account.<terraformリソース名> projects/<プロジェクト名>/serviceAccounts/<service_accountのメール>

手順6 terraform plan

terraform planを行い、問題ないことを確認します
(差分が無い or 意図する差分しか出ていない)

手順7 githubへのmerge、terraform applyなど

これらの内容を反映させます

おわりに

マサカリお待ちしております

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?