手动制作openstack windows镜像

时间:2021-09-25 15:39:05

https://docs.openstack.org/image-guide/windows-image.html

这里以 windows 2008为例:

准备工作:

1准备好windows 2008 r2 ISO镜像文件

2 下载VirtIO网卡驱动 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

官网地址:https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html

创建KVM虚拟机

qemu-img create -f qcow2 /vm/win2008.qcow2 15G

virt-install --connect qemu:///system  --name win2008 --ram 4096 --vcpus 2 --network network=default,model=virtio --disk path=/vm/win2008.qcow2,format=qcow2,device=disk,bus=virtio --cdrom /usr/local/src/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso --disk path=/usr/local/src/virtio-win-0.1.141.iso,device=cdrom, --vnc --vncport=5993 --vnclisten=0.0.0.0 --os-type windows --os-variant win2k8 --boot cdrom

引导失败:

手动制作openstack windows镜像

处理方法:  思路选择确定boot的类型,再查看光盘的盘符顺序

把硬盘与安装镜像的dev盘符调换下

virsh destroy ws2008

vi /etc/libvirt/qemu/ws2008.xml

virsh define /etc/libvirt/qemu/ws2008.xml

virsh start s2008

再重新安装

把virtio-win-0.1.141-2.iso 与 cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso  dev盘符调换下

<boot dev='hd'/>  改成  <boot dev='cdrom'/>   ,安装好后,再把这个参数改回来

手动制作openstack windows镜像

手动制作openstack windows镜像

重启时从CDROM启动,即不要按任何键

安装网卡驱动

手动制作openstack windows镜像

手动制作openstack windows镜像

手动制作openstack windows镜像

然后用vnc连接   KVM_IP:5992

手动安装相关软件

安装Cloudbase-Init

下载 安装cloudbase-init安装 https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi

双击CloudbaseInitSetup_Stable_x64.msi

手动制作openstack windows镜像

  • Username: Administrator
  • Network adapter to configure: Red Hat VirtIO Ethernet Adapter
  • Serial port for logging: COM1

手动制作openstack windows镜像

清理完成后,系统自动关机

如果sysprep标准化关机有问题,也可以手动执行以下命令进行sysprep标准化。

c:\windows\system32\sysprep\sysprep  /oobe  /generalize  /quiet  /shutdown

配置Cloudbase-init工具

  1. 在cloudbase-init安装路径的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”的最后一行,增加配置项“netbios_host_name_compatibility=false”,使Windows系统的hostname长度支持到63个字符。
    手动制作openstack windows镜像 说明:

    NetBIOS长度受Windows系统本身的限制还只支持小于等于15个字符。

  2. 在cloudbase-init安装路径的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”中增加配置项“metadata_services=cloudbaseinit.metadata.services.httpservice.HttpService”,配置agent访问openstack数据源。
  3. (可选)当cloudbase-init为0.9.12及以上版本时,用户可以自定义配置密码长度。在cloudbase-init安装路径的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”里修改配置项“user_password_length”的值,完成密码长度的自定义配置。
  4. (可选)选择密码注入方式首次登录时,系统默认强制用户修改登录密码,若用户根据个人意愿,不需要修改首次登陆使用的登录密码时,可关闭此功能。在cloudbase-init安装路径的配置文件“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf”配置里增加配置项“first_logon_behaviour=no”。
  5. 为了防止镜像中DHCP租期过长导致创建的云服务器无法正确的获取地址,用户需要释放当前的DHCP地址。

    在windows命令行中,执行以下命令释放当前的DHCP地址。

    ipconfig /release

上传镜像:

. /etc/kolla/admin-openrc.sh

openstack image create --disk-format qcow2 --file /vm/ws2008.qcow2 WS2008 --public

virsh destroy vm_name     #强制关闭虚拟机

virsh undefine vm_name     #删除虚拟机

qemu虚拟机配置文件目录:

/etc/libvirt/qemu/

应用修改后的xml文件

virsh define /etc/libvirt/qemu/centos7.xml

查看容器的启动参数:

在容器外部,物理机上,可以用docker inspect查看或者,docker inspect container

建虚拟机实例:

指定密码,用户即上面设置的Username

元数据项,添加一个

admin_pass   值为你的密码,密码要符合复杂性要求

第一次登录系统会要求你更改密码

手动制作openstack windows镜像