Terraform: ожидание распространения разрешения на чтение ключа конфигурации приложения

Я пытаюсь создать конфигурацию приложения с двумя функциями, но получаю сообщение об ошибке:

│
│   with module.appconfig.azurerm_app_configuration_feature.advanced,
│   on app_config\main.tf line 27, in resource "azurerm_app_configuration_feature" "keyname":│   27: resource "azurerm_app_configuration_feature" "keyname" {
│
│ waiting for App Configuration Key ".appconfig.featureflag/keyname" read permission to be propagated: timeout while waiting for state to become 'Error, Exists' (last state: 'Forbidden', timeout: 44m59.3893417s)   
╵

Это мой фрагмент кода:


data "azurerm_client_config" "data" {
}

resource "azurerm_resource_group" "test" {
  name     = "rg-sample-4"
  location = "eastus"
}

resource "azurerm_role_assignment" "app_configuration_role" {
  scope                = azurerm_resource_group.test.id
  role_definition_name = "App Configuration Data Owner"
  principal_id         = data.azurerm_client_config.data.object_id
}

resource "azurerm_app_configuration" "this" {
  name                       = "appconfig-94"
  resource_group_name        = "rg-sample-4"
  location                   = "eastus"
  sku                        = var.APP_CONFIGURATION_SKU
  local_auth_enabled         = var.APP_CONFIGURATION_LOCAL_AUTH_ENABLED #true
  public_network_access      = var.APP_CONFIGURATION_PUBLIC_NETWORK_ACCESS #"Enabled"
  purge_protection_enabled   = var.APP_CONFIGURATION_PURGE_PROTECTION_ENABLED #false
  soft_delete_retention_days = var.APP_CONFIGURATION_SOFT_DELETE_RETENTION_DAYS #1

  depends_on = [
    azurerm_role_assignment.app_configuration_role,
  ]
}

resource "azurerm_app_configuration_feature" "keyname" {
  configuration_store_id = azurerm_app_configuration.this.id
  description            = var.ADVANCED_FEATURE_DESCRIPTION
  name                   = var.ADVANCED_FEATURE_NAME
  label                  = var.ADVANCED_FEATURE_LABEL
  enabled                = var.ADVANCED_FEATURE_ENABLED
}

resource "azurerm_app_configuration_feature" "keynametwo" {
  configuration_store_id = azurerm_app_configuration.this.id
  description            = var.EXTENSION_FEATURE_DESCRIPTION
  name                   = var.EXTENSION_FEATURE_NAME
  label                  = var.EXTENSION_FEATURE_LABEL
  enabled                = var.EXTENSION_FEATURE_ENABLED
}
 azurerm = {
      source  = "hashicorp/azurerm"
      version = "=3.52.0"
    }

Я взял это с: https://github.com/hashicorp/terraform-provider-azurerm/issues/15721#issuecomment-1103532799

И я также проверил документацию, но у меня ничего не работает: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/app_configuration_feature

Кто-нибудь знает причину этой ошибки и как ее исправить? Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проверьте следующий код

terraform {
  backend "azurerm" {
    resource_group_name  = "xx"
    storage_account_name = "remotestate"
    container_name       = "terraform"
    key                  = "terraform.tfstate"
  }
}

Используйте time_sleep, чтобы дождаться создания роли.

resource "azurerm_role_assignment" "app_configuration_role" {
  scope                = data.azurerm_resource_group.example.id
  role_definition_name = "App Configuration Data Owner"
  principal_id         = data.azurerm_client_config.current.object_id

}

resource "time_sleep" "role_assignment_sleep" {
  create_duration = "60s"

  triggers = {
    role_assignment = azurerm_role_assignment.app_configuration_role.id
  }
}

Затем добавьте depends_on > time_sleep.role_assignment_sleep, чтобы создание конфигурации приложения ждало создания роли и могло прочитать ключи.

resource "azurerm_app_configuration" "this" {
  name                       = "appconfig"
  resource_group_name        =  data.azurerm_resource_group.example.name
  location                   = data.azurerm_resource_group.example.location
  sku                        = <sku>
  local_auth_enabled         = true
  public_network_access      = "Enabled"
  purge_protection_enabled   = false
  soft_delete_retention_days = 1

  depends_on = [
    azurerm_role_assignment.app_configuration_role,
   time_sleep.role_assignment_sleep
  ]
}

После terraform plan

После terraform apply

Другие вопросы по теме

Преобразование исходного кода фабрики данных Azure в сценарий терраформирования
Как включить несколько префиксов адресов в одно и то же правило администратора с помощью Terraform AzureRm
Создание различного количества виртуальных машин с уникальными сетевыми картами с использованием for_each
Сценарий Terraform Windows Module устанавливает политику блокировки учетной записи и минимальную длину пароля Azure
Как я могу использовать azurerm_resource_group_template_deployment для ресурса бюджета Azure, но игнорировать изменения даты начала и окончания?
Azurerm_resource_group_template_deployment игнорирует файл параметров
Terraform Azurerm: создать большой двоичный объект, если он не существует
Azurerm_linux_function_app Не удалось создать общий файловый ресурс хранилища — проверьте, доступна ли учетная запись хранения — azurerm_private_endpoint
Terraform — функция создания виртуальной сети Swift недоступна для бесплатной пробной подписки — в подписке с оплатой по мере использования
Почему Ansible не может проанализировать мой файл конфигурации динамической инвентаризации Azure?