第三部分 OpenStack镜像管理

1、简介 

不少源都有为OpenStack已经编译好的各类镜像了,您能够直接下载并经过使用这些镜像来熟悉OpenStack。php

不过若是是为生产环境进行部署的话,您必定须要构建含有定制软件或配置的镜像文件。不要着急,本章将引领您完成几种较为流行的Linux发行版镜像,最后也将制做一份Windows的镜像。linux

 

由不一样的Linux发行版制做镜像时,过程几乎同样,仅有微小的差异而已。因为含有cloud-ini软件包,人们用Ubuntu系统制做镜像文件变得很是容易。Cloud-init软件在实例运行时可以自动维护实例配置,也将为无密码登录完成密匙导入以及完成设置主机名等任务。每一个实例都将经过169.254.169.254的元数据接口,从nova运算中读取特定的配置。编程

若是您制做发行版不含有诸如cloud-init此类的软件包,您就须要自行完成密匙导入等操做了。说来也简单,只需向rc.local文件中添加相关命令便可。ubuntu

如前所述,建立Linux不一样发行版的过程除了几细微之处外,其他彻底一致。不一样点将在后文阐述。windows

本文全部的例子,都是在KVM基础上完成的。正像前两章说道的那样,如今我正在使用client1。浏览器

接下来的操做将制做不少镜像,这些镜像表明一个没有分区的硬盘。 服务器

2、建立Linux镜像

第一部,首先是在Client1上建立一块空镜像,这块镜像用做虚拟机的硬盘,因此请保证留出你所需的空间的大小:网络

kvm-img create -f qcow2 server.img 5Gssh

 

(一)安装准备

下载你所需的Linux发行版iso原镜像文件,好比您想安装Ubuntu,您可使用wget或浏览器从网站“http://releases.ubuntu.com”得到iso文件。curl

将下载的iso文件置入虚拟机的CD-ROM后,启动KVM一个虚拟机实例。您将看到安装过程的开始。键入以下命令,它将在端口0开放VNC服务:

sudo kvm -m 256 -cdrom ubuntu-12.04-server-amd64.iso -drive file=server.img,if=virtio,index=0 -boot d -net nic -net user -nographic -vnc :0

使用0这个展现端口连入虚拟机的VNC,并完成安装。

举例以下,client1的IP地址是10.10.10.4,则经过下列命令访问vnc:

vncviewer 10.10.10.4 :0

注意,在制做Linux镜像过程当中,请建立一个单独的ext4格式分区并将其挂在swap分区下。

安装结束后,经过执行下列命令从新载入虚拟机:

sudo kvm -m 256 -drive file=server.img,if=virtio,index=0 -boot c -net nic -net user -nographic -vnc :0

此时,您能够在这个系统上安装定制的软件包,进行系统更新,添加用户或更改配置了。

(二)Ubuntu 

执行如下命令:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install openssh-server cloud-init

清除 /etc/udev/rules.d文件的网络设备命名规则,由于这些规则将从实例的网卡得到。

sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

(三)Fedfora 

运行以下命令:

yum update

yum install openssh-server

chkconfig sshd on

而后编辑 /etc/sysconfig/network-scripts/ifcfg-eth0文件以下所示:

DEVICE="eth0"

BOOTPROTO=dhcp

NM_CONTROLLED="yes"

ONBOOT="yes"

清除 /etc/udev/rules.d文件的网络设备命名规则,由于这些规则将从实例的网卡得到。

sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

关闭虚拟机。

因为Fedora没有cloud-init或相似软件,您须要亲自进行几步配置使实例能够获得诸如ssh key这样的元数据。

编辑 /etc/rc.local文件而且把如下内容粘贴到“touch /var/lock/subsys/local”行前:

depmod -a

modprobe acpiphp

# simple attempt to get the user ssh key using the meta-data service

mkdir -p /root/.ssh

echo >> /root/.ssh/authorized_keys

curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key| grep 'ssh-rsa' >> /root/.ssh/authorized_keys

echo "AUTHORIZED_KEYS:"

echo "************************"

cat /root/.ssh/authorized_keys

echo "************************"

 

 

(四)OpenSUSE

 

选择ssh服务,curl以及其余须要的包。

安装ssh服务器:

