読者です 読者をやめる 読者になる 読者になる

TerraformでGCPのオーケストレーションをした

terraform gcp オーケストレーション インフラ

GCPでWebコンソールからGUIで操作しているとミスするし、効率が悪い。 GCEインスタンス作ったもののリージョン間違えたので作り直し。作り直したけどベースイメージ間違えて作り直し。。。 orz

それに、操作ミスで本番サーバを停止したりしかねない。

そこでTerraformでオーケストレーションするようにした。 Infrastructure as Code

www.terraform.io

www.terraform.io

Terraformでは*.tfという設定ファイルを作って

$ terraform plan  # テスト
$ terraform apply #  リソース作成
$ terraform destroy  # リソース削除

terraformコマンドを実行すると実行前後の状態を表すファイルが生成される。 これを元に差分を検知し、リソースを操作するため、これらのファイルもバージョン管理必須。

terraformを使う場合、

terraformで出来ることはterraformでやる(Webコンソールとかからやらない)

ことが大事である。上記の通り、terraformは現在の状態をファイルで管理し、それを元に実行する操作を決定しているため、 ローカルのファイルに記録されている状態と実際の状態が異なるとコマンド実行時におかしなことになりかねない。

terraform使って思ったこと

$ terraform apply

でリソースが生成・更新されるのは気持ちいい。

ただ、設定ファイルの文法が分かりにくい。

www.terraform.io

GCP Provisionerのオプションなんかでも公式ドキュメント読んでもどう設定すればよいのか良くわからなかったりする。 ドキュメントは充実しているとは思うので、そのオプションを使ったサンプルコードがあると良いと思う。

あと、terraform applyを実行すると設定していない項目まで変更されるというよくわからない挙動が見られた。

最後に

GitHubにサンプルのリポジトリを作れたら良かったなと思う。