Есть ли способ получить доступ к связанному шаблону в частном хранилище BLOB-объектов с помощью «listkeys». Таким образом, мне не нужно генерировать токен SAS каждый раз при развертывании. Что-то вроде:
"Concat('DefaultEndpointsProtocol=https;AccountName=',variables('StorageAccountName'),';AccountKey=',listKeys(resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', variables('StorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]"
To go in:
"parameters": {
"sasToken": { "type": "securestring" }
},
"resources": [
{
"apiVersion": "2017-05-10",
"name": "linkedTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "incremental",
"templateLink": {
"uri": "[concat('https://storagecontosotemplates.blob.core.windows.net/templates/helloworld.json', parameters('sasToken'))]",
"contentVersion": "1.0.0.0"
}
}
}
],
В документе MS об этом не упоминается, но его можно было бы легко развернуть без создания токена.
В ответ на вопрос Тому, почему я не могу использовать keyVault, потому что он по-прежнему требует его ввода. Вот код токена, который должен быть внутри параметров:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"adminUsername": {
"value": "cmdbAdmin"
},
"adminPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/c8727b53-932a-4f48-9fa1-00765c554992/resourceGroups/AnsibleTest1/providers/Microsoft.KeyVault/vaults/ansibletest"
},
"secretName": "adminPassword"
}
},
... и это выглядит так в шаблонах Azure. Как видите, вам все равно нужно будет ввести некоторые учетные данные :(