У меня есть несколько вложенных шаблонов ARM, предназначенных для развертывания с использованием Azure PS.
Единственный способ сделать это - разместить эти шаблоны в Azure blob container
, а затем сгенерировать SAS token
и отправить их2 параметра в main ARM template
(который указывает на вложенные).
Вот мой PS, который генерирует токен SAS:
$SasToken = ConvertTo-SecureString -AsPlainText -Force (New-AzureStorageContainerSASToken -Container $StorageContainerName -Context $StorageAccount.Context -Permission r -ExpiryTime (Get-Date).AddHours(4))
Вот 2 части моего сценария развертывания, которыепередать токен в основной шаблон ARM:
$Parameters['_artifactsLocationSasToken'] = $SasToken
и
New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
-ResourceGroupName $ResourceGroupName `
-TemplateFile $TemplateFile `
-TemplateParameterObject $Parameters `
-Force -Verbose `
-ErrorVariable ErrorMessages
Вот объявление для параметра приема в основной шаблон ARM:
"_artifactsLocationSasToken": {
"type": "securestring"
}
Вот шаблон вложенного ресурса (который является БД космоса) в том же главном шаблоне ARM:
{
"apiVersion": "2017-05-10",
"dependsOn": [
"[concat('Microsoft.Resources/deployments/', variables('vnetConfig').Name)]"
],
"name": "[variables('cosmosDbConfig').Name]",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('nestedTemplatesFolder'), '/cosmosdb.json', parameters('_artifactsLocationSasToken'))]"
},
"parameters": {
"cosmosDbConfig": {
"value": "[variables('cosmosDbConfig')]"
}
}
},
"type": "Microsoft.Resources/deployments"
}
Когда я запускаю их, я получаю эту ошибку:
Ошибка: Код = InvalidTemplate;Сообщение = Проверка шаблона развертывания завершилась неудачно: 'Предоставленное значение для параметра шаблона' _artifactsLocationSasToken 'в строке' 16 'и столбце' 39 'недопустимо.'
Если я введу жесткий код, SAS token
во вложенном шаблонном ресурсе (в основном шаблоне) и измените тип с securestring
на string
, это просто работает!Что мне не хватает?