问题描述
首先介绍一些背景信息。
我正在尝试创建一个 Azure 策略,该策略使用特定标记和值搜索所有订阅中的所有 vnet。如果匹配,则应使用 azure 模板执行 DeployIfNotExist 部署,其中部署将在与 vnet 所在位置不同的订阅中运行。我正在尝试使用嵌套模板来解决此问题,但正在努力从策略中获取 vnet 名称并将其作为参数插入嵌套模板中。
尝试在 Azure 中创建定义时遇到的错误是:找不到模板参数 vnetname。
如果我将 parameters('vnetname') 替换为实际的 vnet 名称,则此策略和部署有效,并且我可以创建修复任务,以创建从集线器到其他订阅中的 vnet 的 vnet 连接。
我希望有人知道如何以不同的方式解决这个问题,或者有人发现我的代码有什么问题。下面是从部署中选择的代码。如果您需要更多代码,请告诉我:
"deployment": {
"properties": {
"mode": "Incremental","parameters": {
},"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {
},"variables": {
},"resources": [
{
"type": "Microsoft.Resources/deployments","apiVersion": "2020-10-01","name": "nestedTemplate","resourceGroup": "itp-net-pwe-rg","subscriptionId": "c8fa0a01-84d0-4999-aec3-713e02ed248c","properties": {
"mode": "Incremental","parameters":{
"vnetname": {
"value": "[[field('name')]"
}
},"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","parameters": {
"vnetname": {
"type": "string"
}
},"variables": {
},"resources": [
{
"type": "Microsoft.Network/virtualHubs/hubVirtualNetworkConnections","apiVersion": "2020-06-01","name": "itp-net-pwe-vwan-hub/source-to-hub-westeurope","location": "westeurope","dependsOn": [
],"properties": {
"remoteVirtualNetwork": {
"id": "[resourceId('Microsoft.Network/virtualNetworks',parameters('vnetname'))]" },"allowHubToRemoteVnetTransit": true,"allowRemoteVnetToUseHubVnetGateways": true,"enableInternetSecurity": false
}
}
]
}
}
}
]
解决方法
我设法通过将参数置于正确的级别来解决我自己的问题。该政策现在按预期工作。