openstack從win10安裝光碟ISO製作glance映象模板

openstack從win10安裝光碟ISO製作glance映象模板
測試環境:openstack mitaka 。
需要啟動 nova,glance 和 cinder 服務。

問題
Openstack是一個通用的雲端計算架構。虛擬機器的生命週期管理,涉及很多操作。官方dashboard介面提供了諸如映象匯入,建立虛擬機器,指定網路介面,掛載雲硬碟等功能。但是,dashboard沒有涉及一個重要的問題:映象從何而來?dashboard介面上並沒有提供製作虛擬機器映象模板的功能。製作kvm虛擬機器映象,一般是求助於libvirt工具,例如virt-manager。
希望在openstack平臺上解決虛擬機器模板製作問題,例如,如何在openstack製作win10虛擬機器模板?

基本思路
  1. 建立nova虛擬機器,可以從iso映象啟動,也就是從win10系統光碟啟動虛擬機器。
  2. windows系統安裝,需要載入virtio磁碟驅動,否則虛擬機器看不到硬碟。win10系統光碟不提供virtio驅動。virtio驅動光碟是一個獨立的ISO,先匯入glance,然後以cinder volume形式掛載到虛擬機器,裝置是CDROM,匯流排使用IDE。
  3. 虛擬機器硬碟以nova臨時磁碟的形式提供。在系統安裝完成之後,臨時磁碟仍然存在。利用qemu-img工具將臨時磁碟匯出為獨立映象,然後再匯入glance,作為win10虛擬機器模板。
操作過程
下載 win10 安裝光碟。進行 SHA1SUM 校驗。
054c741ded8989f4d0d419946eb37182f20e4482 cn_windows_10_multiple_editions_version_1703_updated_march_2017_x64_dvd_10194190.iso
下載 virtio 驅動光碟。例如,virtio-win-0.1.112.iso 。進行 SHA1SUM 校驗。
b4a46bec520cadc7346cb1b8e74bd4ee5f067232 virtio-win-0.1.112.iso
為 win10 光碟建立 glance 映象。
# wincd=”f5af2a14-373b-4b46-8896-d3a3421c55aa”
# openstack image create –id ${wincd} –container-format bare –disk-format iso –file cn_windows_10_multiple_editions_version_1703_updated_march_2017_x64_dvd_10194190.iso –public win10-ver1703-x64.iso

為 virtio 光碟建立 glance 映象。
# drvcd=”64d860dc-c7fc-49fb-afee-4d0e66c5d537″
# openstack image create –id ${drvcd} –container-format bare –disk-format iso –file virtio-win-0.1.112.iso –public virtio-win-0.1.112.iso
生成一個擁有臨時磁碟的 nova flavor。disk 5G用於安裝光碟ISO。臨時磁碟50G。
# flavorid=”902b0d8d-7dc0-41ec-b5ff-c4546706202c”
# openstack flavor create –id ${flavorid} –ram 4096 –disk 5 –ephemeral 50 –vcpus 2 –public install-iso
檢視neutron網路。
# neutron net-list
指定一個網路。
# netid=”c07149bb-654a-4393-a5a8-240c220cf177″
或任意指定一個
# netid=$(neutron net-list -f value –field id|head -n 1)

建立虛擬機器。用 cinder 對映 virtio-win 驅動盤。
# nova boot –image ${wincd} –flavor ${flavorid} –block-device id=${drvcd},source=image,dest=volume,bus=ide,type=cdrom,size=1 –nic net-id=${netid} install-os

接下來,安裝作業系統。直到安裝完成,然後關機。

虛擬機器的uuid。
# vmuuid=”a50cc4ff-639f-4a74-a927-276b5e1a9f09″

轉換虛擬機器臨時磁碟,儲存到合適的目錄。
# qemu-img convert -p -O qcow2 -S 4k /var/lib/nova/instances/${vmuuid}/disk.eph0 test.qcow2

建立win10模板。
# openstack image create –container-format bare –disk-format qcow2 –file test.qcow2 –public win10-template

刪除臨時映象。
# rm test.qcow2

刪除install-os虛擬機器例項。
# openstack server delete $vmuuid

現在從 glance 映象 win10-template,可以啟動 win10 虛擬機器。至此全部完成。