Передача URL в качестве параметра в шаблон ARM из CLI - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь развернуть azure ресурсы, используя шаблон Linked ARM, для которого я помещаю файл параметров и файл шаблона в хранилище BLOB-объектов. Ссылка на файл параметров и хранилище BLOB-объектов, которые мне нужно передать в качестве параметра при выполнении команды azure из CLI. Ниже приведен мой пример masterazuredeploy. json

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "templateBaseUrl": "[parameters('templateBaseUrl')]",
    "parameterBaseUrl": "[parameters('parameterBaseUrl')]",
    "keyVaultDeployTemplateUrl": "[uri(variables('templateBaseUrl'), 'keyvaultdeploy.json')]"
  },
  "resources": [
    {
      "apiVersion": "[variables('apiVersionResourceDeployment')]",
      "name": "keyVaultDeployment",
      "type": "Microsoft.Resources/deployments",
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "uri": "[variables('keyVaultDeployTemplateUrl')]"
        },
        "parametersLink": {
          "uri": "[variables('keyVaultparameterFileUrl')]"
        }
      }
    }

  ]
}

Для выполнения этого я даю следующую команду CLI:

az group deployment create --resource-group abc-devops-test --template-file .\masterazuredeploy.json  --parameters templateBaseUrl="https://test.blob.core
.windows.net/azurestackautomationtest/resourcetemplates/"  parameterBaseUrl="https://test.blob.core.windows.net/azurestackautomationtest/parameters/dev/" --verbose

При выполнении я получаю следующую ошибку:

unrecognized template parameter 'templateBaseUrl'. Allowed parameters:
command ran in 1.918 seconds.

Я пробовал значения параметров без кавычек, с одинарными кавычками. Все еще не работает. Где именно я пропускаю.

Также попробовал другой подход, поместил оба параметра в global.parameters. json, как показано ниже,

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "templateBaseUrl": {
      "value": "https://test.blob.core.windows.net/azurestackautomation/resourcetemplates/"
    },
    "parameterBaseUrl": {
      "value": "https://test.blob.core.windows.net/azurestackautomation/parameters/dev/"
    }
  }
}

и загрузил этот файл в хранилище BLOB-объектов, и заданный путь к хранилищу больших двоичных объектов в качестве параметра

az group deployment create --resource-group abc-devops-test --template-file .\masterazuredeploy.json  --parameters https://test.blob.core.windows.net/azur
estackautomationtest/parameters/dev/global.parameters.json  --verbose

Но ошибка ниже:

400 Client Error: Bad Request for url: https://management.azure.com/subscriptions/XXXX-xx-x-x-x--x-x/resourcegroups/abc-devops-test/providers/Microsoft.Resources/deployments/masterazuredeploy?api-version=2018-05-01
command ran in 5.646 seconds.

1 Ответ

2 голосов
/ 09 января 2020

Как я вижу в вашем шаблоне, вы пропускаете настройку параметров, поэтому вы вводили значения параметров в параметры шаблона, независимо от того, какую команду CLI вы указали. Но вы не установили параметры так, чтобы никакие параметры вы не могли использовать. Я предлагаю вам изменить шаблон ниже:

    {
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "templateBaseUrl": {
            "type": "string"
        },
        "parameterBaseUrl": {
            "type": "string"
        }
    },
    "variables": {
      "keyVaultDeployTemplateUrl": "[uri(parameters('templateBaseUrl'), 'keyvaultdeploy.json')]"
    },
    "resources": [
      {
        "apiVersion": "[variables('apiVersionResourceDeployment')]",    #1
        "name": "keyVaultDeployment",
        "type": "Microsoft.Resources/deployments",
        "properties": {
          "mode": "Incremental",
          "templateLink": {
            "uri": "[variables('keyVaultDeployTemplateUrl')]"
          },
          "parametersLink": {
            "uri": "[variables('keyVaultparameterFileUrl')]"     #2
          }
        }
      }

    ]
  }

И вы также пропустите установку переменных apiVersionResourceDeployment и keyVaultparameterFileUrl. Вы можете использовать как параметр, так и переменную, как вам нравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...