0

私の Terraform 設計は、アプリ サービスで使用されるシークレットを含む、事前にプロビジョニングされた keyvault に依存しています。このキー コンテナーをリモート状態にインポートしました。輸入されていることがわかります。terraform plan を実行すると、インポートされたリソースを認識していないかのように動作します。

これは私のテラフォームがどのように見えるかです

provider "azurerm" {
    version="=2.20.0"
    skip_provider_registration="true"  
    features{}
}

terraform {
  backend "azurerm" {}
}

resource "azurerm_key_vault" "kv" {
  name                  = "${var.env}ActicoDQM-kv"
}

module "app_service_plan"{
  source                    = "./modules/app-service-plan"
 ...redacted for brevity
  tags                      = var.tags
}

module "app-service"{
  source                = "./modules/app-service"
...redacted for brevity
  tags                  = var.tags
  key_vault_id          = azurerm_key_vault.kv.key_vault_id
}

モジュール内にアプリ サービスのアクセス ポリシーを追加する

resource "azurerm_app_service" "app" {
... redacted for brevity 
  }

  identity {
      type = "SystemAssigned"
  }
}

resource "azurerm_key_vault_access_policy" "app" {
  key_vault_id       = var.key_vault_id
  tenant_id          = azurerm_app_service.app.identity[0].tenant_id
  object_id          = azurerm_app_service.app.identity[0].principal_id
  secret_permissions = ["get", "list"]
}

私の理解にはいくつかのミッシングリンクがあるようです。

terraform plan 

インポートされたキーボールトについて知らないかのように動作します

Error: Missing required argument

  on main.tf line 19, in resource "azurerm_key_vault" "kv":
  19: resource "azurerm_key_vault" "kv" {

The argument "tenant_id" is required, but no definition was found.
4

1 に答える 1