第三部分 OpenStack镜像管理
一、简介
很多源都有为OpenStack已经编译好的各种镜像了,您可以直接下载并通过使用这些镜像来熟悉OpenStack。
不过如果是为生产环境进行部署的话,您一定需要构建含有定制软件或配置的镜像文件。不要着急,本章将引领您完成几种较为流行的Linux发行版镜像,最后也将制作一份Windows的镜像。
由不同的Linux发行版制作镜像时,过程几乎一样,仅有微小的差别而已。由于含有cloud-ini软件包,人们用Ubuntu系统制作镜像文件变得非常容易。Cloud-init软件在实例运行时能够自动维护实例配置,也将为无密码登陆完成密匙导入以及完成设置主机名等任务。每个实例都将通过169.254.169.254的元数据接口,从nova运算中读取特定的配置。
如果您制作发行版不含有诸如cloud-init此类的软件包,您就需要自行完成密匙导入等操作了。说来也简单,只需向rc.local文件中添加相关命令即可。
如前所述,创建Linux不同发行版的过程除了几细微之处外,其余完全一致。不同点将在后文阐述。
本文所有的例子,都是在KVM基础上完成的。正像前两章说道的那样,现在我正在使用client1。
接下来的操作将制作很多镜像,这些镜像代表一个没有分区的硬盘。
二、创建Linux镜像
第一部,首先是在Client1上创建一块空镜像,这块镜像用作虚拟机的硬盘,所以请保证留出你所需的空间的大小:
kvm-img create -f qcow2 server.img 5G
(一)安装准备
下载你所需的Linux发行版iso原镜像文件,比如您想安装Ubuntu,您可以使用wget或浏览器从网站“http://releases.ubuntu.com”获得iso文件。
将下载的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
(三)Fefora
运行如下命令: yum update
yum install openssh-server chkconfig sshd on
然后编辑 /etc/sysconfig/network-scripts/ifcfg-eth0文件如下所示: DEVICE=\ BOOTPROTO=dhcp NM_CONTROLLED=\ ONBOOT=\
清除 /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 grep
http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key| 'ssh-rsa' >> /root/.ssh/authorized_keys
echo \ 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 grep
http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key 'ssh-rsa' >> /root/.ssh/authorized_keys
echo \ 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 grep
http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key 'ssh-rsa' >> /root/.ssh/authorized_keys
echo \ 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 grep
http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key 'ssh-rsa' >> /root/.ssh/authorized_keys
echo \ echo \ cat /root/.ssh/authorized_keys echo \
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0文件如下所示: DEVICE=\ BOOTPROTO=dhcp NM_CONTROLLED=\ ONBOOT=\
同样地,清除 /etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
(七)上传Linux镜像