Получить разрешенный шаблон ARM после неудачного развертывания - PullRequest
1 голос
/ 10 апреля 2020

Можно ли получить шаблон ARM, как он был во время выполнения на портале Azure с разрешенными переменными и параметрами?

Пример ниже:

AzureDeploy. json

{
 "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
 "contentVersion": "1.0.0.0",
 "parameters": {
   "environment": {
     "type": "string",
     "defaultValue": "dev",
   },
   "storageSKU": {
     "type": "string",
     "defaultValue": "Standard_LRS",
     "allowedValues": [
       "Standard_LRS",
       "Standard_GRS",
       "Standard_RAGRS",
       "Standard_ZRS",
       "Premium_LRS",
       "Premium_ZRS",
       "Standard_GZRS",
       "Standard_RAGZRS"
     ]
   },
   "location": {
     "type": "string",
     "defaultValue": "[resourceGroup().location]"
   }
 },
  "variables": {
    "storageAccountName": "[concat('companyname',parameters('environment'),'sa01'))]"
  },
 "resources": [
   {
     "type": "Microsoft.Storage/storageAccounts",
     "apiVersion": "2019-04-01",
     "name": "[variables('storageName')]",
     "location": "[parameters('location')]",
     "sku": {
       "name": "[parameters('storageSKU')]"
     },
     "kind": "StorageV2",
     "properties": {
       "supportsHttpsTrafficOnly": true
     }
   }
 ]
}

AzureDeploy.parameters. json

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "environment": {
      "value": "dev"
    }
  }
}

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

Развертывание происходит в конвейере CD в AzureDevops, и у меня есть контроль над группами переменных et c. так что я знаю, что передается, но не как это разрешается. В более сложном шаблоне у меня есть ошибка, утверждающая, что Id не установлен в соединении API приложения Logi c, но я не могу определить, произошла ли ошибка из-за переменной, которую я использую в функции concat, или значение действительно неверно (разрешается в соответствии с данными, переданными в).

Если кто-то знаком с устранением неполадок с помощью блейда развертываний в Azure, у вас могут быть некоторые советы о том, как просмотреть более подробное представление.

Спасибо,

Редактировать:

Приведенный ниже код запускает Intellisense в Visual Studio 2019, но он был подтвержден во время развертывания. Никаких предупреждений в VS Code согласно комментариям. Для краткости большинство кодов опущено.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "environment": {
          "type": "string",
          "defaultValue": "dev"
        },
        "increment": {
          "type": "string",
          "defaultValue": "01"
        },
        "keyvaultName": {
          "type": "string",
          "defaultValue": "randomKeyVaultName",
          "metadata": {
            "description": "Keyvault Name for deployment"
          }
        }
    },
    "variables": {
        "uniqueKeyVaultName": "[parameters('keyvaultName')]"
    },
    "resources": [
        {
          "type": "Microsoft.KeyVault/vaults/secrets",
          "apiVersion": "2016-10-01",
          "name": "[concat(variables('uniqueKeyVaultName'), '/407045A0-1B78-47B5-9090-59C0AE9A96F6')]",
          "location": "northeurope",
          "dependsOn": [
            "[resourceId('Microsoft.Resources/deployments', 'cosmosdb_linkedtemplate')]"
          ],
          "properties": {
            "contentType": "Graph",
            "value": "[concat('{''D'': ''DatabaseName'', ''U'': ''https://randomcosmosdb-',parameters('environment'),'-cdb-',parameters('increment'),'.documents.azure.com'', ''C'': ''CollectionName'', ''K'': ''',reference('cosmosdb_linkedtemplate').outputs.accountKey.value,'''}')]",
            "attributes": {
              "enabled": true
            }
          }
        }
    ],
    "outputs": {}
}

Visual Studio Version

1 Ответ

2 голосов
/ 13 апреля 2020

Если вы хотите увидеть оцененный шаблон, есть несколько вещей, которые вы можете сделать, чтобы получить его без развертывания:

1) вызвать / validate api: https://docs.microsoft.com/en-us/rest/api/resources/deployments/validate - но вам нужно использовать более старую версию apiVersion (например, 2017-05-01) ... ответ будет содержать полностью оцененный шаблон. Если у вас более старая версия PowerShell или CLI, вы можете увидеть ответ от остальных API с помощью ключа -debug. Но имейте в виду, что более поздние версии PS / CLI будут использовать более новую версию apiVersion, и они не возвращают полный шаблон (в настоящее время).

2) API / whatif также возвращает оцененный JSON но есть еще кое-что, что нужно, если все, что вам нужно, это оцененный шаблон: https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-deploy-what-if

Помогите?

...