Мы создали сценарий bash для развертывания нашей инфраструктуры Azure на основе шаблонов Azure CLI и ARM.
Мы также используем keyvault для хранения наших секретов, и мы нуждаемся в нем для ссылок при развертывании ресурсов.
Пример (это работает со статическими значениями в параметрах json):
templateUri="armdeploymysql.json"
az group deployment create \
--name $Environment \
--resource-group $RSGName \
--template-file $templateUri \
--parameters @armdeploymysql-parameters.json
В armdeploymysql-parameters.json вы найдете это:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"administratorLogin": {
"value": "termysqladmin"
},
"administratorLoginPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/xxx-xxx-xxx-xxx--xx/resourceGroups/resourcegroupname/providers/Microsoft.KeyVault/vaults/keyvaultname"
},
"secretName": "WORDPRESSDBPASSWORD"
}
},
Как видите, мы используем статические значения. Но нам нужно развернуть этот шаблон для нескольких сред (Test, Acc & Prod), поэтому мы хотели бы использовать переменные вместо статических значений.
Он работает для большинства параметров ARM, и мы использовали его для настройки следующим образом:
templateUri="armdeploymysql.json"
az group deployment create \
--name $Environment \
--resource-group $RSGName \
--template-file $templateUri \
--parameters "version=$version" \
"location=$location" \
"administratorLogin=$SQLAdmin" \
"administratorLoginPassword=$SQLPass"
Итак, вопрос:
- Можем ли мы сделать ссылку на параметр, как в последнем примере, чтобы указать на keyvault?
- Как мы можем разобрать переменные в параметрах json?