Как исправить шаблон пиринга vNet

Я использую вложенные шаблоны для создания узлового и распределенного сетевого развертывания Azure. У меня есть 3 вложенных шаблона, и в настоящее время он создает по одному. Когда я создаю пиринги vNet, другие виртуальные сети не созданы, поэтому первый вложенный шаблон не завершается, потому что он пытается ссылаться на несуществующую виртуальную сеть. Я пробовал использовать зависимость до пирингов vNet, хотя он не может сказать, что ресурсы никогда не упоминаются в шаблонах.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/Microsoft.Resources.json",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vnetName": {
            "type": "string",
            "metadata": {
                "description": "VNet name"
            }
        },
        "vnetAddressPrefix": {
            "type": "string",
            "metadata": {
                "description": "Address prefix"
            }
        },
        "internalvNetName": {
            "type": "string",
            "metadata": {
                "description": "Internal vNet Name"
            }
        },
        "internalvNetAddressPrefix": {
            "type": "string",
            "metadata": {
                "description": "Internal vNet Address Prefix"
            }
        },
        "internal-subnet1Prefix": {
            "type": "string",
            "metadata": {
                "description": "Subnet 1 prefix"
            }
        },
        "internal-subnet1": {
            "type": "string",
            "metadata": {
                "description": "internal Subnet 1 Name"
            }
        },
        "internal-NSG": {
            "type": "string",
            "metadata": {
                "description": "internal NSG Name"
            }
        },
        "DMZResourceGroup": {
            "type": "string",
            "metadata": {
                "description": "resource group for DMZ environment"
            }
        },
        "HUBResourceGroup": {
            "type": "string",
            "metadata": {
                "description": "resource group for HUB environment"
            }
        },
        "internalServersRG": {
            "type": "string",
            "metadata": {
                "description": "resource group for Internal servers"
            }
        },
        "DMZvnet": {
            "type": "string",
            "metadata": {
                "description": "VNet for DMZ environment"
            }
        },
        "DMZvnetAddressPrefix": {
            "type": "string",
            "metadata": {
                "description": "DMZ VNet Address prefix"
            }
        },
        "DMZFESubnet1Prefix": {
            "type": "string",
            "metadata": {
                "description": "Subnet1 for DMZ environment. This is the Front-End subnet"
            }
        },
        "DMZBESubnet2Prefix": {
            "type": "string",
            "metadata": {
                "description": "Subnet1 for DMZ environment. This is the Back-End subnet"
            }
        },
        "DMZNSG": {
            "type": "string",
            "metadata": {
                "description": "NSG for DMZ environment"
            }
        },
        "DMZFEsubnetName": {
            "type": "string",
            "metadata": {
                "description": "Front-End subnet for DMZ environment"
            }
        },
        "DMZBEsubnetName": {
            "type": "string",
            "metadata": {
                "description": "Back-End subnet for DMZ environment"
            }
        },
        "subnet1Prefix": {
            "type": "string",
            "metadata": {
                "description": "Subnet 1 prefix"
            }
        },
        "subnet1Name": {
            "type": "string",
            "metadata": {
                "description": "Subnet 1 Name"
            }
        },
        "subnet2Prefix": {
            "type": "string",
            "metadata": {
                "description": "Subnet 2 Prefix"
            }
        },
        "subnet2Name": {
            "type": "string",
            "metadata": {
                "description": "Subnet 2 Name"
            }
        },
        "subnet3Prefix": {
            "type": "string",
            "metadata": {
                "description": "Subnet 3 Prefix"
            }
        },
        "subnet3Name": {
            "type": "string",
            "metadata": {
                "description": "Subnet 3 Name"
            }
        },
        "networkSecurityGroupName": {
            "type": "string"
        }
    },
    "variables": {
        "location": "West Europe",
        "HUBvNettoDMZvNet": "[concat(parameters('VNetName'), '-', parameters('DMZvnet'))]",
        "DMZvNettoHUBvNet": "[concat(parameters('DMZvnet'), '-', parameters('VNetName'))]"
    },
    "resources": [
        {
            "name": "[parameters('DMZResourceGroup')]",
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2018-05-01",
            "location": "[variables('Location')]",
            "tags": {},
            "properties": {}
        },
        {
            "name": "[parameters('HUBResourceGroup')]",
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2018-05-01",
            "location": "[variables('Location')]",
            "tags": {},
            "properties": {}
        },
        {
            "name": "[parameters('internalserversrg')]",
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2018-05-01",
            "location": "[variables('Location')]",
            "tags": {},
            "properties": {}
        },
        {
            "apiVersion": "2017-05-10",
            "name": "hubtemplate",
            "type": "Microsoft.Resources/deployments",
            "resourceGroup": "[parameters('Hubresourcegroup')]",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/resourceGroups/', parameters('HUBResourceGroup'))]"
            ],
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentversion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2017-06-01",
                            "type": "Microsoft.Network/virtualNetworks",
                            "name": "[parameters('vnetName')]",
                            "location": "[variables('Location')]",
                            "properties": {
                                "addressSpace": {
                                    "addressPrefixes": [
                                        "[parameters('vnetAddressPrefix')]"
                                    ]
                                },
                                "subnets": [
                                    {
                                        "name": "[parameters('subnet1Name')]",
                                        "properties": {
                                            "addressPrefix": "[parameters('subnet1Prefix')]"
                                        }
                                    },
                                    {
                                        "name": "[parameters('subnet2Name')]",
                                        "properties": {
                                            "addressPrefix": "[parameters('subnet2Prefix')]"
                                        }
                                    },
                                    {
                                        "name": "[parameters('subnet3Name')]",
                                        "properties": {
                                            "addressPrefix": "[parameters('subnet3Prefix')]"
                                        }
                                    }
                                ]
                            }
                        },
                        {
                            "name": "[concat(parameters('vnetname'), '/peered-to-', parameters('dmzvnet'))]",
                            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
                            "apiVersion": "2018-08-01",
                            "location": "[variables('location')]",
                            "dependsOn": [
                                "[concat('Microsoft.Network/virtualNetworks/', parameters('VNetName'))]"
                            ],
                            "properties": {
                                "allowVirtualNetworkAccess": true,
                                "allowForwardedTraffic": true,
                                "allowGatewayTransit": true,
                                "useRemoteGateways": false,
                                "remoteVirtualNetwork": {
                                    "id": "[concat(subscription().id, '/resourceGroups/', parameters('DMZresourcegroup'), '/providers/Microsoft.Network/virtualNetworks/', parameters('DMZvNet'))]"
                                }
                            }
                        },
                        {
                            "name": "[concat(parameters('vnetname'), '/peered-to-', parameters('internalvNetName'))]",
                            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
                            "apiVersion": "2018-08-01",
                            "location": "[variables('location')]",
                            "dependsOn": [
                                "[concat('Microsoft.Network/virtualNetworks/', parameters('VNetName'))]"
                            ],
                            "properties": {
                                "allowVirtualNetworkAccess": true,
                                "allowForwardedTraffic": true,
                                "allowGatewayTransit": true,
                                "useRemoteGateways": false,
                                "remoteVirtualNetwork": {
                                    "id": "[concat(subscription().id, '/resourceGroups/', parameters('internalServersRG'), '/providers/Microsoft.Network/virtualNetworks/', parameters('internalvNetName'))]"
                                }
                            }
                        },
                        {
                            "apiVersion": "2015-06-15",
                            "type": "Microsoft.Network/networkSecurityGroups",
                            "name": "[parameters('networkSecurityGroupName')]",
                            "location": "[variables('location')]",
                            "properties": {
                                "securityRules": [
                                    {
                                        "name": "allow-rdp",
                                        "properties": {
                                            "description": "allow rdp",
                                            "protocol": "*",
                                            "sourcePortRange": "*",
                                            "destinationPortRange": "3389",
                                            "sourceAddressPrefix": "*",
                                            "destinationAddressPrefix": "10.1.1.0",
                                            "access": "Allow",
                                            "priority": 110,
                                            "direction": "Inbound"
                                        }
                                    },
                                    {
                                        "name": "allow-smb",
                                        "properties": {
                                            "description": "allow smb",
                                            "protocol": "*",
                                            "sourcePortRange": "*",
                                            "destinationPortRange": "445",
                                            "sourceAddressPrefix": "*",
                                            "destinationAddressPrefix": "10.1.1.0",
                                            "access": "Allow",
                                            "priority": 112,
                                            "direction": "Inbound"
                                        }
                                    }
                                ]
                            }
                        }
                    ],
                    "outputs": {}
                }
            }
        },
        {
            "apiVersion": "2017-05-10",
            "name": "dmztemplate",
            "type": "Microsoft.Resources/deployments",
            "resourceGroup": "[parameters('DMZresourcegroup')]",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/resourceGroups/', parameters('DMZResourceGroup'))]",
                "HUBTemplate"
            ],
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentversion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2017-06-01",
                            "type": "Microsoft.Network/virtualNetworks",
                            "name": "[parameters('DMZvNet')]",
                            "location": "[variables('Location')]",
                            "properties": {
                                "addressSpace": {
                                    "addressPrefixes": [
                                        "[parameters('DMZvNetaddressPrefix')]"
                                    ]
                                },
                                "subnets": [
                                    {
                                        "name": "[parameters('DMZFEsubnetName')]",
                                        "properties": {
                                            "addressPrefix": "[parameters('DMZFESubnet1Prefix')]"
                                        }
                                    },
                                    {
                                        "name": "[parameters('DMZBEsubnetName')]",
                                        "properties": {
                                            "addressPrefix": "[parameters('DMZBESubnet2Prefix')]"
                                        }
                                    }
                                ]
                            }
                        },
                        {
                            "name": "[concat(parameters('dmzvnet'), '/peered-to-', parameters('vnetname'))]",
                            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
                            "apiVersion": "2018-08-01",
                            "location": "[variables('location')]",
                            "dependsOn": [
                                "[concat('Microsoft.Network/virtualNetworks/', parameters('dmzvnet'))]"
                            ],
                            "properties": {
                                "allowVirtualNetworkAccess": true,
                                "allowForwardedTraffic": true,
                                "allowGatewayTransit": true,
                                "useRemoteGateways": false,
                                "remoteVirtualNetwork": {
                                    "id": "[concat(subscription().id, '/resourceGroups/', parameters('HUBResourceGroup'), '/providers/Microsoft.Network/virtualNetworks/', parameters('vnetname'))]"
                                }
                            }
                        },
                        {
                            "name": "[concat(parameters('dmzvnet'), '/peered-to-', parameters('internalvNetName'))]",
                            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
                            "apiVersion": "2018-08-01",
                            "location": "[variables('location')]",
                            "dependsOn": [
                                "[concat('Microsoft.Network/virtualNetworks/', parameters('dmzvnet'))]"
                            ],
                            "properties": {
                                "allowVirtualNetworkAccess": true,
                                "allowForwardedTraffic": true,
                                "allowGatewayTransit": true,
                                "useRemoteGateways": false,
                                "remoteVirtualNetwork": {
                                    "id": "[concat(subscription().id, '/resourceGroups/', parameters('internalServersRG'), '/providers/Microsoft.Network/virtualNetworks/', parameters('internalvNetName'))]"
                                }
                            }
                        },
                        {
                            "apiVersion": "2015-06-15",
                            "type": "Microsoft.Network/networkSecurityGroups",
                            "name": "[parameters('DMZNSG')]",
                            "location": "[variables('location')]",
                            "properties": {
                                "securityRules": [
                                    {
                                        "name": "allow-rdp",
                                        "properties": {
                                            "description": "allow rdp",
                                            "protocol": "*",
                                            "sourcePortRange": "*",
                                            "destinationPortRange": "3389",
                                            "sourceAddressPrefix": "*",
                                            "destinationAddressPrefix": "10.0.1.0",
                                            "access": "Allow",
                                            "priority": 110,
                                            "direction": "Inbound"
                                        }
                                    }
                                ]
                            }
                        }
                    ],
                    "outputs": {}
                }
            }
        },
        {
            "apiVersion": "2017-05-10",
            "name": "internalserverstemplate",
            "type": "Microsoft.Resources/deployments",
            "resourceGroup": "[parameters('internalserversrg')]",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/resourceGroups/', parameters('internalserversrg'))]",
                "DMZTemplate"
            ],
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentversion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2017-06-01",
                            "type": "Microsoft.Network/virtualNetworks",
                            "name": "[parameters('internalvNetName')]",
                            "location": "[variables('Location')]",
                            "properties": {
                                "addressSpace": {
                                    "addressPrefixes": [
                                        "[parameters('internalvNetAddressPrefix')]"
                                    ]
                                },
                                "subnets": [
                                    {
                                        "name": "[parameters('internal-subnet1')]",
                                        "properties": {
                                            "addressPrefix": "[parameters('internal-subnet1Prefix')]"
                                        }
                                    }
                                ]
                            }
                        },
                        {
                            "name": "[concat(parameters('internalvNetName'), '/peered-to-', parameters('dmzvnet'))]",
                            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
                            "apiVersion": "2018-08-01",
                            "location": "[variables('location')]",
                            "dependsOn": [
                                "[concat('Microsoft.Network/virtualNetworks/', parameters('internalvNetName'))]"
                            ],
                            "properties": {
                                "allowVirtualNetworkAccess": true,
                                "allowForwardedTraffic": true,
                                "allowGatewayTransit": true,
                                "useRemoteGateways": false,
                                "remoteVirtualNetwork": {
                                    "id": "[concat(subscription().id, '/resourceGroups/', parameters('DMZresourceGroup'), '/providers/Microsoft.Network/virtualNetworks/', parameters('DMZvNet'))]"
                                }
                            }
                        },
                        {
                            "name": "[concat(parameters('internalvNetName'), '/peered-to-', parameters('vnetname'))]",
                            "type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
                            "apiVersion": "2018-08-01",
                            "location": "[variables('location')]",
                            "dependsOn": [
                                "[concat('Microsoft.Network/virtualNetworks/', parameters('internalvNetName'))]"
                            ],
                            "properties": {
                                "allowVirtualNetworkAccess": true,
                                "allowForwardedTraffic": true,
                                "allowGatewayTransit": true,
                                "useRemoteGateways": false,
                                "remoteVirtualNetwork": {
                                    "id": "[concat(subscription().id, '/resourceGroups/', parameters('HUBresourceGroup'), '/providers/Microsoft.Network/virtualNetworks/', parameters('vnetname'))]"
                                }
                            }
                        },
                        {
                            "apiVersion": "2015-06-15",
                            "type": "Microsoft.Network/networkSecurityGroups",
                            "name": "[parameters('internal-NSG')]",
                            "location": "[variables('location')]",
                            "properties": {
                                "securityRules": [
                                    {
                                        "name": "allow-rdp",
                                        "properties": {
                                            "description": "allow rdp",
                                            "protocol": "*",
                                            "sourcePortRange": "*",
                                            "destinationPortRange": "3389",
                                            "sourceAddressPrefix": "*",
                                            "destinationAddressPrefix": "10.0.1.0",
                                            "access": "Allow",
                                            "priority": 110,
                                            "direction": "Inbound"
                                        }
                                    }
                                ]
                            }
                        }
                    ],
                    "outputs": {}
                }
            }
        }
    ]
}

