📝
既存のリソースから Azure VM を作る
既存の Disk と NIC などをつかんで Azure VM を作成する
たまにあると思うんですが、Disk と NIC を残しながら Azure VM というリソースを消して、そのうえでその Disk と NIC をつくる方法を載せておきます。
Gist に置いてあったんですが、自分でもよく見に行っていて、せっかくなので一応記事に。
Disk から Azure VM を作るのは Azure Portal からも可能ですが、NIC も流用するのは PowerShell などを使わないとたぶん無理です。
PowerShell の関数としてしまっていますが、Get-AzDisk
から New-AzVM
の部分を抜き出しても全然大丈夫です。
New-AzVM
に -DisableBginfoExtension
をつけないと余計な BgInfo が勝手に入ってしまうなどが注意です。
過去の経緯でそうなちゃってるんでしょうが、デフォルト値を disable にしてほしいですね、正直なところ。
あと、Set-AzVMOSDisk
に -Windows
という option があるので、Linux マシンであれば -Linux
に変えましょ。
Function New-AzVMFromExistingResource() {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)] [string] $ResourceGroupName,
[Parameter(Mandatory = $true)] [string] $LocationName,
[Parameter(Mandatory = $true)] [string] $VMName,
[Parameter(Mandatory = $true)] [string] $VMSize,
[Parameter(Mandatory = $true)] [string] $OSDiskName,
[Parameter(Mandatory = $true)] [string] $NICName
)
# 既存の OS Disk をつかむ
$OSDisk = Get-AzDisk -DiskName $OSDiskName -ResourceGroupName $ResourceGroupName
# 既存の NIC をつかむ
$NIC = Get-AzNetworkInterface -Name $NICName -ResourceGroupName $ResourceGroupName
# 既存のリソースを組み合わせて VM を作成する
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -ManagedDiskId $OSDisk.Id -Windows -CreateOption Attach
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id
$VirtualMachine = Set-AzVMBootDiagnostic -VM $VirtualMachine -Disable
New-AzVM -ResourceGroupName $ResourceGroupName -Location $LocationName -VM $VirtualMachine -DisableBginfoExtension
}
もともとは Gist に書いてある内容でした。
こちらでは Availability Set を指定して作るパターンですが大して差はありません。
Discussion