私は Azure Resource Templates について学習しようとしています。また、いつそれらを使用し、いつ 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 が既に存在する場合 (たとえば)、ユーザーが別の VNET の詳細を入力するように求められないように何度もデプロイする方法はありますか?
私はインクリメンタル モード (complete が指定されていない限りデフォルト) を読んで見ましたが、これが関連しているかどうか、それがどのように使用されるかはわかりません。
助けてくれてありがとう!
アップデート
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