我正在尝试学习 Azure 资源模板,并尝试了解何时使用它们以及何时使用 REST API 背后的工作流。
我的感觉是,在 Azure 中创建虚拟网络和子网是一种相当少见的情况,一旦您按照自己的意愿进行设置,就不会过于频繁地对其进行修改,您就可以将内容部署到该结构中。
因此,关于 ARM 模板,假设我有一个包含 VNET 和子网资源的模板。以https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-template-walkthrough#virtual-network-and-subnet为例,我可能有:
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('vnetName')]",
"location": "[resourceGroup().location]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
},
"subnets": [
{
"name": "[variables('subnetName')]",
"properties": {
"addressPrefix": "10.0.0.0/24"
}
}
]
}
}
我将其部署到资源组。假设我然后添加一个负载均衡器并重新部署模板。在这种情况下,用户会被要求再次提供 vnetName 参数的值,当然不能提供相同的值,所以我们最终会得到另一个 VNET,这不是我们想要的。
那么,您一次性定义您的 ARM 模板(VNET、LB、子网、NIC 等)然后部署的工作流程是什么?然后,当您想要部署 VM、规模集等时,您使用 REST API 部署然后到资源组/VNET 子网?或者有没有办法逐步构建一个 ARM 模板并多次部署它,如果 VNET 已经存在(例如),则不会提示用户提供另一个模板的详细信息?
我已经阅读并看到了增量模式(除非指定完整,否则默认)但不确定这是否相关以及如何使用它。
非常感谢您的帮助!
更新
好的,所以我现在可以使用azure group deployment create -f azuredeploy.json -g ARM-Template-Tests -m Incremental
并修改了我的模板中的 VNET 资源
{
"apiVersion": "2016-09-01",
"type": "Microsoft.Network/virtualNetworks",
"name": "[variables('virtualNetworkName')]",
"location": "[resourceGroup().location]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('addressPrefix')]"
]
},
"subnets": [
{
"name": "[variables('subnetName')]",
"properties": {
"addressPrefix": "[variables('subnetPrefix')]"
}
}
]
}
},
到
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('virtualNetworkName')]",
"location": "[resourceGroup().location]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('addressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet1Name')]",
"properties": {
"addressPrefix": "[parameters('subnet1Prefix')]"
}
},
{
"name": "[parameters('gatewaySubnet')]",
"properties": {
"addressPrefix": "[parameters('gatewaySubnetPrefix')]"
}
}
]
}
},
但子网不会改变。他们应该使用azure group deployment create -f azuredeploy.json -g ARM-Template-Tests -m Incremental