Я пытаюсь развернуть учетную запись хранилища Azure вместе с неопределенным числом таблиц через шаблон ARM.
Поскольку MS еще не предоставила тип ресурса таблиц для ARM, вместо этого я использую экземпляры контейнеров Azure, чтобы развернуть контейнер с azure-cli
, а затем создать таблицу таким образом.
Как вы можете видеть в моем примере ниже, я использую итерацию свойства для создания нескольких контейнеров - по одному для каждой таблицы. Это работало до тех пор, пока не изменилось число создаваемых таблиц, а затем я начал получать ошибки.
Обновления для группы контейнеров 'your-aci-instance' недействительны. Если вы собираетесь обновить тип ОС, перезапустить политику, сетевой профиль, ресурсы ЦП, памяти или графического процессора для группы контейнеров, сначала необходимо удалить ее, а затем создать новую.
Я понимаю, о чем идет речь, но мне кажется странным, что вы можете создать группу контейнеров, но не изменять группу контейнеров внутри.
Поскольку ARM не позволяет вам удалять ресурсы, мне придется добавить шаг моего процесса развертывания вручную, чтобы убедиться, что ACI не существует, что на самом деле нежелательно.
В равной степени нежелательно было бы использовать итерацию ресурса для создания нескольких ACI - существует вероятность того, что многие ACI будут разбросаны по поводу группы ресурсов, которая никогда больше не будет использоваться.
Есть ли какая-то магия ARM, о которой я еще не знаю, которая может помочь мне создать таблицы, соответствующие следующим критериям?
- Создается только один ACI.
- Количество создаваемых таблиц может изменяться.
Примечания
Я пытался использовать итерацию переменной для создания единого массива 'command' для одного контейнера, но кажется, что 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')]"
}
}