Стандарт приложения Azure Logic — установите vnetPrivatePortsCount через Terraform

У нас есть требование установить vnetPrivatePortsCount, который является параметром конфигурации стандартного приложения логики. Однако до сих пор нам не удалось найти способ установить его через terraform. Мы используем объект azurerm_logic_app_standard для создания приложений логики, поэтому нам нужна возможность установить его с помощью него.

Мы попробовали сделать ниже, но это не сработало

site_config {
vnet_private_ports_count = 2
}

Это свойство недоступно через terraform или я что-то упускаю? Наша версия терраформа — 1.8.5. и версия AzureRM — 3.106.1.

На основании документации и текущих возможностей поставщика Terraform для Azure, свойство vnet_private_ports_count не поддерживается для ресурса azurerm_logic_app_standard напрямую @vijaysharma.

Vinay B 03.07.2024 14:03

вы можете использовать команды cli, если хотите добиться этого, используя эти команды с нулевым ресурсом

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

Ответы 2

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

Стандарт приложения Azure Logic — установите vnetPrivatePortsCount через Terraform.

Согласно документации hashicorp стандарт vnet_private_ports_count для логических приложений не поддерживается, поскольку эту функцию необходимо добавить.

Между тем, мы можем использовать то же требование, используя команды CLI, используя нулевой ресурс.

Конфигурация терраформа:

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = var.resource_group_name
  location = var.location
}

resource "azurerm_app_service_plan" "example" {
  name                = var.app_service_plan_name
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  sku {
    tier = "WorkflowStandard"
    size = "WS1"
  }
}

resource "azurerm_storage_account" "example" {
  name                     = var.storage_account_name
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

resource "azurerm_logic_app_standard" "example" {
  name                = var.logic_app_name
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  app_service_plan_id = azurerm_app_service_plan.example.id
  storage_account_name = azurerm_storage_account.example.name
  storage_account_access_key = azurerm_storage_account.example.primary_access_key

  identity {
    type = "SystemAssigned"
  }

  site_config {
    always_on = true
  }
}

resource "null_resource" "set_vnet_private_ports_count" {
  provisioner "local-exec" {
    interpreter = ["pwsh", "-Command"]
    command = <<EOT
      az resource update --resource-group ${azurerm_resource_group.example.name} --name ${azurerm_logic_app_standard.example.name} --resource-type 'Microsoft.Web/sites' --set properties.siteConfig.vnetPrivatePortsCount=2
    EOT
  }

  depends_on = [azurerm_logic_app_standard.example]
}

переменная.tf:

variable "resource_group_name" {
  default = "vinay-resources"
}

variable "location" {
  default = "East US"
}

variable "app_service_plan_name" {
  default = "vinay-appserviceplan"
}

variable "logic_app_name" {
  default = "vinay-logicapp"
}

variable "storage_account_name" {
  default = "sampvksbeacct"
}

Развертывание выполнено успешно:

Ссылка:

Мы можем проверить поддерживаемые версии на сайте

https://learn.microsoft.com/en-us/azure/templates/microsoft.logic/allversions

Мы попробовали этот подход, но он выдал ошибку: «Пожалуйста, запустите az login, чтобы настроить учетную запись». Как мы можем войти через terraform?

Vijay Sharma 03.07.2024 15:51
Learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli вы можете обратиться к нему для аутентификации по принципу сервиса @VijaySharma
Vinay B 03.07.2024 16:03

ресурс "null_resource" "set_vnet_private_ports_count" {provider "local-exec" {interpreter = ["pwsh", "-Command"] команда = <<EOT az login --service-principal -u ${var.client_id} -p $ {var.client_secret} --tenant ${var.tenant_id} az resources update --resource-group ${azurerm_resource_group.example.name} --name ${azurerm_logic_app_standard.example.name} --resource-type 'Microsoft.Web /sites' --set Properties.siteConfig.vnetPrivatePortsCount=2 EOT } это позволит вам решить проблему аутентификации @VijaySharma

Vinay B 03.07.2024 16:03

Огромное спасибо @Vinay B, нам это помогло!!

Vijay Sharma 03.07.2024 18:18

Вместо этого вы можете запустить эти команды через поставщика с terraform!

получить токен доступа для активной подписки

get-access-token учетной записи az

получить токен доступа для конкретной подписки

учетная запись az get-access-token --subscription ""

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

Запуск конвейера выпуска Azure DevOps из приложения логики и получение выходных данных переменной среды из конвейера
Удалить файлы из места назначения, если они удалены из источника с помощью приложения логики
Скопируйте папку вместе с файлами из Azure Blob в SharePoint
Развертывание приложения логики (стандартное) через конвейер DevOps — служба kudu недоступна 503
VSCode Logic App func.exe Тип транспорта служебной шины
Почему действие «Создать большой двоичный объект (v2)» не отображается в стандартном плане Azure Logic Apps, но доступно в плане потребления?
Почему я не могу установить имя переменной в приложении Logic (невозможно редактировать в редакторе, доступном только для чтения)
Приложение Azure Logic — изменение пароля Outlook
Максимальное количество запусков ожидания приложения Azure Logic App. Что произойдет, если лимит будет превышен?
Соединитель OneDrive для бизнеса выдает ошибку «Не удалось установить SSL-соединение»