Конфигурация приложения Azure: получение PrimaryKey в шаблоне руки
Я извлек шаблон ARM, принадлежащий предварительной версии конфигурации приложения Azure, и устанавливаю его в наш репозиторий IaC - пока все хорошо.
Наш следующий логический шаг - добавить AppConfiguration.PrimaryKey в наше хранилище ключей. Однако я не знаю название этого объекта размещения и не могу найти в Интернете никакой информации по этому вопросу. Также я не вижу тип AppConfiguration/configurationStores, указанный в resources.azure.com (при условии, что он все еще находится в общедоступной предварительной версии).
Кто-нибудь знает, как ссылаться на первичный ключ (и, возможно, первичный ключ только для чтения), чтобы я мог ссылаться на них через переменную "output" в моем шаблоне руки?
Затем я могу позволить Az Cli/Az Powershell вставить секрет в наше Key Vault, и мы получим полную автоматизацию нашего IaC.
2 ответа
Для шаблона ARM я сделал следующее. Функция listkeys возвращает полный список всех значений, связанных с ключами. Это было трудно понять. Я надеюсь, что это помогает.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"configurationStores_instance_name": {
"defaultValue": "ac-instance",
"type": "String"
}
},
"variables": {
"apiVersionVar": "[providers('Microsoft.AppConfiguration', 'configurationStores').apiVersions[0]]",
"resourceId": "[resourceId('Microsoft.AppConfiguration/configurationStores', parameters('configurationStores_instance_name'))]",
},
"resources": [
{
"type": "Microsoft.AppConfiguration/configurationStores",
"apiVersion": "2019-10-01",
"name": "[parameters('configurationStores_instance_name')]",
"location": "northcentralus",
"sku": {
"name": "standard"
},
"properties": {}
}
],
"outputs": {
"AppConfigEndpoint": {
"type": "string",
"value": "[reference(parameters('configurationStores_instance_name')).endpoint]"
},
"AppConfigKeys": {
"type": "Array",
"value": "[listkeys(variables('resourceId'), variables('apiVersionVar')).value]"
}
}
}
надеюсь это поможет!
Я не мог понять этого.
Однако, используя команды az cli в сценарии IaC (который в любом случае вызывает шаблон руки, находящийся в хранилище Azure blob), я обошел проблему:
$connStrings = az appconfig credential list -n $configName| ConvertFrom-Json
$readOnlyConnString = ($connStrings | Where {$_.name -eq "Primary Read Only"}).connectionString
$primaryConnString = ($connStrings | Where {$_.name -eq "Primary"}).connectionString
#then
az keyvault secret set --vault-name $kvName --name $keyNameRO --value $readOnlyConnString
az keyvault secret set --vault-name $kvName --name $keyNamePrimary --value $primaryConnString