带有 VM 和子网的 Azure ARM 模板
Azure ARM Template with VM and subnet
我有一个名为 network-rg 的资源组,其中包含一个虚拟网络。我正在尝试在新资源组 vm-rg 中部署虚拟机。 VM 应连接到 network-rg 中 vnet 上的新子网。我在子网和 VM 中使用一个单一的 ARM 模板并部署到 vm-rg。 当其 vnet 位于部署的 primary/default 组以外的另一个资源组中时,如何在 ARM 模板中指定子网?
我需要使用资源组显式引用 vnet。这类似于网络接口部署在其 ipConfigurations 属性列表中引用子网 ID 的方式:
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/networkInterfaces",
"name": "[parameters('nicName')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnet1Ref')]"
}
}
}]
}
使用资源创建新资源组时,似乎无法在一个模板中创建另一个资源组中的子网。没有属性让你在其他群里引用Vnet
如果你真的想在一个模板的另一个组中创建一个新的子网,你可以看看linked and nested template。希望对您有所帮助。
您将需要添加一个变量(引用参数文件的模板中的资源)示例如下:
在 main.JSON 文件中:
{
"name": "[parameters('networkInterfaceName')]",
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2018-04-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIpAddress": {
"id": "[resourceId(parameters('resourceGroupName'),'Microsoft.Network/publicIpAddresses', parameters('publicIpAddressName'))]"
}
}
}
],
"enableAcceleratedNetworking": true,
"networkSecurityGroup": {
"id": "[resourceId(parameters('nsgResourceGroupName'), 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]"
}
}
}
在main.JSON中添加以下变量:
{
"name": "[parameters('networkInterfaceName')]",
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2018-04-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
}
}
],
}
}
然后在main.JSON文件中添加如下参数:
"parameters": {
"virtualNetworkName": {
"type": "string"
},
"subnetName": {
"type": "string"
},
在main.parameters.json中添加变量信息:
"virtualNetworkName": {
"value": "<vnet name>"
},
"resourceGroupName": {
"value": "<whatever the rg is for the Network>"
},
"subnetName": {
"value": "<subnet name>"
},
希望对您有所帮助。
我有一个名为 network-rg 的资源组,其中包含一个虚拟网络。我正在尝试在新资源组 vm-rg 中部署虚拟机。 VM 应连接到 network-rg 中 vnet 上的新子网。我在子网和 VM 中使用一个单一的 ARM 模板并部署到 vm-rg。 当其 vnet 位于部署的 primary/default 组以外的另一个资源组中时,如何在 ARM 模板中指定子网?
我需要使用资源组显式引用 vnet。这类似于网络接口部署在其 ipConfigurations 属性列表中引用子网 ID 的方式:
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/networkInterfaces",
"name": "[parameters('nicName')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnet1Ref')]"
}
}
}]
}
使用资源创建新资源组时,似乎无法在一个模板中创建另一个资源组中的子网。没有属性让你在其他群里引用Vnet
如果你真的想在一个模板的另一个组中创建一个新的子网,你可以看看linked and nested template。希望对您有所帮助。
您将需要添加一个变量(引用参数文件的模板中的资源)示例如下:
在 main.JSON 文件中:
{
"name": "[parameters('networkInterfaceName')]",
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2018-04-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIpAddress": {
"id": "[resourceId(parameters('resourceGroupName'),'Microsoft.Network/publicIpAddresses', parameters('publicIpAddressName'))]"
}
}
}
],
"enableAcceleratedNetworking": true,
"networkSecurityGroup": {
"id": "[resourceId(parameters('nsgResourceGroupName'), 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]"
}
}
}
在main.JSON中添加以下变量:
{
"name": "[parameters('networkInterfaceName')]",
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2018-04-01",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
}
}
],
}
}
然后在main.JSON文件中添加如下参数:
"parameters": {
"virtualNetworkName": {
"type": "string"
},
"subnetName": {
"type": "string"
},
在main.parameters.json中添加变量信息:
"virtualNetworkName": {
"value": "<vnet name>"
},
"resourceGroupName": {
"value": "<whatever the rg is for the Network>"
},
"subnetName": {
"value": "<subnet name>"
},
希望对您有所帮助。