制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)
这是 OpenStack 实施经验分享系列的第 2 篇。
OpenStack 通过 Glance 镜像部署 instance,上一节我们介绍了 linux 镜像制作方法,windows 镜像与 linux 有很大不同,今天我们以 windows2008 为例详细讨论。
镜像制作步骤如下:
1. 创建并运行 windows2008 KVM 虚拟机
2. 安装 virtio 驱动
3. 安装 cloudbase-init
4. 其他定制工作
5. 创建 Glance 镜像
6. 通过镜像部署新 instance
1. 创建并运行Windows2008 KVM虚拟机
如果有 virt-manager,这一步可以在图形界面中完成。考虑到不是所有情况都有 virt-manager,我们这里直接在 KVM 宿主机上操作。下面的步骤用于创建 windows2008 虚拟机。
首先创建一块 20G 的虚拟磁盘作为虚拟机的启动盘:
qemu-img create -f qcow2 /var/lib/libvirt/images/win2008r2sp1.qcow2 20G

copy 虚拟机模板
cp template.xml win2008r2sp1.xml
template.xml 这个模板怎么来?其实很简单,通常直接 dump 现有 kvm 虚拟机的 xml 定义就可以了。比如:
virsh dumpxml [vm-id] > template.xml
修改win2008r2sp1.xml中以下各项:
虚拟机名称

虚拟磁盘(前面通过 qemu-img 创建的)和启动ISO

创建虚拟机
virsh define win2008r2sp1.xml

启动虚拟机
virsh start win2008r2sp1

通过vnc连接虚拟机

这里 172.17.12.11 为宿主机 IP,端口号为 2(可通过 virsh vncdisplay 查询到)。连接成功后,显示虚拟机安装界面

通过向导安装操作系统,过程不再赘述。如果在安装过程中虚拟机没有自动重启,可以通过下面的命令启动虚拟机
virsh start win2008r2sp1
安装成功后,设置 IP 地址

2. 安装 virtio 驱动
OpenStack 默认使用 virtio 磁盘和网卡,virtio 的性能很好。由于 windows 没有自带 virtio 的驱动,需要手动安装,步骤如下:
添加一个 virtio 类型的磁盘。
virsh edit win2008r2sp1

修改当前的网卡设备为 virtio。

重启操作系统,安装 virtio 的驱动程序。



virtio driver 的下载地址为 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

3. 安装 cloudbase-init
cloudbase-init 使 windows 镜像部署的 instance 能够自动配置 IP 地址等个性化信息。其作用与 linux 的 cloud-init 一样,下面演示 cloudbase-init 的配置方法。
下载 cloudbase-init
https://cloudbase.it/cloudbase-init/#download
在虚拟机中安装 cloudbase-init
可通过远程桌面上传 cloudbase-init 安装程序并安装








系统会自动关机。
4. 其他定制工作
重新启动虚拟机,完成其他定制工作,比如根据需要安装一些常用软件等。至此,windows 镜像文件已经准备好,文件路径为
/var/lib/libvirt/images/win2008r2sp1.qcow2
5. 创建 Glance 镜像
镜像创建方法与上一节 linux 镜像一样
glance image-create --name "Windows 2008 R2 SP1" --file /var/lib/libvirt/images/win2008r2sp1.qcow2 --disk-format qcow2 --container-format bare --is-public true --progress

6. 通过镜像部署新 instance

点击镜像后面的“启动云主机”按钮。

给 instance 命名,并点击“运行”,instance 创建成功并分配到 IP。

点击 instance 名字。
打开 console。

在 VNC 控制台可以看到 instance 正常启动。

点击 Administrator 用户

第一次登录需要修改密码。

以上就是定制 OpenStack Windows 镜像的操作,下一节讨论几个镜像使用上的经验和技巧。

制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)的更多相关文章
- 制作 OpenStack Linux 镜像 - 每天5分钟玩转 OpenStack(151)
这是 OpenStack 实施经验分享系列的第 1 篇. OpenStack 的 instance 是通过 Glance 镜像部署的,所以准备镜像是必须要做的工作.本节介绍 Linux 镜像的制作方法 ...
- 学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)
作为 OpenStack 的核心教程,我们已经到了最后总结的部分. OpenStack 目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder ...
- 搭建 OpenStack 实验环境 - 每天5分钟玩转 OpenStack(16)
在学习 OpenStack 各服务之前,让我们先搭建起一个实验环境. 毋庸置疑,一个看得到摸得着而且允许我们随便折腾的 OpenStack 能够提高我们的学习效率. 因为是我们自己学习用的实验环境,C ...
- 如何更新 OpenStack 组件?- 每天5分钟玩转 OpenStack(161)
这是 OpenStack 实施经验分享系列的第 11 篇. 本节教大家更新 OpenStack 组件的方法.请注意,是更新(Update)而不是升级(Upgrade).更新是给组件打补丁,版本不变:而 ...
- ubuntu openstack windows 镜像制作
openstack windows 镜像制作 首先下载windows所需要的驱动,virtio-win-1.1.16.vfd virtio-win-0.1-59.iso 下载的官方地址是: http ...
- 每天5分钟 玩转OpenStack 目录列表
最近在学习 OpenStack 的相关知识,一直苦于 OpenStack 的体系庞大以及复杂程度,学习没有进度,停滞不前.偶然机会在 51CTO 上发现了一个热点的专题关于 OpenStack 的,题 ...
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
<每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重 ...
- 解决 Windows instance 时间不同步问题 - 每天5分钟玩转 OpenStack(153)
这是 OpenStack 实施经验分享系列的第 3 篇. 问题描述 通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 ...
- 手动制作openstack windows镜像
https://docs.openstack.org/image-guide/windows-image.html 这里以 windows 2008为例: 准备工作: 1准备好windows 2008 ...
随机推荐
- Android 中内容提供者的使用
在Android中内容提供者主要是用于不同程序之间的数据共享.内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序的数据,另一种是创建自己的内容提供器,供其他的程序访问. 使用现 ...
- mongodb 3.x connect with credential
package mongoDb; import java.net.UnknownHostException; import java.util.ArrayList; import java.util. ...
- linux命令学习7-jstat命令
最近维护的项目使用的是java开发的,所以对于jvm虚拟机相关的操作还是必须要了解的,就先从最基本的jstat来学习起来. 首先需要会的就是full gc的查看; 下面就从网上收集了一些工具介绍, 慢 ...
- UDP传输包大小(转)
源:UDP传输包大小 在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好? 当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对 像ICQ一 ...
- flask-sqlalchemy relationship
http://www.ergo.io/blog/sqlalchemy-relationships-from-beginner-to-advanced class Cabinet(db.Model): ...
- 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密
在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...
- php包管理工具最基本的一些问题
windows下的 1.先安装windows下的set-up程序 点击一步步的, cmd进入,输入composer能成功显示一幅图说明安装成功 2.在下载,https://getcomposer.or ...
- 微信小程序之----问题
1.如何定义全局数据 在app.js的App({})中定义的数据或函数都是全局的,在页面中可以通过var app = getApp(); app.function/key的方式调用,不过我们没有必要 ...
- Objective-C中的Hello World
Objective-C在C语言的基础之上,加入了自己的一些独特的特性,而且在Objective-C中兼容C语言原有的用法.在Objective-C中,实现Hello World和C语言有一定的区别,如 ...
- 有限状态机(Finite-state machine)
var menu = { // 当前状态 currentState: 'hide', // 绑定事件 initialize: function() { var self = this; self.on ...