У нас есть требование установить vnetPrivatePortsCount, который является параметром конфигурации стандартного приложения логики. Однако до сих пор нам не удалось найти способ установить его через terraform. Мы используем объект azurerm_logic_app_standard для создания приложений логики, поэтому нам нужна возможность установить его с помощью него.
Мы попробовали сделать ниже, но это не сработало
site_config {
vnet_private_ports_count = 2
}
Это свойство недоступно через terraform или я что-то упускаю? Наша версия терраформа — 1.8.5. и версия AzureRM — 3.106.1.
вы можете использовать команды cli, если хотите добиться этого, используя эти команды с нулевым ресурсом
Стандарт приложения 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?
ресурс "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, нам это помогло!!
Вместо этого вы можете запустить эти команды через поставщика с terraform!
get-access-token учетной записи az
учетная запись az get-access-token --subscription ""
На основании документации и текущих возможностей поставщика Terraform для Azure, свойство
vnet_private_ports_count
не поддерживается для ресурсаazurerm_logic_app_standard
напрямую @vijaysharma.