terraform-provider-googlesheetsを作っていた

terraformからGoogleスプレッドシートの値を取得したいことがたま〜にあるので、少し前にスプレッドシート取得用のproviderを作った。

github.com

サービスアカウントにスプレッドシートを共有して

シート名とレンジを指定するとその範囲のデータをJSON文字列としてとってこれる

provider "googlesheets" {
  credentials_json = file("credentials.json")
  # credentials_env = "CREDS_ENV_NAME"
}

data "googlesheets_sheet" "my_sheet" {
  sheet_id = "..."
  range    = "シート1!A1:B2"
}

output "values" {
  value = jsondecode(data.googlesheets_sheet.my_sheet.json)
}

googlesheets_sensitive_sheetリソースを使うとsensitiveな値として扱える。

data "googlesheets_sensitive_sheet" "my_sheet" {
  sheet_id = "..."
  range    = "シート1!A1:B2"
}

output "sensitive_values" {
  value     = jsondecode(data.googlesheets_sensitive_sheet.my_sheet.json)
  sensitive = true
}

エフェメラルリソースもある。

ephemeral "googlesheets_sheet" "my_sheet" {
  sheet_id = "..."
  range    = "シート1!A1:B1"
}

provider "any_other" {
  api_key = jsondecode(ephemeral.googlesheets_sheet.my_sheet.json)[0][0]
}