🦔
terraform×Snowflake0.15→2.8対応で詰まったとこメモ
account廃止されましたねー。で、
公式ドキュメントのサンプル
を参考に単純にaccount→account_nameにすればいいんだなと思いますよね。で、terraform実行したら
╷
│ Error: 260000: account is empty
│
│ with provider["registry.terraform.io/snowflakedb/snowflake"],
│ on provider.tf line 2, in provider "snowflake":
│ 2: provider "snowflake" {
│
ですよ。accountは死んだはずでは???
.terragrunt-cacheの中に生成されたprovider.tfを確認してもaccount_nameの中身はちゃんとあるし...
と思ってたらこれorganization_nameがなくても発生するんですねー。
ということでsnowflakeで
SELECT CURRENT_ORGANIZATION_NAME();
実行・取得して環境変数に設定、してヨシ!と思ったら今度は404でエラー...
╷
│ Error: open snowflake connection: 261004 (08004): failed to auth for unknown reason. HTTP: 404, URL: https://{ORGANIZATION_NAME}-{ACCOUNT_NAME}.XXXX
│
│ with provider["registry.terraform.io/snowflakedb/snowflake"],
│ on provider.tf line 2, in provider "snowflake":
│ 2: provider "snowflake" {
│
╵
account→account_nameと名前変えるだけではダメなんですねー...
SELECT CURRENT_ACCOUNT_NAME()
で取得してやつを設定したところちゃんと動きました。こちらのが自然な感じしますね。
環境変数から取得している場合root.hclはこんな感じになります。これを子がincludeすればオッケーです。
generate "provider" {
path = "provider.tf"
if_exists = "overwrite"
contents = <<EOF
provider "snowflake" {
account_name = "${get_env("SNOWFLAKE_ACCOUNT", "")}"
organization_name = "${get_env("SNOWFLAKE_ORGANIZATION_NAME", "")}"
user = "${get_env("SNOWFLAKE_USER", "")}"
password = "${get_env("SNOWFLAKE_PASSWORD", "")}"
role = "${get_env("SNOWFLAKE_ROLE", "")}"
}
EOF
}
Discussion