Terraformでgoogle_identity_platform_configをimportする
「する」と言うより「した」という記事
なぜかできなかったのだが、いろいろやってたらできてしまった。ただどれが原因でできず、何を設定したらできたのかわからないのでとりあえずやったことを全部書いておこうと思う
前提
- プロジェクトで google_identity_platform_config に該当する設定部分はデフォルトのものができている
- このデフォルトのものはAPIを有効化し、oauthの設定(Terraformでは
google_identity_platform_oauth_idp_config
を有効にした時に自動で作成される(と思われる0もの
- このデフォルトのものはAPIを有効化し、oauthの設定(Terraformでは
- 設定をTerraform上で定義するためインポートしたい
実際にやったこと
# 先に作ってたoauthの設定
resource "google_identity_platform_oauth_idp_config" "oauth_config" {
provider = google-beta
project = var.project_id
display_name = "OAUTH_SAMPLE"
name = "oidc.sample"
client_id = var.oauth_client_id
client_secret = var.oauth_client_secret
issuer = "https://oauth.example.com"
enabled = true
}
# 取り込みたいのはこれ
resource "google_identity_platform_config" "idp_config" {
provider = google-beta
project = var.project_id
}
まずはこの状態でインポートする
% terraform import google_identity_platform_config.idp_config project_id
しかしエラー
google_identity_platform_config.idp_config: Importing from ID "project_id"...
google_identity_platform_config.idp_config: Import prepared!
Prepared google_identity_platform_config for import
google_identity_platform_config.idp_config: Refreshing state... [id=projects/project_id/config]
╷
│ Error: Error when reading or editing IdentityPlatformConfig "projects/project_id/config": googleapi: Error 403: Your application is authenticating by using local Application Default Credentials. The identitytoolkit.googleapis.com API requires a quota project, which is not set by default. To learn how to set your quota project, see https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds .
│ Details:
│ [
│ {
│ "@type": "type.googleapis.com/google.rpc.ErrorInfo",
│ "domain": "googleapis.com",
│ "metadata": {
│ "consumer": "projects/__________",
│ "service": "identitytoolkit.googleapis.com"
│ },
│ "reason": "SERVICE_DISABLED"
│ }
│ ]
│
│
╵
みたところ、インポートはできているがその後の変更で弾かれている
どうやら認証ファイルが悪いらしいが、書いてあるリンク先に従って gcloud auth application-default set-quota-project YOUR_PROJECT
してもやはりダメだった
やったこと
以下の3つ
- provider の設定に
user_project_override
とbilling_project
を追加 - ログインし直し
- プロジェクト設定し直し
providerの設定は以下の通り
provider "google" {
project = local.env.project.id
region = local.env.project.region
zone = "${local.env.project.region}-a"
user_project_override = true
billing_project = local.env.project.id
}
provider "google-beta" {
project = local.env.project.id
region = local.env.project.region
zone = "${local.env.project.region}-a"
user_project_override = true
billing_project = local.env.project.id
}
auth.tfを見ればわかるがgoogle-betaでIDPの設定をしているのでgoogleの方は不要かもしれない。でも動いちゃったからどれが原因かわからない
ログインし直しは特別なものではなく gcloud auth application-default login --project=project_id
指定でコマンドを叩いた
プロジェクトの設定も同様で、 gcloud config set project project_id
を叩いただけ
そんでもう一回 terraform init
と上記と同じimportを叩いたところ通った。どれがいちばんの要因か不明
2024-07-17 追記
別環境でも同じようにエラーになったところで、google-betaのproviderにuser_project_override
と billing_project
の設定を追加したところ無事にインポートできた
やはりこれがうまくいかない要因&うまいくいかない時の対処法っぽい
ちゃんと残しておいた自分に感謝しておきたい
余談
user_project_override と billing_project の部分は予算アラートを作成しようとするとこのオプション設定が必要になるらしく、ない場合同様のエラーが出ると言うところから試した
これが解決の要因かはわからない
Discussion
非常に参考になりました、ありがとうございます。
私のケースにおいては、環境変数
USER_PROJECT_OVERRIDE
を true に設定してterraform import
することでimportできること確認できました!