繁体   English   中英

ARM 模板使用现有 VNet 和子网创建 VM

[英]ARM template to create a VM using an existing VNet and subnet

最近我开始学习/使用 ARM 模板和 JSON 所以我完全是新手。 我被要求制作一个模板来创建一个虚拟机,并在订阅中选择现有的虚拟网络和子网。

一切正常,除了每当我进行部署时,模板都会创建一个具有随机名称的新 vnet 和子网,而不是让我从现有的 vnet 和子网中选择(尽管 VM 可以正确创建)。

我使用https://github.com/Azure/azure-quickstart-templates/blob/master/101-vm-simple-rhel/azuredeploy.json快速入门模板作为基础并添加了几行(我将在下面放置)让我像使用 VM 名称一样键入我的 vnet 和子网的名称,但即使我正确键入了名称,它也会不断创建新的名称。

我在参数部分的代码中添加的行是:

"virtualNetworkName": {
    "type": "string",
    "metadata": {
        "description": "VNet to which the VM will connect."
    }
},
"subnetName": {
    "type": "string",
    "metadata": {
        "description": "Subnet to which the VM will connect."
    }
}

提前感谢您的宝贵时间!

要基于您使用的快速入门模板创建具有现有 VNet 的 VM,您只需删除resources块中的虚拟网络资源及其依赖关系以及除变量subnetRef之外的有关 VNet 和子网的所有变量,然后更改如果 VNet 与 VM 位于同一资源组中,则此变量与您的参数类似:

"subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]",

如果现有 VNet 在另一个资源组但在同一个订阅中,则应按如下方式更改变量subnetRef

"subnetRef": "[resourceId('otherResourceGroup', 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]",

根据更改,模板将使用现有的 VNet 和子网,而不是创建新的。

看看这个样本:

https://github.com/Azure/azure-quickstart-templates/tree/master/100-marketplace-sample

它展示了如何在模板中的资源上使用新/现有/无资源的模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM