Может ли виртуальная сеть находиться в другой группе ресурсов при создании виртуальной машины в Azure - PullRequest
0 голосов
/ 28 августа 2018

Я хочу создать виртуальную машину на виртуальной машине в ABC группе ресурсов из Image1, которая также находится в ABC группе ресурсов, используя powershell.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что виртуальная сеть находится в другой группе ресурсов, скажем, XYZ. Итак, я попробовал что-то подобное, но не сработало.

$UserName = "admin"
$Password = ConvertTo-SecureString "admin@123" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($UserName, $Password)    
New-AzureRmVm `
    -ResourceGroupName "ABC" `
    -Name "VName" `
    -ImageName "Image1" `
    -Location "West US" `
    -VirtualNetworkName "XYZ\Vnetname" `
    -SubnetName "default" `
    -Credential $psCred `
    -OpenPorts 3389

Я искал по этому вопросу, но есть ответы, если вы используете Angular CLI или создаете виртуальную машину из шаблонов. Но я хочу написать в powershell без шаблонов. Так может кто-нибудь помочь мне, пожалуйста.

Большое спасибо!

EDIT

Я пробовал это, но не смог продолжить

$UserName = "admin"
$Password = ConvertTo-SecureString "admin@123" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential($UserName, $Password)
$ResourceGroupName = "ABC"
$VMSize = "Standard_B2s"
$VMName = "VName1"
$LocationName = "West US"
$NICName = "VName123"
$VirtualNetworkName = "VNetName"
$VirtualNetworkResourceGroup = "XYZ"
$VnetAddressPrefix = "10.3.5.0/25"
$SubnetAddressPrefix = "10.3.5.0/25"
$SubnetName = "Subnet1"

$SingleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix
$Vnet = New-AzureRmVirtualNetwork -Name $VirtualNetworkName -ResourceGroupName $VirtualNetworkResourceGroup -Location $LocationName -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet
$NIC = New-AzureRmNetworkInterface -Name $NICName -ResourceGroupName $VirtualNetworkResourceGroup -Location $LocationName -SubnetId $Vnet.Subnets[0].Id

$VirtualMachine = New-AzureRmVMConfig -VMName $VMName -VMSize $VMSize
$VirtualMachine = Set-AzureRmVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $VMName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate
$VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id

New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $LocationName -VM $VirtualMachine -Verbose

$ VnetAddressPrefix = "10.3.5.0/25" и $ SubnetAddressPrefix = "10.3.5.0/25" -> не были уверены, что вводить. Итак, на портале Azure я проверил AddressRange подсети1 и установил то же значение.

Когда я запускаю эту команду, она показывает ошибку ниже.

Cannot index into a null array.
At line:17 char:1
+ $NIC = New-AzureRmNetworkInterface -Name $NICName -ResourceGroupName  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

WARNING: New-AzureRmVMConfig: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return
Standard_LRS and Premium_LRS
WARNING: Set-AzureRmVMOperationSystem: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return
Standard_LRS and Premium_LRS
Add-AzureRmVMNetworkInterface : Cannot validate argument on parameter 'Id'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At line:21 char:73
+ ... chine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id
+                                                                   ~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Add-AzureRmVMNetworkInterface], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Azure.Commands.Compute.AddAzureVMNetworkInterfaceCommand

WARNING: New-AzureRmVM: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return Standard_LRS and
 Premium_LRS
WARNING: Error occurred when choosing existing standard storage account for boot diagnostics: Sequence contains no matching element
WARNING: Since the VM is created using premium storage, new standard storage account, corpcpscps082813020, is created for boot diagnostics.
VERBOSE: Performing the operation "New" on target "Vname1".
New-AzureRmVM : Required parameter 'networkProfile' is missing (null).
ErrorCode: InvalidParameter
ErrorMessage: Required parameter 'networkProfile' is missing (null).
StatusCode: 400
ReasonPhrase: Bad Request
OperationID : b1d281a7-a1df-48f6-9983-67319267f11d
At line:23 char:1
+ New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Locati ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [New-AzureRmVM], ComputeCloudException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.NewAzureVMCommand

1 Ответ

0 голосов
/ 28 августа 2018

Да, вы можете использовать Vnet в другой группе ресурсов. Но ограничение заключается в том, что ваш Vnet и VM должны находиться в одном регионе.

Обновление

Используйте командлет PowerShell для создания виртуальной машины с использованием Vnet в другой группе ресурсов, вы можете сослаться на следующие шаги.

  1. Получить Vnet в другой группе ресурсов с помощью команды Get-AzureRmVirtualNetwork -ResourceGroupName vnetResourceGroupName -Name VnetName.
  2. Создание сетевого интерфейса, связанного с Vnet.
  3. Установить другие параметры как обычно.
  4. Создание виртуальной машины.

Сценарий ниже только для справки.

$UserName = userName
$Password = ConvertTo-SecureString password -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($UserName, $Password)

    New-AzureRmResourceGroup -Name resourceGroupName -Location location

    $PIP = New-AzureRmPublicIpAddress -Name publicIPName -DomainNameLabel publicIPDomain -ResourceGroupName resourceGroupName -Location location -AllocationMethod Dynamic
    $Vnet = $(Get-AzureRmVirtualNetwork -ResourceGroupName vnetResourceGroupName -Name VnetName)
    $NIC = New-AzureRmNetworkInterface -Name NICNName -ResourceGroupName resourceGroupName -Location location -SubnetId $Vnet.Subnets[0].Id -PublicIpAddressId $PIP.Id

    $VirtualMachine = New-AzureRmVMConfig -VMName vmName -VMSize vmSize
    $VirtualMachine = Set-AzureRmVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName conputerName -Credential $psCred -ProvisionVMAgent -EnableAutoUpdate
    $VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id

    $VirtualMachine = Set-AzureRmVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2012-R2-Datacenter' -Version latest
    New-AzureRmVm -ResourceGroupName resourceGroupName -Location location -VM $VirtualMachine 
...