通过带有应用程序上传的ARM模板部署Azure Batch

时间:2019-11-04 21:05:23

标签: azure powershell azure-batch

我通过所需的方式完成所有工作后,通过UI(门户)建立了Azure批处理帐户并导出了模板。

现在我正在尝试通过Visual Studio 2019部署此ARM模板并保持出现以下错误:

The specified application package does not exist.

ARM模板看起来不错,我已经将其与Microsoft.Batch batchAccounts/pools template reference进行了协调。我这样做是为了验证模板是否允许applicationPackages元素。

导致我的问题的模板的特定部分如下:

        "applicationPackages": [
      {
        "id": "[concat(resourceId('Microsoft.Batch/batchAccounts', parameters('batchAccounts_baeast909_name')), '/applications/logparser')]",
        "version": "2.2"
      },
      {
        "id": "[concat(resourceId('Microsoft.Batch/batchAccounts', parameters('batchAccounts_baeast909_name')), '/applications/powershellscripts')]",
        "version": "1.0"
      }
    ]

我希望这就像将应用程序zip放置在名为Applications的目录中并再次运行所有内容一样简单。遗憾的是,部署失败并出现相同的错误。

其中一条评论问我为什么要这样做。答案是我正在运行Azure Data Factory V2(ADFv2)之外的自定义活动。自定义活动通过名为LogParser.exe的可执行文件转换WebLogs,该可执行文件作为应用程序加载到批处理帐户,如下所示。我还添加了将脚本捆绑在一起作为应用程序的PowerShell脚本。

Applications loaded to Batch Account

我希望找到一种类似于部署Web应用程序的解决方案,该解决方案在此处详细介绍:Deploy Azure Web App Package using ARM

所以我的问题是: 我可以在部署ARM模板的同时部署应用程序zip吗? 如果不能,则何时部署它们,以及如何使该过程自动化?

application.json:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "configuration": {
      "type": "object",
      "metadata": {
        "description": "Configuration for this resource"
      }
    },
    "pools_1_password": {
      "type": "SecureString"
    },
    "batchAccounts_baeast909_name": {
      "defaultValue": "baeast909",
      "type": "String"
    },
    "storageAccounts_storageaccount909_externalid": {
      "defaultValue": "/subscriptions/subguid/resourceGroups/resourcegroup909/providers/Microsoft.Storage/storageAccounts/storageaccount909",
      "type": "String"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Batch/batchAccounts",
      "apiVersion": "2017-09-01",
      "name": "[parameters('batchAccounts_baeast909_name')]",
      "location": "eastus2",
      "tags": {
        "displayname": "[parameters('configuration').displayName]",
        "department": "[parameters('configuration').department]",
        "group": "[parameters('configuration').group]",
        "environment": "[parameters('configuration').environment]",
        "primaryOwner": "[parameters('configuration').primaryOwner]",
        "secondaryOwner": "[parameters('configuration').secondaryOwner]",
        "version": "[parameters('configuration').version]",
        "ms-resource-usage": "azure-cloud-shell"
      },
      "properties": {
        "autoStorage": {
          "storageAccountId": "[parameters('storageAccounts_storageaccount909_externalid')]"
        },
        "poolAllocationMode": "BatchService"
      }
    },
    {
      "type": "Microsoft.Batch/batchAccounts/pools",
      "apiVersion": "2017-09-01",
      "name": "[concat(parameters('batchAccounts_baeast909_name'), '/1')]",
      "dependsOn": [
        "[resourceId('Microsoft.Batch/batchAccounts', parameters('batchAccounts_baeast909_name'))]"
      ],
      "properties": {
        "vmSize": "STANDARD_A1",
        "interNodeCommunication": "Disabled",
        "maxTasksPerNode": 1,
        "taskSchedulingPolicy": {
          "nodeFillType": "Spread"
        },
        "deploymentConfiguration": {
          "virtualMachineConfiguration": {
            "imageReference": {
              "publisher": "microsoftwindowsserver",
              "offer": "windowsserver",
              "sku": "2016-datacenter",
              "version": "latest"
            },
            "nodeAgentSkuId": "batch.node.windows amd64",
            "dataDisks": [
              {
                "lun": 0,
                "caching": "ReadWrite",
                "diskSizeGB": 100,
                "storageAccountType": "Standard_LRS"
              }
            ]
          }
        },
        "scaleSettings": {
          "fixedScale": {
            "targetDedicatedNodes": 1,
            "targetLowPriorityNodes": 0,
            "resizeTimeout": "PT15M"
          }
        },
        "userAccounts": [
          {
            "name": "jborn",
            "elevationLevel": "NonAdmin",
            "password": "[parameters('pools_1_password')]"
          }
        ],
        "applicationPackages": [
          {
            "id": "[concat(resourceId('Microsoft.Batch/batchAccounts', parameters('batchAccounts_baeast909_name')), '/applications/logparser')]",
            "version": "2.2"
          },
          {
            "id": "[concat(resourceId('Microsoft.Batch/batchAccounts', parameters('batchAccounts_baeast909_name')), '/applications/powershellscripts')]",
            "version": "1.0"
          }
        ]
      }
    }
  ]
}

application.parameters.json:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "configuration": {
      "value": {
        "displayName": "A Batch Account",
        "department": "IT",
        "group": "Development",
        "environment": "dev",
        "primaryOwner": "user1@fred.com",
        "secondaryOwner": "user2@fred.com",
        "version": "1.0"
      }
    },
    "pools_1_password": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/subguid/resourceGroups/rgn00119/providers/Microsoft.KeyVault/vaults/keyvault909"
        },
        "secretName": "azureAdmin"
      }
    },
    "batchAccounts_jc00mdpbageu2d99_name": {
      "value": "jc00mdpbageu2d99"
    },
    "storageAccounts_jc00mdpstgeud99_externalid": {
      "value": "/subscriptions/subguid/resourceGroups/rgn00119/providers/Microsoft.Storage/storageAccounts/storageAccount909"
    }
  }
}

1 个答案:

答案 0 :(得分:1)

请按照以下步骤使用Visual Studio 2019下载和部署ARM模板:

  1. 填写创建Azure Batch帐户的详细信息,然后单击“下载自动化模板”

enter image description here

  1. 下载zip

enter image description here

编辑:为了使用ARM模板创建批处理池,您首先必须使用Azure CLI创建应用程序包,并从ARM模板中引用它来创建批处理池

# Upload and register your archive as application package
az batch application package create \
  --resource-group testrg01 \
  --name test01 \
  --application-id app01 \
  --package-file myapp-exe.zip \
  --version 1.0
# Set this version of package as default version
az batch application set \
  --resource-group testrg01 \
  --name test01 \
  --application-id app01 \
  --default-version 1.0

参考文献:

https://tsmatz.wordpress.com/2017/12/12/essential-azure-batch-with-azure-cli/

https://docs.microsoft.com/bs-latn-ba/cli/azure/batch/application/package?view=azure-cli-latest

https://docs.microsoft.com/en-us/azure/batch/batch-cli-templates

希望这会有所帮助!