インストールメディアから無理やりWin10のインスタンスを作成する方法

OpenStackのWindowsイメージを作成する手順は, 一般的にはKVMでvirtioドライバをあわせてインストールするのが標準的。
参考:https://docs.openstack.org/ja/image-guide/windows-image.html

その他仮想環境(ESXi等)でWindowsをインストールして, その上でvirtioをインストールするというのも, まぁあり。

今回は無理やりOpenStack上でisoインストーラからWindowsをインストールして起動させるということを試した。

手順

1. isoイメージを登録
2. flavorを作成
3. インスタンス起動

と普通のながれだけれども, metadataとしてhw_disk_busとhw_cdrom_busとhw_vif_modelを指定することがポイントとなる。
メタデータは「hw_disk_bus=ide」「hw_cdrom_bus=ide」hw_vif_model=e1000」を設定する。
メタデータについてはこちらを参照。

OpenStackはRDOのOcataでAll-in-One構成。

イメージ作成

openstack image create --disk-format iso --property hw_disk_bus=ide --property hw_cdrom_bus=ide --property hw_vif_model=e1000 --file ./Win10.iso Win10.image

フレーバー作成

openstack flavor create --ram 2048 --ephemeral 36 --vcpus 2 --property hw_disk_bus=ide --property hw_cdrom_bus=ide --property hw_vif_model=e1000 Win10

※ エフェメラルディスクが認識されるのでここはCドライブとして見せたいサイズを指定する。
※ メタデータはフレーバーでは指定しなくても動くけど, 入れたほうが反応がマシになる気がしている。(真偽不明)

インスタンス作成

openstack server create --flavor Win10 --nic --net-id=xxx --image Win10.image --property hw_disk_bus=ide --property hw_cdrom_bus=ide --property hw_vif_model=e1000 Win10

結論

instanceのメタデータ(とくにhw_disk_bus=ide)を指定すればインストールメディアからのインスタンス作成はできることが分かった。
とりあえず動けば良いのであればそれでも良さそうだけれども, どうもimageやflavorも指定した方が動きがマシな気がする。
けれどもまともに使いたいのであればvirtioドライバを入れた方がよいので, virtioドライバがもはや無いOSに対してはこの手順は有効かと思われます。(Win2000とか・・・)

metadata
hw_disk_bus=ide
metadata
hw_disk_bus=ide
metadata
hw_disk_bus=ide
metadata
hw_disk_bus=ide
flavor 有り 無し 無し 無し
image 有り 有り 無し 無し
instance 有り 有り 有り 無し
インストール可能か Yes Yes Yes No

インストール画面が出た

インスタンスのhw_disk_busがideになっていて
エフェメラルディスクがあればディスクが見える

インスタンスのhw_disk_bus=ideが無いとディスクなしで終了となる

ひとまずこんな起動もできるよ的なメモとして。