目前Azure上覆制VM可以有多種方法:
1 建立User Image,可以快速複製多臺VM,但目前託管磁碟只支援Generalized的模式,需要對User和配置進行重置。
2 從VHD或託管磁碟複製VM,通過Json Template、Powershell、CLI或SDK的方式等,都可以快速複製VM,但需要自己新增資料盤
本文的Powershell指令碼將通過採用對VHD或託管磁碟的複製實現對VM的複製,包括OS Disk和Data Disk。
具體實現方式:
1 讀取csv配置檔案
具體引數如下
- location:chinanorth或chinaeast
- oldrgname:源VM的資源組名稱
- vmname:源VM的名稱
- vnetrgname:新VM將要加入的VNET的資源組名稱
- vnetname:新VM將要加入的VNET的名稱
- subnetname:新VM將要加入的Subnet名稱
- newrgname:新VM的資源組名稱,如果沒有將新建
- newvmname:新VM的名稱
- DiagStorageAccountName:新VM診斷的儲存賬戶名稱,如果沒有這個儲存賬戶,將新建
- vmsize:新VM的型號
- vmStorageType:新VM的儲存型別,Standard_LRS或Premium_LRS
- osType:Linux或Windows
- avsname:Availability Set的名稱,如果沒有將新建
2 複製Disk
根據源VM的資訊,把源VM的OS Disk和Data Disk進行復制。
具體複製方式為:如果是託管磁碟,直接進行復制;如果是VHD檔案,先在同儲存賬號下建立臨時的container,把vhd檔案複製到這個container裡,再通過這個臨時container內的VHD檔案複製託管磁碟。
3 建立VM
根據引數檔案的引數建立:
- 建立NIC
- 把複製的OS Disk掛載到VM
- 建立VM
- 把Data Disk掛載到VM
具體的指令碼連結:
https://github.com/hengv/Azure/tree/master/VM/Create-vmfromvm-withdatadisk
總結:
採用Powershell把源VM的OS Disk和Data Disk進行復制,由複製的託管磁碟建立VM,實現Azure VM的複製。