Vercel の Environment Variable を terraform import する
とある、フロントエンドを Vercel にデプロイしている案件で、インフラの再構築をすばやくできるように、terraform import
で設定を吸い上げることをしていて気がついたことの共有です。
Project の設定(General) と Domains の設定は、スムーズに terraform-provider-vercel の Documentation 通りに吸い取れたのですが、Environment Variables の取得がすんなりとはいけませんでした。
どう進めて Vercel の Environment Variables の terraform import
に成功したのかを記述します。
import の失敗から始まった
に基づいて(たつもりで)、 import ブロックを利用して以下のような指定で HCL 化を試みました。
import {
id = "team_123456789012345678901234/prj_1234567890123456789012345678/NEXT_PUBLIC_ZZZZZZ"
to = vercel_project_environment_variable.dev_xxxx_yyyyy_NEXT_PUBLIC_ZZZZZZ"
}
結果はこんな感じ。
Project と Domain は快調に取得できていただけに、何がいけないのか全く気づけませんでした。
ChatGPT4 先生に聞きました
こんなときに頼りになるのが先生。しかし、
- デリミタを間違ってきた(
/
が正解なのに:
だと ) - 提示してきた API のバージョンが正しくなかった( v6 っていつのですか... )、必要なパラメータが足りなかった(「あなたどこの誰?」的なレスポンスを喰らったw )
という感じに、まあいつもこれくらいはあるよね、くらいのガッカリはしました。
正しい API 指定は何かを探る
terraform import にラッピングされている API はあるはずで、公式ドキュメントに書いてある正解を探してみました。
vercel env ls
cli を引き当てた
漠然と、「Vercel environment_variable id 確認」で検索して出てきたそれっぽいのが、vercel env ls
cli でした。
そういえば GitHub Actions で CD を組んでいたので Vercel CLI をインストールしてあったなあと思い、ヒント得られるのを願って Vercel 1年生 な自分、えいやで叩いてみました。
(ディレクトリ変更や login/logout を何度かやってますが省略 )
vercel link できて vercel env ls を得たという状況
ああっ、やっぱり id はわからない・・・
というわけで API に望みを託して改めて捜索。
retrieve-the-environment-variables-(以下略) API
先ほどの検索の次点の結果に、これかな?と思しき API を見つけました。
ほう、今は v9 ですか。ということで v6 は古い情報だったけど、エンドポイントの最後が /env
だったので、先生「近しい」答えを教えてくれてたんですね、という感想を持ちました。便利な世の中だ。
API 叩いたら、ついに出ました。id。
こうして import 成功
ということで、
import {
id = "team_123456789012345678901234/prj_1234567890123456789012345678/${retrieved_id}"
to = vercel_project_environment_variable.dev_xxxx_yyyyy_NEXT_PUBLIC_ZZZZZZ"
}
に直して import を再び。HCL 化に成功したので、この指定の要領で複数あった Environment Variable の import を1つ1つやり抜きました。
最後に
最後まで見ていただきありがとうございました。
この記事で言いたかったのは、前にやっていてうまくいったという結果に引きずられて間違いを続けてしまわないように、一定のタイミングで切り替えて仕切り直すこと大事だな、と思ったことです。(ラグビーW杯の決勝見た後にガラッと気分が変わって、得たい結果を得られた。なかなかの幸運と言うか。)
Discussion