以前研究openstack,比较烦的就是制作镜像和网络这块。
网络: Havana版本之前的网络这块功能比较差,配置也相对复杂些,再加上自身基础不好,所以理解起来相当困难。不过好在Havana版本中网络这块有了很大的改善,配置和界面都很友善。据说UOS的界面很华丽,期待……
制作镜像:之前制作镜像都是采用”先装一次系统,做成模板,然后通过glance上传“这个土方法,而且还要制作Rhel5/6、Centos5/6、Ubuntu、Windows Server 2003/2008等各种系统的模板,相对麻烦。
最近在研究H版的openstack过程中,发现以前制作镜像的方法不好使,老是获取不到分配的IP。无奈之下只好尝试通过别的方法制作镜像,于是就发现了oz这个工具,突然发现制作镜像是如此easy。
下面以制作RHEL 6.3镜像为例:
首先,安装oz工具:
yum install -y oz libguestfs-tools
其次,创建一个TDL文件 6.3.tdl:
<template>
<name>rhel63_x86_64</name>
<description>RedHat 6.3 x86_64 template</description>
<os>
<name>RHEL-6</name>
<version>3</version>
<arch>x86_64</arch>
<rootpw>rootpasswd</rootpw>
<install type=’iso’>
<iso>file:///u01/rhel-server-6.3-x86_64-dvd.iso</iso>
</install>
</os>
<commands>
<command name=’console’>
sed -i ‘s/ rhgb//g’ /boot/grub/grub.conf
sed -i ‘s/ quiet//g’ /boot/grub/grub.conf
</command>
<command name=’update’>
sed -i ‘/^HWADDR/d’ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i ‘/^UUID/d’ /etc/sysconfig/network-scripts/ifcfg-eth0
echo -n > /etc/udev/rules.d/70-persistent-net.rules
echo -n > /lib/udev/rules.d/75-persistent-net-generator.rules
sed -i ‘/^SELINUX=/s/enforcing/disabled/‘ /etc/selinux/config
</command>
</commands>
</template>
通过oz-install生成镜像(镜像会生成在/var/lib/libvirt/images/目录下)
oz-install -u -d3 6.3.tdl
最后,通过glance上传镜像
glance add name=RHEL-6.3 is_public=true container_format=bare disk_format=raw < /var/lib/libvirt/images/rhel63_x86_64.dsk
其它系统TDL模板文件:
RHEL5.8:
<template>
<name>rhel58_x86_64</name>
<description>RedHat 5.8 x86_64 template</description>
<os>
<name>RHEL-5</name>
<version>U8</version>
<arch>x86_64</arch>
<rootpw>rootpasswd</rootpw>
<install type=’iso’>
<iso>file:///u01/rhel-server-5.8-x86_64-dvd.iso</iso>
</install>
</os>
<commands>
<command name=’update’>
sed -i ‘/^HWADDR/d’ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i ‘/^SELINUX=/s/enforcing/disabled/‘ /etc/selinux/config
</command>
</commands>
</template>
RHEL6.4:
<template><name>rhel64_x86_64</name>
<description>RedHat 6.4 x86_64 template</description>
<os>
<name>RHEL-6</name>
<version>4</version>
<arch>x86_64</arch>
<rootpw>rootpasswd</rootpw>
<install type=’url’>
<url>http://rhn.uoregon.edu/pub/isos/full/RHEL-6.4/x86_64/</url>
</install>
</os>
<commands>
<command name=’console’>
sed -i ‘s/ rhgb//g’ /boot/grub/grub.conf
sed -i ‘s/ quiet//g’ /boot/grub/grub.conf
sed -i ‘s/ console=tty0 / serial=tty0 console=ttyS0,115200n8 /g’ /boot/grub/grub.conf
</command>
<command name=’update’>
sed -i ‘/^HWADDR/d’ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i ‘/^UUID/d’ /etc/sysconfig/network-scripts/ifcfg-eth0
echo -n > /lib/udev/rules.d/75-persistent-net-generator.rules
sed -i ‘/^SELINUX=/s/enforcing/disabled/‘ /etc/selinux/config
</command>
</commands>
</template>
参考文章:
https://access.redhat.com/site/documentation/en-US/Red_Hat_OpenStack/3/html/Installation_and_Configuration_Guide/Building_a_Custom_Disk_Image.html
https://github.com/rackerjoe/oz-image-build