Мой дизайн терраформы зависит от предварительно подготовленного хранилища ключей, содержащего секреты, которые будут использоваться службами приложений. Я импортировал это хранилище ключей в свое удаленное состояние. Я вижу, он был импортирован. Теперь, когда я запускаю план terraform, он действует так, как будто он не знает об импортированном ресурсе.
Так выглядит моя терраформа
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.