Экземпляр контейнера запускается только при первом развертывании из шаблона ARM - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь создать учетную запись хранения с общей папкой через шаблон ARM.Для этого я создаю учетную запись хранения и затем запускаю команду CLI az в экземпляре контейнера, , как описано здесь .

Шаблон развертывается просто отлично, но проблемаявляется то, что контейнер запускается только при первом запуске.Последующие развертывания не приводят к запуску экземпляра контейнера, и, таким образом, если общий файловый ресурс был удален (люди делают ошибки), он не воссоздается.

Я не могу использовать полное развертывание, поскольку есть другие ресурсыв группе ресурсов.

Я проконсультировался с документацией , но там, похоже, ничего об этом нет.

Есть ли способ сообщить контейнеруэкземпляр, чтобы всегда запускаться?

Вот пример шаблона, который я использую -

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[uniquestring(resourceGroup().id)]",
      "metadata": {
        "description": "Storage Account Name"
      }
    },
    "fileShareName": {
      "type": "string",
      "metadata": {
        "description": "File Share Name"
      }
    },
    "containerInstanceLocation": {
      "type": "string",
      "defaultValue": "[parameters('location')]",
      "allowedValues": [
        "westus",
        "eastus",
        "westeurope",
        "southeastaisa",
        "westus2"
      ],
      "metadata": {
        "description": "Container Instance Location"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "variables": {
    "image": "microsoft/azure-cli",
    "cpuCores": "1.0",
    "memoryInGb": "1.5",
    "containerGroupName": "createshare-containerinstance",
    "containerName": "createshare"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[parameters('storageAccountName')]",
      "apiVersion": "2017-10-01",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "Storage",
      "properties": {}
    },
    {
      "name": "[variables('containerGroupName')]",
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2018-02-01-preview",
      "location": "[parameters('containerInstanceLocation')]",
      "dependsOn": [
        "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
      ],
      "properties": {
        "containers": [
          {
            "name": "[variables('containerName')]",
            "properties": {
              "image": "[variables('image')]",
              "command": [
                "az",
                "storage",
                "share",
                "create",
                "--name",
                "[parameters('fileShareName')]"
              ],
              "environmentVariables": [
                {
                  "name": "AZURE_STORAGE_KEY",
                  "value": "[listKeys(parameters('storageAccountName'),'2017-10-01').keys[0].value]"
                },
                {
                  "name": "AZURE_STORAGE_ACCOUNT",
                  "value": "[parameters('storageAccountName')]"
                }
              ],
              "resources": {
                "requests": {
                  "cpu": "[variables('cpuCores')]",
                  "memoryInGb": "[variables('memoryInGb')]"
                }
              }
            }
          }
        ],
        "restartPolicy": "OnFailure",
        "osType": "Linux"
      }
    }
  ]
}

1 Ответ

0 голосов
/ 19 февраля 2019

Что делать, если вы вручную удаляете ACI из портала Azure или через промежуток времени, используя удаление контейнера z.Как я понимаю, контейнерные экземпляры Azure предназначены для одноразового использования.Обычно я просто удаляю старый контейнер, когда хочу развернуть новый.Конечно, это обычно делается конвейером CI & CD, таким как Jenkins.

EDIT: ARM-шаблон запускает контейнер только в том случае, если он не находит ресурс, но потому, что он находит ACI, который он делаетничего такого.ИМХО не стоит использовать ARM-шаблоны для управления контейнерами.

...