🔖

Terraformでgoogle_identity_platform_configをimportする

2024/03/11に公開
1

「する」と言うより「した」という記事

なぜかできなかったのだが、いろいろやってたらできてしまった。ただどれが原因でできず、何を設定したらできたのかわからないのでとりあえずやったことを全部書いておこうと思う

前提

  • プロジェクトで google_identity_platform_config に該当する設定部分はデフォルトのものができている
    • このデフォルトのものはAPIを有効化し、oauthの設定(Terraformでは google_identity_platform_oauth_idp_config を有効にした時に自動で作成される(と思われる0もの
  • 設定をTerraform上で定義するためインポートしたい

実際にやったこと

auth.th
# 先に作ってた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つ

  1. provider の設定に user_project_overridebilling_project を追加
  2. ログインし直し
  3. プロジェクト設定し直し

providerの設定は以下の通り

main.tf
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_overridebilling_project の設定を追加したところ無事にインポートできた

やはりこれがうまくいかない要因&うまいくいかない時の対処法っぽい


ちゃんと残しておいた自分に感謝しておきたい

余談

user_project_override と billing_project の部分は予算アラートを作成しようとするとこのオプション設定が必要になるらしく、ない場合同様のエラーが出ると言うところから試した

https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/billing_budget

これが解決の要因かはわからない

Discussion