Конфигурация приложения 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
Другие вопросы по тегам