利用Oz工具制作openstack镜像

1、首先,安装oz工具:


安装epel源 (epel源里包含oz包)

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm


yum install -y oz libguestfs-tools


2、其次,创建一个TDL文件

我制作的是rhel6.3.tdl 的文件模板  #更多的模板格式在/root/oz-0.12.0/tests/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>root</rootpw>

<install type='iso'>

<iso>file:usr/iso/rhel-server-6.3-x86_64-dvd.iso</iso>

</install>

</os>

<disk>

   <size>50</size>

</disk>

<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  #上面四条命令是为了用此镜像建立虚拟机的时候,可以获得mac和IP。

sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config

</command>

</commands>

</template>

#其中上面模板中的iso的安装方式可以换成url安装,需要把配置改为下面的命令行

#iso安装的命令行

<install type='iso'>

<iso>file:usr/iso/rhel-server-6.3-x86_64-dvd.iso</iso>

</install>

#url的安装命令行

<install type='url'>

<url>http://10.240.240.205/redhat-6.3/</url>

</install>

3、制作kickstart文件

  我已是rhel6.3.ks 的kickstart文件  #oz自带的ks模板在/root/oz-0.12.0/oz/auto目录中,我是用其中的RHEL6.auto进行修改的

install

text

key --skip

keyboard us

lang en_US.UTF-8

skipx

network --device eth0 --bootproto dhcp

rootpw root

firewall --disabled

authconfig --enableshadow --enablemd5

selinux --disabled

timezone --utc Asia/Shanghai

bootloader --location=mbr --append="console=tty0 console=ttyS0,115200"

zerombr yes

clearpart --all


part /boot --fstype ext4 --size=200

part /     --fstype ext4 --size=20000

part swap  --fstype swap --size=8192

part /u01  --fstype ext4 --grow --size=200

reboot


%packages

@base

@core

@server-policy

authconfig

ipmitool

OpenIPMI

openssh-clients

net-snmp

%post


