admin
不忘初心,方得始终
级别: 管理员
只看楼主 | | | 0楼 发表于:2016-05-17 00:05

Openstack Juno平台制作Windows系统镜像

  Openstack公有云平台需要制作镜像,通过镜像创建云主机。具体过程如下:
  1.CentOS7.0底层安装KVM。
   egrep -O "(vmx|svm)" /proc/cpuinfo查看CPU底层是否支持虚拟化。
   yum -y install qemu-kvm qemu-img virt-manager libvirt libvirt-python python-virtinst libvirt-client virt-install virt-viewer bridge-utils
   rpm -qa|grep -E 'qemu|libvirt|virt'查询安装的KVM底层软件包。
   modprobe intel_kvm加载KVM模块。
   lsmod|grep kvm 查看KVM模块加载情况。
   systemctl start libvirtd启动libvirt服务。
   systemctl enable libvirtd开机自动启动libvirtd服务。
   systemctl list-unit-files |grep libvirtd查看开机自启动服务情况。
   virsh list --all或者virsh -c qemu:///system list查看虚拟机管理控制平台的连接情况。
   网卡设置桥接:具体方法是物理网卡配置文件内,添加Bridge=br0。新增网桥配置文件ifconfig-br0,里面配置网卡类型TYPE=Bridge,配置IP地址、子网掩码、网关和DNS地址。
   virt-manager打开虚拟机管理控制平台。
  2.准备创建VM镜像的系统文件:
  Windows系统的ISO文件:cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso
  VirtIO驱动包:ovirt-guest-tools-iso-3.5-7.noarch.rpm包及oVirt-toolsSetup_3.5_7.iso和oVirt Guest Tools工具条。
  Cloud-Init软件包:CloudbaseInit,下载地址为:https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi
  MobaXterm 工具:这是连接Linux系统并且可以通过virt-manager命令打开KVM虚拟机的管理器。
  3.通过virt-manager命令打开虚拟系统管理器。连接上KVM服务器后,通过编辑--连接细节--存储--分别新建ISO、VM和VM磁盘文件存放的存储池。
  4.新建虚拟机--填写VM名称,选择Local Install Media(ISO image or CDROM)。
  5.
   ISO Image选择Windows 2008R2的ISO。
   OS_TYPE选通用。
    版本选择:2008
  6.
    选择CPU和内存大小。
    高级选项:网桥br0。
    Virt Type:KVM
    架构:X86_64
    安装前自定义配置。
    新建卷--格式为RAW,并且磁盘接口类型选择VirtIO。磁盘命名规则为:Windows_2008_R2_Enterprise_x64_cn_raw.img。
  7.
    引导选项:CDROM和Hard Disk分别为第一和第二启动顺序,选择APP应用。
    Disk 1总线类型选择VirtIO
    网卡Device Model: VirtIO
  8.添加新硬件--Storage--设备类型:IDE CDROM。选择oVirt-toolsSetup_3.5_7.iso的路径。
  9.开始安装Windows系统,选择Windows Server 2008 R2 Enterprise (完全安装)。加载驱动--选择光盘目录下的drivers-virtio-win2k8r2-amd64。选择好VirtIO Ethernet Adapter、VirtIO SCSI controller和VirtIO Ballon Driver。选择磁盘,安装Windows 2008R2 系统。
  10.进入Windows系统,安装ovirt-guest-tools-setup安装包。
   开启 balloon 驱动的管理服务。(cd C:\Program Files (x86)\oVirt Guest Tools\drivers\win2k8r2\amd64,执行blnsvr.exe -i,查看状态用blnsvr.exe status)
   关闭IE增强功能(服务器管理--安全信息--关闭)
   打开Windows远程桌面功能及服务。(计算机--属性--高级系统设置--远程--远程桌面设置--允许),并且services.msc打开Remote开头的远程桌面服务,设置为自动。
   关闭防火墙。firewall.cpl关闭防火墙功能。
   下载Cloud-init软件:IE里面输入地址https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi
   输入系统序列号或者系统激活软件,激活系统。
   删除浏览器地址栏里面的浏览记录。
  在运行里面输入services.msc后打开Windows Time服务,这Wwindows时钟同步的服务。同步时钟源选择time-nw.nist.gov。
  11.安装Cloud-Init软件:
   配置选项:用户名Administrator,登录串口:COM1
  只勾选“Run Sysprep”,选择完成。
  12.本地用户和组--Administrator--属性--只勾选“密码永不过期”。
  13.修改Cloud--Init的配置文件:
   C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf 目录 :
   修改 cloudbase-init.conf:
   在 inject_user_password=true 下面添加一行 first_logon_behaviour=no
   修改 cloudbase-init-unattend.conf 文件:
    在 inject_user_password=true 下面添加一行 first_logon_behaviour=no
    将 plugins 的值改成 plugins=cloudbaseinit.plugins.common.mtu.MTUPlugin,cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugin.common.sethostname.SetHostNamePlugin
    (也就是在中间加上 cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,一定要放在 cloudbaseinit.plugin.common.sethostname.SetHostNamePlugin 前面)。
    打开 C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\sitepackages\cloudbaseinit\plugins\factory.py删掉 28 行的” 'cloudbaseinit.plugins.windows.createuser.CreateUserPlugin',”和35,36 行的“ 'cloudbaseinit.plugins.common.setuserpassword.' 'SetUserPasswordPlugin',” 保存退出后关机。
  14.镜像测试:
   上传镜像:
   glance image-create --name Windows-2008-x86_64 --disk-format raw --container-format bare --file /root/img/2008_enterprise_x64_cn.img --is-public True --progress
   或者:
  glance image-create --name "windows2008R2" --file /root/2.x_win_2008R2_64_100G.qcow2   --disk-format qcow2 --container-format bare --visibility public --progress
  glance image-update --property os_type='windows' Windows镜像的UUID。
  glance image-update是更新镜像元数据的方法解决Windows虚拟机启动后系统时间与东八区区时相差8小时的问题。
  glance image-update --property hw_cpu_max_sockets=4 Windows镜像的UUID
  glance image-update --property hw_cpu_max_sockets是为了解决windows 系统不同版本支持的 CPU 最大 socket 数量限制问题。
  创建启动卷:
   通过glance image-list查看上传的Windows 2008 企业版的镜像UUID。
   cinder create --display-name test_2008 --image-id fc0e7bc2-5290-4af5-bd83-06fa2a83d1ba 50  生成50G磁盘的UUID。
   nova flavor-list查看规格的UUID,nova net-list查看对应租户网络的UUID。
   通过底层命令新建VM:
   nova boot --flavor f85443ee-8321-435a-9ef2-204ca2d9be4a --boot-volume 009efcfa-ca47-4bfd-bbd9-83cd72ce2528 --nic net-id=c20042f4-665c-45df-b4fc-6d454ccfa2bc --meta admin_pass=admin@87long.com windows_2008或者
  nova boot --flavor ffe01a59-6e2a-408f-867b-9410bdb12e63  --block-device id=fecbc399-d29c-4de9-bb33-7220e9e4b0f6,source=image,dest=volume,size=20,shutdown=preserve,bootindex=0 --nic net-id=7aadd1be-6d93-4383-8616-edbe99a8d0f4 --meta admin_pass="abc-xxx"  abctest
  --block-device id=XXXXXXXX对应的是Windows镜像的UUID。
  从页面上登录,看注入的密码是否生效。如果生效,那么云主机镜像制作完成。