Я пытаюсь настроить архитектуру в Azure с помощью скрипта Powershell. Но у меня неожиданная ошибка, сообщающая, что запрос: «ReasonPhrase: Bad Request»
Моя единственная документация для этого проекта - документ Microsoft. Здесь я нашел эту команду и пример сценария для создания виртуальной машины с powershell.
Моя настоящая проблема заключается в том, что этот командлет работает, когда я использую скрипт, который создает одну виртуальную машину за один прогон. Но в этом сценарии я хочу сначала создать все сетевые интерфейсы, а затем объединить их со своей виртуальной машиной.
$LocationName = "West Europe"
$ResourceGroupName = "RGPackage01","RGLab01","RGFileStock01"
######################Variable des machines##################################
<#
.Explication:
Toutes les variables relatives aux configuration des os
#>
$VMSize = "Standard_DS3"
###################### Variable de réseau ####################################
<#
.Explication:
Il faut un nom DNS pour chaque machine,
mettre en place le nom et la configuration des réseau et VLAN
#>
$DNSNameLabel = "cdsvm" # .westeurope.cloudapp.azure.com
$NetworkName = "VnCDS"
$NICName = "MyNIC1","MyNIC2","MyNIC3"
$PublicIPAddressName = "MyPIP"
$SubnetName = "SubnetPacakger","SubnetTestPacakger","SubnetLABSCCM","SubnetLABLibre"
$SubnetAddressPrefix = "10.30.40.0/26","10.30.40.64/26","10.30.40.128/26","10.30.40.192/26"
$VnetAddressPrefix = "10.30.40.0/24"
##################### Création des groupes de Ressources ###########################
<#
.Explication:
Utilisation d'une boucle pour créer les différents groupe de ressources defini dans la nomenclature
#>
for($i=0;$i -le 2;$i++){
Create-NewRG -matricule $ResourceGroupName[$i] -localisation $LocationName
write-host "Creating RG : $($ResourceGroupName[$i])" -ForegroundColor Green
}
##################### Création du réseau ##########################################
<#
.Explication:
Utilisation de boucle pour créer les différents sous réseau défini dans l'adressage reseau
#>
$SubnetPacakger = New-AzureRmVirtualNetworkSubnetConfig
-Name $Subnetname[0]
-AddressPrefix $SubnetAddressPrefix[0]
$SubnetTestPacakger = New-AzureRmVirtualNetworkSubnetConfig
-Name $Subnetname[1]
-AddressPrefix $SubnetAddressPrefix[1]
$SubnetLABSCCM = New-AzureRmVirtualNetworkSubnetConfig
-Name $Subnetname[2]
-AddressPrefix $SubnetAddressPrefix[2]
$SubnetLABLibre = New-AzureRmVirtualNetworkSubnetConfig
-Name $Subnetname[3]
-AddressPrefix $SubnetAddressPrefix[3]
$SubnetGlossaire = $SubnetPacakger,$SubnetTestPacakger,$SubnetLABSCCM,$SubnetLABLibre
$Vnet = New-AzureRmVirtualNetwork
-Name $NetworkName
-ResourceGroupName $ResourceGroupName[0]
-Location $LocationName
-AddressPrefix $VnetAddressPrefix
-Subnet $SubnetGlossaire
###################### Création des interfaces réseau ##############################
<#
.Explication:
Creation des interfaces réseau/carte réseau des machines virtuels
#>
$PIP = New-AzureRmPublicIpAddress
-Name $PublicIPAddressName
-DomainNameLabel $DNSNameLabel
-ResourceGroupName $ResourceGroupName[0]
-Location $LocationName
-AllocationMethod Dynamic
$NIC = New-AzureRmNetworkInterface
-Name $NICName[0]
-ResourceGroupName $ResourceGroupName[0]
-Location $LocationName
-SubnetId $Vnet.Subnets[0].Id
-PublicIpAddressId $PIP.Id
Это сейчас работает, проблема была в том, что сетевому интерфейсу нужна подсеть для создания. Я не создал подсеть, а только виртуальную сеть.
Поэтому я сначала создаю конфигурацию из 4 подсетей с New-AzureRmVirtualNetworkSubnetConfig
и связываю их с виртуальной сетью, когда я ее создал New-AzureRmVirtualNetwork -Subnet
.
Теперь в команде New-AzureRmNetworkInterface
я могу прямо в аргументе -SubnetId $Vnet.Subnets[0].Id
.
Он будет искать первый идентификатор подсети в виртуальной сети.