person Matty21202    schedule 14.01.2019    source источник
comment
хорошо, шаблон довольно большой, вы пытаетесь создать все виртуальные сети, а затем сопоставить их в одном шаблоне?   -  person 4c74356b41    schedule 14.01.2019
comment
Да, было бы разумнее создать виртуальные сети, как указано выше, а затем сопоставить их с помощью связанного шаблона или сценария PowerShell, а затем ссылаться на этот сценарий PowerShell?   -  person Matty21202    schedule 14.01.2019


Ответы (1)


Я бы сделал почти то же самое, что и вы, но я бы создал вложенные шаблоны для пирингов, потому что у вас проблемы с курицей и яйцом. вам нужно создать виртуальную сеть, дождаться появления ее соседней виртуальной сети и затем создать пиринг. но в развертывании вы можете только ждать ресурсов в том же развертывании, поэтому это практически невозможно, если вы не создадите все виртуальные сети «сразу» и не начнете связывать вещи вместе только после того, как все виртуальные сети будут готовы.

person 4c74356b41    schedule 14.01.2019
comment
Хорошо, это имеет смысл. Я создам вложенный шаблон внизу и буду использовать его специально для пирингов. Спасибо за совет! - person Matty21202; 14.01.2019
comment
Как бы вы создали вложенный шаблон только для пирингов? Вы не ссылаетесь на исходную виртуальную сеть, поэтому в настоящий момент я полагаюсь на ссылку на группу ресурсов, затем на создание виртуальной сети, а затем создание пирингов под ресурсом виртуальной сети. Если я использую вложенный шаблон внизу, я могу ссылаться только на 1 группу ресурсов, если я не создаю вложенный шаблон для каждого пиринга, который, если вам нужно сделать это для больших развертываний, может быть очень большим шаблоном! :) - person Matty21202; 14.01.2019
comment
да, ну, это уже другой вопрос, о котором вы сейчас говорите - как мне сделать это управляемым \ поддерживаемым с течением времени. есть разные варианты, я бы сказал, но они не совсем прямые - person 4c74356b41; 14.01.2019