🍣

既に作成されているクラウドサービスのインフラをコード化する

2022/11/30に公開

株式会社レスキューナウエンジニアの坂本です。

今回の記事は「作ったは良いものの、インフラのコード管理などが出来ない状態で固まってしまった」クラウドサービスを極力労力をかけずにコード化する内容について記載してみます。

2010年代にAWSが大流行してからというものの、Web業界ではオンプレ環境やレンタルサーバからクラウドサーバへ移行する企業が増えてきたと思います。
続いて各クラウドプロバイダから専用のIaCサービスが提供されました。
AWSの場合は2011年にCloudFormationが発表され、おそらくこれが初のクラウドIaCサービスになります。
その後GCPからはCloud Deployment Managerが発表され、この辺りでIaCに取り組む企業などがちらほら出てきた印象です。

ただし、2011年以降に開発されたサービスであっても全ての企業のサービスにIaCが導入されているわけではなく、環境構築コードが用意されていないプロダクトは多く存在していると思います。

そんなサービスをIaC化する方法について記載していきますが、
今回は労力をかけたくない為、複数のクラウドに対応できるTerraformに焦点を当てて記載していきます。
単体で使う分にはterraformよりもCloud Deployment Manager、CloudFormationの方が使いやすいという人もいます。

GCPの場合

前提条件

gcloudのSDKがインストールされていること
gcloudのコンフィグでエクスポートしたいプロジェクトが設定、認証されていること

1.ベータコマンドに入っているgcloud beta resource-config bulk-exportコマンドを使用する

gcloud beta resource-config bulk-export --resource-format=terraform > infla.tf

以上!

AWSの場合

前提条件

HomeBrewがインストールされていること
AWS CLIがインストールされ、認証済みであること

1.Homebrewでterraformerをインストールする

brew install terraformer  

2.名前付きプロファイルを出力(~/.aws/credentialsとして出力されます)

aws configure

3.terraformerを使用してtfファイルを出力する(デフォルトではgenerated というディレクトリに出力されます。)

terraformer import aws -r="*" --profile=credentials

以上!
注意事項として、terraformerはAWS公式の物ではないので新サービスを即座に使用はできない事に注意してください!

最後に

いかがでしょうか?

どちらも4コマンド以下でインフラのコード化ができちゃうんです。
しかもtfファイルの記述なんて覚える必要ないのです!(環境複製の場合プロジェクト名称とか変わるので手を加えないとダメです)
「既存のインフラ構成が複雑でコード化なんてできないよ」といった悩みは一瞬で解決するので是非試してみてください!

レスキューナウテックブログ

Discussion