openstack從win10安裝光碟ISO製作glance映象模板
阿新 • • 發佈:2019-02-10
測試環境:openstack mitaka 。
需要啟動 nova,glance 和 cinder 服務。
問題 Openstack是一個通用的雲端計算架構。虛擬機器的生命週期管理,涉及很多操作。官方dashboard介面提供了諸如映象匯入,建立虛擬機器,指定網路介面,掛載雲硬碟等功能。但是,dashboard沒有涉及一個重要的問題:映象從何而來?dashboard介面上並沒有提供製作虛擬機器映象模板的功能。製作kvm虛擬機器映象,一般是求助於libvirt工具,例如virt-manager。 希望在openstack平臺上解決虛擬機器模板製作問題,例如,如何在openstack製作win10虛擬機器模板?
基本思路
下載 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 虛擬機器。至此全部完成。
問題 Openstack是一個通用的雲端計算架構。虛擬機器的生命週期管理,涉及很多操作。官方dashboard介面提供了諸如映象匯入,建立虛擬機器,指定網路介面,掛載雲硬碟等功能。但是,dashboard沒有涉及一個重要的問題:映象從何而來?dashboard介面上並沒有提供製作虛擬機器映象模板的功能。製作kvm虛擬機器映象,一般是求助於libvirt工具,例如virt-manager。 希望在openstack平臺上解決虛擬機器模板製作問題,例如,如何在openstack製作win10虛擬機器模板?
基本思路
- 建立nova虛擬機器,可以從iso映象啟動,也就是從win10系統光碟啟動虛擬機器。
- windows系統安裝,需要載入virtio磁碟驅動,否則虛擬機器看不到硬碟。win10系統光碟不提供virtio驅動。virtio驅動光碟是一個獨立的ISO,先匯入glance,然後以cinder volume形式掛載到虛擬機器,裝置是CDROM,匯流排使用IDE。
- 虛擬機器硬碟以nova臨時磁碟的形式提供。在系統安裝完成之後,臨時磁碟仍然存在。利用qemu-img工具將臨時磁碟匯出為獨立映象,然後再匯入glance,作為win10虛擬機器模板。
下載 virtio 驅動光碟。例如,virtio-win-0.1.112.iso 。進行 SHA1SUM 校驗。 b4a46bec520cadc7346cb1b8e74bd4ee5f067232 virtio-win-0.1.112.iso
為 win10 光碟建立 glance 映象。 # wincd="f5af2a14-373b-4b46-8896-d3a3421c55aa"
為 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 虛擬機器。至此全部完成。