如何通过arm模板部署具有多个工作流程的“逻辑应用标准”

问题描述 投票:0回答:1

我无法弄清楚如何在成功部署资源类型/种类的逻辑应用程序标准的arm模板中定义工作流程:

  • “类型”:“Microsoft.Web/站点”
  • “种类”:“功能应用程序,工作流程应用程序”

逻辑应用程序标准需要现有的应用程序服务计划和存储帐户,而不是消费逻辑应用程序。我找不到任何有关如何定义要在逻辑应用标准中创建的工作流的参考或文档。我提供了下面 Arm 模板中的逻辑应用资源代码片段。

"resources": [
        {
            "apiVersion": "2019-08-01",
            "name": "[parameters('logicAppName')]",
            "type": "Microsoft.Web/sites",
            "kind": "functionapp,workflowapp",
            "location": "[parameters('location')]",
            "tags": "[parameters('tags')]",
            "dependsOn": [],
            "properties": {
                "name": "[parameters('logicAppName')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "FUNCTIONS_EXTENSION_VERSION",
                            "value": "~4"
                        },
                        {
                            "name": "FUNCTIONS_WORKER_RUNTIME",
                            "value": "node"
                        },
                        {
                            "name": "WEBSITE_NODE_DEFAULT_VERSION",
                            "value": "~18"
                        },
                        {
                            "name": "AzureWebJobsStorage",
                            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId(parameters('subscriptionId'),parameters('resourceGroup'),'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
                        },
                        {
                            "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
                            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId(parameters('subscriptionId'),parameters('resourceGroup'),'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
                        },
                        {
                            "name": "WEBSITE_CONTENTSHARE",
                            "value": "clmslogicapp876a"
                        },
                        {
                            "name": "AzureFunctionsJobHost__extensionBundle__id",
                            "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
                        },
                        {
                            "name": "AzureFunctionsJobHost__extensionBundle__version",
                            "value": "[1.*, 2.0.0)"
                        },
                        {
                            "name": "APP_KIND",
                            "value": "workflowApp"
                        }
                    ],
                    "cors": {},
                    "use32BitWorkerProcess": false,
                    "ftpsState": "FtpsOnly",
                    "netFrameworkVersion": "v6.0"
                },
                "clientAffinityEnabled": false,
                "virtualNetworkSubnetId": "[variables('subnetForInjectionID')]",
                "publicNetworkAccess": "Disabled",
                "httpsOnly": true,
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('resourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
            },
            "identity": {
                "type": "SystemAssigned"
            }
        }
    ]

所有资源和示例模板均指我不尝试部署的资源类型的消费逻辑应用程序:

  • “类型”:“Microsoft.Logic/工作流程”

工作流定义可以在 Azure 门户中的 Code 选项卡下以 json 形式找到。我尝试在资源数组的逻辑应用标准属性中添加此 .json 工作流定义,并且arm模板已成功部署,但逻辑应用中没有工作流。通过工作流的定义和成功的部署,我希望逻辑应用程序在配置后会有额外的资源,但逻辑应用程序部署正常,并且工作流选项卡为空。

json azure azure-rm-template azure-automation
1个回答
0
投票

Microsoft.Logic/workflows
主要适用于消费逻辑类应用。没有直接的方法可以使用 ARM 模板在逻辑应用标准内部署工作流。一种方法是使用 ARM 中提供的部署脚本,另一种方法是使用 bicep 部署后脚本。

您的代码应使用 ARM 部署 PowerShell 脚本进行类似于以下的修改:

首先,创建一个逻辑应用标准资源,然后在部署脚本资源中使用

