【问题标题】:How to assign a network interface to a newly created VM with ARM Powershell?如何使用 ARM Powershell 为新创建的 VM 分配网络接口?
【发布时间】:2017-04-05 16:28:17
【问题描述】:

我正在 Azure 租约中开始使用 ARM...

首先,我创建了一个资源组,TEST-RG

我使用门户在我的资源组中创建了一个网络接口。我们在资源组TEST-RG 中称它为TEST-NIC

我还创建了一个名为TEST-VMDS2_V2 VM,运行Windows 2012 R2 和TEST-RG

如何将TEST-NICTEST-VM 关联?我在 Portal 中看不到这样做的方法,在 Portal 中也看不到创建没有网络接口的 VM 的方法,以便我以后可以添加 TEST-NIC

所以,我认为这只能在 PS 中完成,但我完全不清楚如何......

我失去了情节吗?任何指导将不胜感激。

谢谢

【问题讨论】:

  • 我一直非常小心 - 这是一个正在运行的租约。我已经尝试过查看整个门户网站,但无济于事,并且 cmdlet 很多且复杂......基本上,我不想损坏任何东西 - 我需要知道我是否错过了门户网站中的一个技巧,或者如果 cmdlet 是唯一的方法,如果是,从哪里开始。这是一个巨大的区域。
  • 那么你的最终目标是什么?如果你已经创建了一个 vm,它已经有一个 NIC。
  • 我以为那是在 OP 中?我想保持网络接口 TEST-NIC 独立并将其与一个 VM 相关联,其中 TEST-NIC 是该 VM 的唯一网络接口 - 我看不出如何在没有网络接口的情况下创建 VM(或创建一个使用预先创建的 TEST-NIC 接口)。
  • 你只能用 powershell\cli\sdk 来实现,不能用门户网站
  • 这就是我在 OP 中所说的 - 这是我需要的 PS cmdlet,我迷路了......

标签: powershell azure azureportal


【解决方案1】:

目前,Azure支持将 NIC 添加到现有 VM。

我可以在门户中看到创建没有网络的 VM 的方法吗 接口,这样我以后可以添加TEST-NIC

我们无法创建没有 NIC 的 VM,但我们可以使用 PowerShell 使用此 NIC 创建一个新 VM。

这是我用现有 NIC 创建新 VM 的脚本。

$ResourceGroupName = "nic"
$Location = "Eastus"
$StorageName = "jasondisk321"
$StorageType = "Standard_LRS"
$VMName = "myvm"
$VMSize = "Standard_DS2_v2"
$OSDiskName = $VMName + "OSDisk"
$StorageAccount = New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageName -Type $StorageType -Location $Location
$nic = Get-AzureRmNetworkInterface -Name jasonnic -ResourceGroupName $rgname
$nicId = $nic.Id 
$Credential = Get-Credential
$vm = New-AzureRmVMConfig -VMName $VMName -VMSize $VMSize
$vm = Set-AzureRmVMOperatingSystem -VM $vm -ComputerName $VMName -Windows -Credential $Credential
$vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2012-R2-Datacenter" -Version "latest"
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $OSDiskName -VhdUri $OSDiskUri -CreateOption FromImage
New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $vm

【讨论】:

  • 谢谢你 - 真的很感激 - 非常接近我想要的 - 如果我在 DS2_V2 服务器上使用 Windows 2012 R2 映像,会有很大的不同吗?
  • @Nicko 我已经更新了我的答案,请检查一下,关于 Windows 图像,我们可以在这个页面中找到。 docs.microsoft.com/en-us/azure/virtual-machines/windows/…
  • 谢谢 - 我用它作为基础,以及从 Azure 门户导出的脚本,用于现有的类似 VM,以便让自己到达那里...
【解决方案2】:

首先,您无法在没有 NIC 的情况下部署 ARM VM。

如果你看this脚本

它有线条

$Interface = New-AzureRmNetworkInterface -Name $InterfaceName `
            -ResourceGroupName $ResourceGroupName `
            -Location $Location `
            -SubnetId $VNet.Subnets[0].Id `
            -PublicIpAddressId $PIp.Id

后来被

使用
$VirtualMachine = Add-AzureRmVMNetworkInterface `
            -VM $VirtualMachine `
            -Id $Interface.Id

因此,如果您想使用现有的 NIC,您只需传递 $interface.id(来自 Get-AzureRmVMNetworkInterface)

当您将这两个包装在 VM 部署脚本的其余部分时,您将构建一个带有 NIC 的 VM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 2018-06-21
    • 2019-03-10
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2015-12-05
    • 2010-09-25
    相关资源
    最近更新 更多