zypper install openssh

安装crul:

zypper install curl

使用以下步骤将Ssh Key注入实例中:

首先,建立文件 /etc/init.d/sshkey而且写入下列内容:

echo >> /root/.ssh/authorized_keys

curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys

echo "AUTHORIZED_KEYS:"

echo "************************"

cat /root/.ssh/authorized_keys

echo "************************"

而后,为该文件设置权限:

chmod 755 /etc/init.d/sshkey

将sshkey服务设置为开机自动启动:

chkconfig sshkey on

使用下列命令设置防火墙(而非iptables),令其容许ssh服务:

yast2

最后一样地,清除 /etc/udev/rules.d文件的网络设备命名规则,由于这些规则将从实例的网卡得到。

sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

 

(五)Debian 

安装时选择SSH服务器,Curl及相关软件。

而后进行必要的设置,为key注入而编辑 /etc/rc.local文件并增长以下内容:

echo >> /root/.ssh/authorized_keys

curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys

echo "AUTHORIZED_KEYS:"

echo "************************"

cat /root/.ssh/authorized_keys

echo "************************"

一样地,清除 /etc/udev/rules.d文件的网络设备命名规则,由于这些规则将从实例的网卡得到。

sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

(六)CentOS6及RHEL6 

安装时选择SSH服务器,Curl及相关软件。

而后进行必要的设置,为key注入而编辑 /etc/rc.local文件并增长以下内容:

echo >> /root/.ssh/authorized_keys

curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys

echo "AUTHORIZED_KEYS:"

echo "************************"

cat /root/.ssh/authorized_keys

echo "************************"

 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0文件以下所示:

DEVICE="eth0"

BOOTPROTO=dhcp

NM_CONTROLLED="yes"

ONBOOT="yes"

一样地,清除 /etc/udev/rules.d文件的网络设备命名规则,由于这些规则将从实例的网卡得到。

sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

 

(七)上传Linux镜像 

使用以下命令上传镜像:

glance add name="<Image name>" is_public=true container_format=ovf disk_format=qcow2 < <filename>.img

3、建立Windows镜像 

第一步,仍然是在Client1上建立一块空镜像,这块镜像用做虚拟机的硬盘,因此请保证留出你所需的空间的大小:

kvm-img create -f qcow2 windowsserver.img 20G

 

(一)安装操做系统 

当实例运行时,OpenStack利用virtio接口来使用镜像,因而镜像中的操做系统须要装有virtio驱动。不巧的是,默认Windows Server 2008是没有virtio驱动的。您能够在以下网址:http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin 下载装有该驱动的iso镜像并使用该镜像进行安装。

译者注1:Virtio 是半虚拟化 hypervisor 中位于设备之上的抽象层。virtio 由 Rusty Russell 开发,virtio 是对半虚拟化 hypervisor 中的一组通用模拟设备的抽象。该设置还容许 hypervisor 导出一组通用的模拟设备,并经过一个通用的应用编程接口(API)让它们变得可用。[来源:开源中国http://www.oschina.net/p/virtio]

译者注2:该连接的virtio-win是0.1-22版,不能用。下载用1.1.16新版便可。

执行此命令开始安装:

sudo kvm -m 1024 -cdrom windows2008.iso -drive file=windowsserver1.img,if=virtio -boot d -drive file=virtio-win-0.1-22.iso,index=3,media=cdrom -device virtio-net-pci -net nic -net user -nographic -vnc :5

当安装提示您选择一块硬盘设备步骤时,您并不能看到当前有可用设备。点击左下方的“载入设备(Load drivers)”按钮,选择第二CDROM后,含有virtio驱动的硬盘便被加载了。

在安装结束以前,您须要重启系统一次,此时您能够安装其它您所需的软件或执行任何须要的配置更改。除此以外,请务必开放实例中的远程桌面,由于远程桌面将是您链接并使用该实例的惟一途径。同时,Windows防火墙应该相应地设置为对ICMP和RDP开放。

 

(二)上传Windows镜像

关闭虚拟机并将该镜像使用以下命令上传至OpenStack中:

glance add name="windows" is_public=true container_format=ovf disk_format=qcow2 < windowsserver.img

相关文章
相关标签/搜索