Set-AzLogicapp
PowerShell 命令添加工作流,如下所示。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "metadata": {
        "description": "The datacenter to use for the deployment."
      }
    },
    "logicAppName": {
      "type": "string",
      "defaultValue": "mynewapj"
    },
    "appServicePlanName": {
      "type": "string"
    },
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "kind": {
      "type": "string",
      "defaultValue": "StorageV2"
    },
    "skuName": {
      "type": "string",
      "defaultValue": "Standard_LRS"
    },
    "skuTier": {
      "type": "string",
      "defaultValue": "Standard"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "sku": {
        "name": "[parameters('skuName')]",
        "tier": "[parameters('skuTier')]"
      },
      "kind": "[parameters('kind')]",
      "name": "[parameters('storageName')]",
      "location": "[parameters('location')]"
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2018-02-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "WS1",
        "tier": "WorkflowStandard"
      },
      "kind": "windows"
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2018-11-01",
      "name": "[parameters('logicAppName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageName'))]"
      ],
      "kind": "workflowapp,functionapp",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "netFrameworkVersion": "v4.6",
          "appSettings": [
            {
              "name": "APP_KIND",
              "value": "workflowApp"
            },
            {
              "name": "AzureFunctionsJobHost__extensionBundle__id",
              "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
              "name": "AzureFunctionsJobHost__extensionBundle__version",
              "value": "[1.*, 2.0.0)"
            },
            {
              "name": "AzureWebJobsStorage",
              "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageName'),';AccountKey=',concat(listKeys(concat(resourceGroup().id,'/providers/Microsoft.Storage/storageAccounts/', parameters('storageName')),'2019-06-01').keys[0].value),';EndpointSuffix=core.windows.net')]"
            },
            {
              "name": "FUNCTIONS_EXTENSION_VERSION",
              "value": "~4"
            },
            {
              "name": "FUNCTIONS_V2_COMPATIBILITY_MODE",
              "value": "true"
            },
            {
              "name": "FUNCTIONS_WORKER_RUNTIME",
              "value": "node"
            },
            {
              "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
              "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageName'),';AccountKey=',concat(listKeys(concat(resourceGroup().id,'/providers/Microsoft.Storage/storageAccounts/', parameters('storageName')),'2019-06-01').keys[0].value),';EndpointSuffix=core.windows.net')]"
            },
            {
              "name": "WEBSITE_CONTENTSHARE",
              "value": "[parameters('logicAppName')]"
            },
            {
              "name": "WEBSITE_NODE_DEFAULT_VERSION",
              "value": "~12"
            }, 
            {
              "name": "WORKFLOWS_SUBSCRIPTION_ID", 
              "value": "[subscription().subscriptionId]"
            },
            {
              "name": "WORKFLOWS_LOCATION_NAME", 
              "value": "[parameters('location')]"
            },
            {
              "name": "WORKFLOWS_RESOURCE_GROUP_NAME", 
              "value": ""
            },
            {
              "name": "BLOB_CONNECTION_RUNTIMEURL", 
              "value": ""
            }              
          ]
        },
        "clientAffinityEnabled": false
      }
    },
{
      "type": "Microsoft.Resources/deploymentScripts",
      "apiVersion": "2020-10-01",
      "kind": "AzurePowerShell",
      "name": "newdeploj",
      "location": "[parameters('location')]",
      "properties": {
        "azPowerShellVersion": "3.0",
        "scriptContent": "Set-AzLogicApp -ResourceGroupName <resourceGroup> -Name <logicAppName> -DefinitionFilePath .\\schemadef.json",
        "forceUpdateTag": "utcNow()",
        "retentionInterval": "PT4H"
      }
    }
  ],
  "outputs": {
    "logicAppSystemAssignedIdentityTenantId": {
      "type": "string",
      "value": "[subscription().tenantid]"
    },
    "logicAppSystemAssignedIdentityObjectId": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.Web/sites', parameters('logicAppName')),'2019-08-01', 'full').identity.principalId]"
    },
    "LAname": {
      "type": "string",
      "value": "[parameters('logicAppName')]"
    }
  }
}

enter image description here

参考Lekman的博客

© www.soinside.com 2019 - 2024. All rights reserved.