よくわからないリソースをterraformで書かなきゃいけなくなった時に、こうすると早いんじゃないかという方法を雑にメモしていきたい。
具体例としてGoogle CloudのGoogle Cloud Storageを初めて作成する時を例にする。
コンソール上で作ってみる
まずはコンソール(UI)上でリソースを作ってみます。
ついでに動作を確認しても良いかもしれないです。
今回の例で言うとGoogle Cloudのコンソール上でGoogle Cloud Storageのバケットをぽちぽち作成する。
「terraform {リソース名}」でググる
検索エンジンで「terraform {リソース名}」で検索を行うと、大体対象リソースを作成するためのterraform公式サイトが一番上に出てくるので見る。
今回の例で言うと「terraform google storage」で検索して以下のサイトを見つける。
https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_bucket
terraform公式サイトの例をコピペして.tfファイルを作る
terraform公式サイトの上の方にExample Usageといった形で具体的なサンプルコードが書いてあるので、これをコピペして.tfファイルを作成する。
今回の例で言うと以下のような感じ。
resource "google_storage_bucket" "static-site" {
name = "image-store.com"
location = "EU"
force_destroy = true
uniform_bucket_level_access = true
website {
main_page_suffix = "index.html"
not_found_page = "404.html"
}
cors {
origin = ["http://image-store.com"]
method = ["GET", "HEAD", "PUT", "POST", "DELETE"]
response_header = ["*"]
max_age_seconds = 3600
}
}
手動で作ったリソースをインポートする
今回の例で言うと以下のようにしてインポートする。
terraform import google_storage_bucket.static-site {project_id}/{bucket_name}
import
直後のgoogle_storage_bucket.static-site
は先ほどのコピペしたコードのリソースタイプとローカル名を書く。
最後のリソースの指定の仕方は公式サイトの下の方に「import」という項目があるので、それを見るとどのようにインポートすれば良いかわかる。今回はプロジェクトIDとバケット名をスラッシュで繋げたものを書く。
.tfファイルにインポートしたものを反映する
今回の例で言うとterraform show
でインポートしたリソースを表示できるので、表示されたコードをまるっとコピーして、先ほどの.tfファイルのコピペ部分に上書きする。あとはterraform plan
をしながらerrorを直しながら手動で作成したリソースのterraformコードを完成させる。
最後に
ChatGPT的な生成AIツールと組み合わせるとインフラエンジニアでなくてもなんちゃってterraformコードをスラスラ書ける。でもセキュリティには要注意。