rm -rf /etc/yum.repos.d/*

cat >/etc/yum.repos.d/puppet.repo <<-EOF

[puppet]

name=rhel-server-6.3-x86_64

baseurl=http://10.0.0.233/OS/rhel-server-6.3-x86_64/

enabled=1

gpgcheck=0

priority=1


[core-0]

name=core-0

baseurl=http://10.0.3.91/cobbler/ks_mirror/rhel-server-6.3-x86_64

enabled=1

gpgcheck=0

priority=1



[core-1]

name=core-1

baseurl=http://10.0.3.91/cobbler/ks_mirror/rhel-server-6.3-x86_64/Server

enabled=1

gpgcheck=0

priority=1



[core-2]

name=core-2

baseurl=http://10.0.3.91/cobbler/ks_mirror/rhel-server-6.3-x86_64/ResilientStorage

enabled=1

gpgcheck=0

priority=1



[core-3]

name=core-3

baseurl=http://10.0.3.91/cobbler/ks_mirror/rhel-server-6.3-x86_64/ScalableFileSystem

enabled=1

gpgcheck=0

priority=1



[core-4]

name=core-4

baseurl=http://10.0.3.91/cobbler/ks_mirror/rhel-server-6.3-x86_64/LoadBalancer

enabled=1

gpgcheck=0

priority=1



[core-5]

name=core-5

baseurl=http://10.0.3.91/cobbler/ks_mirror/rhel-server-6.3-x86_64/HighAvailability

enabled=1

gpgcheck=0

priority=1


EOF



#ssh-keygen -f /root/.ssh/id_rsa -N jiayuan.com

ssh-keygen -f /root/.ssh/id_rsa -N ""

cat << EOF > /root/.ssh/authorized_keys 

ssh-dss AAAAB3NzaC1kc3MAAACBAOhEPU3K5V0+0arAJAOfJpndZICISJpBLsgxK+Jfh918zKI8h1/wa2BeNh3dRn61xcxYNlYmTOhnfebqOl9BUT5pFFG263msMx9OCImZzkL8iL/u0bMDxIebGg8HkbkBUUoN3dp/gaQmbhhib9ZrNe6u63cfrehwIEhoZ/Q+h1uBAAAAFQD7IYHEVKM46u2aKVmgWHaz+pVNDQAAAIBsTetkUIFks1Mbpy0aR0ywMUn3uHjv4cGlWSFYDxdmr/YbGT2vm7Rph48IxoQizy2OF8ZDfKMIfxdq5GpLTWQQl6wKTkxHiXjNnenH/UkkIFt95b7i3ugt0bU7wL6e6RT9cnVIY+W+MlzE2yDLH94nTBPlqB0Y48Fv4i22sLLF/wAAAIA5XCL0NLB/nNJc5ykyVT1p1hjU9YvVT2jxa9WEvpMrdQsbdyzwXbnDfTBZxRhPCfaGqlQlreGIF8vEDCXJHIC/pjIKdz1y3Hw1Zv+T9a1e2PoS0b0TQG87i/soORsfihOaRIy6LaQrqrpgXG8JZ0zM/FaMxi28g1DsMohP+XSXHw== root@tiaoban_1_60


ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEArqGhU8X1DnVHiXfrBbJfDX4ycJ0vgBfyGE5Hvahy7htm1y/UPjUwzPwUjsu2l6DO9vbuOZi9nVFLF3RQLpXWUXzyqcvgNPFwLE+gK1P6cSDxD2x9a+wkZ9UFBwJa31Hbi0/QMDl7j6YZQf0jPlQt0va767zWelnBgQh9W97Ubj8= root@mail2.love21cn.com

ssh-dss AAAAB3NzaC1kc3MAAACBAPyXDw8vrMSKU5C7Hrs2JFM46cWFJD2XFzqSd8ypBVrSzzD4eFVKV00Hj+8gQO3Z8FsRpwii8vybp+iVxmH/KDSFdd8nNip9ZffbmF2dgFM9f2VzHlRWQNa3GOQPFqOZwuk+WQmdU3lI3OyV4mRP+hDa3Q0YVD3xjmKT2gcZNuiFAAAAFQCXqWKG4H1bmlCl5o2eKEParzyjRwAAAIEAxjgu/7n7cn37W4KrLm4cXKiIaQdT7E+/pqVbmckEoAblhwnfX4HFytuhp29968UA5JRODf+z6MRgYWDfOrYLqt42fPj9TnwhJT4yTJ0JkHsQWjMHHHouBlOOujdv+7kRf7lI4FOGGXSyauD37z/69hgJA88kjyWUEOocumIMOyMAAACBANs8aO4pkcgFdjLtHwzAP5CDQOSsCeYt+P5RF1q5df2HvNWRx6RZnDEbtxwh5zATG63RxtWHCnpGhNgScuRWB1JnVcyZDPKlaPExwqCkR1OmB2fFoDhJgbVXPE/VPG9XlXFxWNpCqpDK3BSDuD2c/ggMNeqZo8toCyfbAqxb/jkg root@manager_network

ssh-dss AAAAB3NzaC1kc3MAAACBAJBa7KArcDrwytnrLbh8uWJw3pKKYNLZEhnT2+LuDUmBERFPH/VtM4rp50k3meYgxlRch/iyWSBLdIC/UeZlRZPSFinDIvGEvqKqN/r+shddZgQQZXRH2pYAP8Rb/xzj4pIPpc0V1LpEIk7LashFx/41nCJXhODnJLcPcuASwR/LAAAAFQCHViB2P3fR4ud/tYUPeSgeumbLgQAAAIBsDZo3eB3WaY9VbztVToMgqii+NsJfiJPrcdQDMOJmEgYGQ/L7BKJglfDoLMvY/rvaumKN6rE9gsPiiN4m3xnOkXaYYjOqYb2fMk3N7AfozpgMdtgfp/o9Cy0qh4keOgawpJQTxnQVr1Lc5sFAptGb4Mx19lSY4c2lFRjpRSUSIgAAAIAo/yT9iqm1dD6n9sD982FK77WgPCUZQKAb7EqYx4qA4W8+GafkvvQSPHJ/ogrA+xS9+W/Y7MCMbqLLKC+si6gbSuLOxORP1EYMHLUOkJ2jPOCwYyDt1p7ZnFXJ9LP+cWeehuyujp4r7xlazcpwBm+n1j24Q2p4uX6v7BCpt0MEXA== liutao@manager_network

EOF


#用kickstart制作镜像的优点是:可以按自己的方式分区、安装定制包、包括安装完后执行的脚本。

4、修改/etc/oz/oz.cfg的配置文件(可以不修改,我要把制作制格式改为qcow2,默认是raw,raw格式输出的文件太大,不支持压缩)

[paths]

output_dir = /home/oz-img   #修改成自己的输出路径

data_dir = /var/lib/oz

screenshot_dir = /var/lib/oz/screenshots

# sshprivkey = /etc/oz/id_rsa-icicle-gen


[libvirt]

uri = qemu:///system

#p_w_picpath_type = raw

p_w_picpath_type = qcow2

# type = kvm

# bridge_name = virbr0

# cpus = 1

# memory = 1024


[cache]

original_media = yes

modified_media = no

jeos = no


[icicle]

safe_generation = no

5、开始制作镜像

执行此命令 #oz-install -p -u -d3 -a rhel6.3.ks rhel6.3.tdl

6、就制作好的镜像进行压缩

  正常制作出来的是1--2个G的容量,可以用下面的命令进行压缩,压缩后只有几百M的容量方便上传

 #qemu-img convert -c /home/oz-img/rhel63_x86_64.qcow2  -O qcow2 /home/qcow2/rhel63_x86_64.qcow2