Я пытаюсь развернуть учетную запись хранилища Azure вместе с неопределенным количеством таблиц с помощью шаблона ARM.
Поскольку MS еще не предоставила тип ресурса таблиц для ARM, я вместо этого использую экземпляры контейнера Azure, чтобы развернуть контейнер, на котором запущен azure-cli
, а затем таким образом создать таблицу.
Как вы можете видеть в моем примере ниже, я использую итерация свойств для создания нескольких контейнеров - по одному для каждой таблицы. Казалось, что это работает, пока количество создаваемых таблиц не изменилось, а затем я начал получать ошибки.
Обновления группы контейнеров your-aci-instance недействительны. Если вы собираетесь обновить тип операционной системы, политику перезапуска, сетевой профиль, ресурсы ЦП, памяти или графического процессора для группы контейнеров, вы должны сначала удалить ее, а затем создать новую.
Я понимаю, о чем идет речь, но мне кажется странным, что вы можете создать группу контейнеров, но не изменять группу контейнеров внутри.
Поскольку ARM не позволяет удалять ресурсы, мне пришлось бы добавить ручной шаг к моему процессу развертывания, чтобы убедиться, что ACI не существует, что на самом деле нежелательно.
Также нежелательно использовать итерация ресурсов для создания нескольких ACI - существует вероятность того, что многие ACI будут разбросаны по группе ресурсов, которые больше никогда не будут использоваться.
Есть ли какая-то магия ARM, о которой я еще не знаю, которая может помочь мне создать таблицы, отвечающие следующим критериям?
- Создается только один ACI.
- Количество создаваемых таблиц может меняться.
Примечания
Я пробовал использовать итерация переменных для создания единого массива «команд» для одного контейнера, но кажется, что ACI рассматривает все команды как один лайнер, поэтому это вызвало ошибку.
Дальнейшее чтение предполагает, что при запуске контейнера можно выполнить только одну команду.
Как запустить несколько команд при развертывании контейнера группа?
Текущая попытка
Вот фрагмент из моего шаблона ARM, показывающий, как я использовал итерация свойства, чтобы попытаться достичь моей цели.
{
"condition": "[not(empty(variables('tables')))]",
"type": "Microsoft.ContainerInstance/containerGroups",
"name": "[parameters('containerInstanceName')]",
"apiVersion": "2018-10-01",
"location": "[resourceGroup().location]",
"properties": {
"copy": [
{
"name": "containers",
"count": "[max(length(variables('tables')), 1)]",
"input": {
"name": "[toLower(variables('tables')[copyIndex('containers')])]",
"properties": {
"image": "microsoft/azure-cli",
"command": [
"az",
"storage",
"table",
"create",
"--name",
"[variables('tables')[copyIndex('containers')]]"
],
"environmentVariables": [
{
"name": "AZURE_STORAGE_KEY",
"value": "[listkeys(parameters('storageAccount_Application_Name'), '2019-04-01').keys[0].value]"
},
{
"name": "AZURE_STORAGE_ACCOUNT",
"value": "[parameters('storageAccount_Application_Name')]"
},
{
"name": "DATETIME",
"value": "[parameters('dateTime')]"
}
],
"resources": {
"requests": {
"cpu": "1",
"memoryInGb": "1.5"
}
}
}
}
}
],
"restartPolicy": "OnFailure",
"osType": "Linux"
},
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccount_Application_Name'))]"
],
"tags": {
"displayName": "Application Storage Account - Tables",
"Application": "[parameters('tagApplication')]",
"environment": "[parameters('tagEnvironment')]",
"version": "[parameters('tagVersion')]"
}
}