Развертывание пакетной службы Azure с помощью шаблона ARM с загрузкой приложения

Я создал учетную запись пакетной службы Azure через пользовательский интерфейс (портал) и экспортировал шаблон после того, как все заработало так, как я хотел.

Теперь я пытаюсь развернуть этот шаблон ARM через Visual Studio 2019 и получаю следующую ошибку:

The specified application package does not exist.

Шаблон ARM выглядит хорошо, и я согласовал его с Справочник по шаблону Microsoft.Batch batchAccounts /pool. Я сделал это, чтобы убедиться, что шаблон позволяет использовать элемент 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 V2 (ADFv2). Настраиваемое действие преобразует WebLogs через исполняемый файл с именем LogParser.exe. Этот исполняемый файл загружается как приложение в учетную запись пакетной службы, как показано ниже. Я также добавил сценарии PowerShell, которые связывают все вместе как приложение.

Приложения загружены в учетную запись пакетной обработки

Я надеялся на решение, подобное развертыванию веб-приложения, которое подробно описано здесь: Развернуть Пакет веб-приложения Azure с использованием ARM

Итак, у меня следующие вопросы: можно ли развернуть zip-архивы приложений одновременно с развертыванием шаблона ARM? Если они не могут, когда их развернуть и как автоматизировать этот процесс?

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": "[email protected]",
        "secondaryOwner": "[email protected]",
        "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"
    }
  }
}

person user2197446    schedule 04.11.2019    source источник
comment
Подскажите, пожалуйста, что такое application package?   -  person Jim Xu    schedule 05.11.2019
comment
Почему вы пытаетесь развернуть zip-архивы приложений с помощью пакетной учетной записи?   -  person AmanGarg-MSFT    schedule 05.11.2019


Ответы (1)


Выполните следующие действия, чтобы загрузить и развернуть шаблон ARM с помощью Visual Studio 2019:

  1. Заполните данные для создания учетной записи пакетной службы Azure и нажмите «Загрузить шаблон для автоматизации».

введите здесь описание изображения

  1. Загрузите zip-архив

введите здесь описание изображения

Изменить: чтобы создать пакетный пул с использованием шаблона 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

Надеюсь это поможет!

person AmanGarg-MSFT    schedule 06.11.2019
comment
Единственная часть этого, которая касается того, как развертывать пакеты приложений с помощью шаблона, - это последний пункт - даже в этом случае это развертывание в веб-приложении, а не в общем пакете приложения. Мои пакеты приложений, которые я пытаюсь развернуть вместе с пакетной службой Azure, следующие: сценарии PowerShell и LogParser.exe. Оба загружаются вручную в виде ZIP-архивов с помощью портала пользовательского интерфейса Azure. Большая часть вашего ответа подробно описывает, как извлечь шаблон из портала, что я уже сделал. В моем шаблоне есть ссылки на applicationPackages, которые должны существовать для успешного развертывания. - person user2197446; 11.11.2019
comment
Поделитесь своим шаблоном ARM в вопросе - person AmanGarg-MSFT; 11.11.2019
comment
добавлены полные application.json и application.parameters.json. Удалена информация PII с ручными обновлениями для обоих, но в остальном это код, который я пытаюсь развернуть - person user2197446; 11.11.2019
comment
Спасибо за добавление всей необходимой информации. Я отредактировал свой ответ, чтобы предоставить больше контекста. Спасибо! - person AmanGarg-MSFT; 12.11.2019