我们已经创建了一个bash脚本,以基于Azure CLI和ARM模板推出Azure基础结构。
我们还使用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"
}
},
如您所见,我们正在使用静态值。但是我们需要将该模板部署到多个环境(测试,加速和生产),因此我们想使用变量而不是静态值。
它适用于大多数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"
所以问题是:
答案 0 :(得分:1)
为什么不使用az来获取机密,然后将其传递给模板。
WpPwd = az keyvault secret show --vault-name "keyvaultname" --name "WORDPRESSDBPASSWORD"
templateUri="armdeploymysql.json"
az group deployment create \
--name $Environment \
--resource-group $RSGName \
--template-file $templateUri \
--parameters "version=$version" \
"location=$location" \
"administratorLogin=$SQLAdmin" \
"administratorLoginPassword=$SQLPass"
"wordpresspassword=$WpPwd"
答案 1 :(得分:0)
针对此特定情况的最终修正(归功于@Murray Foxcroft),代码中的摘录:
keyVaultName="keyvaultname-$Environment"
keyVaultsecret="WORDPRESSDBPASSWORD"
SQLPass=$(az keyvault secret show --vault-name $keyVaultName --name $keyVaultsecret --query value -o tsv)
az group deployment create \
--name $Environment \
--resource-group $RSGName \
--template-file $templateUri \
--parameters "version=$version" \
"location=$location" \
"administratorLogin=$SQLAdmin" \
"administratorLoginPassword=$SQLPass" \
-o tsv对于避免添加普通命令传递给变量的多余字符很重要。
感谢您的帮助!