我们正在使用ARM模板在Azure租户中部署资源。 在模板中,我们做了一些像这样的变量表达式
"rscPrefix": "[concat(parameters('regionCode'),parameters('entity'))]"
将模板发送到Test-AzureRmResourceGroupDeployment或New-AzureRmResourceGroupDeployment时,这些json表达式的替换效果很好。
我的问题是在powershell中检索解释的值,以启动无法在arm中完成的其他azure命令。
答案 0 :(得分:0)
根据启动模板的方式,您可以解析参数文件,也可以仅使用powershell中的相同输入来计算这些参数,另一种选择是使用模板输出来输出这些值并使用powershell读取它们:>
Get-AzResourceGroupDeployment -ResourceGroupName xxx -Name zzz
,您将在输出属性下拥有所有输出。
答案 1 :(得分:0)
这就是我所做的。 我工作的公司有对象命名约定。 用于获得这些名称的公式位于arm模板中,我不想在powershell中实现另一段代码来重做这些公式。
所以我创建了一个带有空资源的手臂模板文件。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"regionCode": {
"type": "string",
"defaultValue": "we"
},
"entity": {
"type": "string",
"defaultValue": "cdo"
},
"environment": {
"type": "string",
"defaultValue": "stag",
"allowedValues": [
"dev",
"test",
"stag",
"prod"
]
},
"plateform": {
"type": "string",
"defaultValue": "hub"
}
},
"variables": {
"rscPrefix": "[concat(parameters('regionCode'),parameters('entity'))]",
"cosmosDB": "[concat(variables('rscPrefix'),'cdb',parameters('environment'),parameters('plateform'))]"
},
"resources": [],
"outputs": {
"cosmosDB": {
"type": "string",
"value": "[variables('cosmosDB')]"
}
}
}
获取输出:
$paramsOutputJson= az group deployment create --name "AzConfiguration" --resource-group "YourGroupName" --template-file "$templateFilePath" --parameters "$parametersFilePath"
我可以轻松地在devops中操纵此配置,并使多个手臂模板上的某些部分保持相同,并通过powershell命令使用相同的配置。