Oz制作CentOS镜像

转自:http://www.chenshake.com/oz-making-centos-mirror/

一直以来,我都是使用Ubuntu的镜像,自己没动手做过镜像。对于Openstack的镜像来说,需要在image里安装cloud init,这样才能注入密钥,网络的设置,也是需要cloud init。

做镜像的步骤,比较繁琐,其实就是一个kvm的image,有什么办法可以简化呢?Oz这个工具,应该可以完全满足你的要求,可以很方便让你定制各种操作系统的image,功能还是很强大的,Oz开发和更新还是非常频繁,非常值得关注的一个软件

目前EPEL源已经有Oz的安装包,更新还是非常及时,和开发同步,并且Redhat也是推荐使用这个工具来创建镜像。由于Oz需要使用网络来自动化创建镜像,所以建议别在Openstack的环境下进行使用,建议采用一台干净的机器来做。

我用下面的配置文件制作的镜像,放到网盘上,大家可以测试一下。

http://yunpan.cn/QiQ6syasRAH7Q 访问密码 90e3

 

安装

yum -y  install oz

装完后,你最好就重启机器,你用ifconfig,可以看到virbr0这个网络,不然你就安装失败。

配置Oz

默认Oz是使用raw格式,我的习惯是使用qcow2格式,

# cat /etc/oz/oz.cfg 
[paths]
output_dir = /var/lib/libvirt/images
data_dir = /var/lib/oz
screenshot_dir = /var/lib/oz/screenshots

[libvirt]
uri = qemu:///system
#image_type = raw
image_type = qcow2
# type = kvm
# bridge_name = virbr0
# cpus = 1
# memory = 1024

[cache]
original_media = yes
modified_media = no
jeos = no

[icicle]
safe_generation = no

 

这个就是Oz的配置文件,我把默认文件格式改成qcow2.

Oz支持的系统

目前EPEL的源,已经更新到最新的版本,支持Centos 6.5。

当前Oz的版本

# rpm -qa | grep oz
oz-0.12.0-1.el6.noarch

创建配置文件

我们需要两个配置文件,centos65.tdl 和centos6.ks

看一个具体的Oz的tdl文件,就全部明白

创建 centos65.tdl 文件

<template>
   <name>centos_65_x86_64</name>
   <description>CentOS 6.5 x86_64 template</description>
   <os>
      <name>CentOS-6</name>
      <version>5</version>
      <arch>x86_64</arch>
      <install type='url'>
         <url>http://172.28.0.1/cobbler/ks_mirror/CentOS6.5-x86_64/</url>
      </install>
   </os>
  <disk>
    <size>10</size>
  </disk>
</template>

 

做Openstack的镜像的kickstart文件,参考http://repos.fedorapeople.org/repos/openstack/guest-images/

使用我的centos6.ks 文件,才能支持镜像的resize。

oz-install -p -u -d3 -a centos6.ks centos65.tdl

 

镜像创建完后,会保存在 /var/lib/libvirt/images ,对image进行压缩

qemu-img convert -c /var/lib/libvirt/images/centos_65_x86_64.qcow2 -O qcow2 \
/root/centos_65_x86_64.qcow2

压缩后的镜像大小在300M左右.没压缩前,大概是1.3G。

如果你生成的是raw格式,可以进行转换成qcow2格式

qemu-img convert /var/lib/libvirt/images/centos65_x86_64.dsk -O qcow2 /root/centos65_x86_64.qcow2

 

参考文章

http://waipeng.wordpress.com/2013/05/20/building-centos-images-for-openstack/

http://docs.openstack.org/grizzly/openstack-image/content/ch_creating_images_automatically.html

http://www.jansipke.nl/creating-a-centos-vm-image-for-openstack/

https://github.com/rackerjoe/oz-image-build

我的centos6.ks 文件。

Oz介绍

Oz内置各个操作系统安装的模板,对于Redhat系列来说,其实就是内置了kickstart脚本,不过这些默认的ks文件,可能无法满足你的需求,那么你可以自己制定自己的ks文件。

Oz内置了各个操作系统的自动化安装模板,/usr/lib/python2.6/site-packages/oz/auto

 

我的centos6.ks文件

#version=DEVEL
# Firewall configuration
firewall --enabled --service=ssh
repo --name="repo0" --baseurl=http://172.28.0.1/cobbler/ks_mirror/CentOS6.5-x86_64
repo --name="repo1" --baseurl=http://172.28.0.1/cobbler/repo_mirror/Centos6-UPDATES
repo --name="repo2" --baseurl=http://172.28.0.1/cobbler/repo_mirror/epel6-x86_64
# Root password
rootpw --iscrypted --lock $1$2e74e5$wMj25e4rEb4rJxqm7BAnk0
# System authorization information
auth --useshadow --enablemd5
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System services
services --disabled="avahi-daemon,iscsi,iscsid,firstboot,kdump" --enabled="network,sshd,rsyslog,tuned"
# System timezone
timezone --isUtc Asia/Chongqing
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --append="console=ttyS0,115200n8 console=tty0" --location=mbr --driveorder="sda" --timeout=1
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all  
# Disk partitioning information
#part / --fstype="ext4" --grow --size=1
part / --fstype ext4 --size=512 --grow

%post

# make sure firstboot doesn't start
echo "RUN_FIRSTBOOT=NO" > /etc/sysconfig/firstboot

cat <<EOL >> /etc/rc.local
if [ ! -d /root/.ssh ] ; then
    mkdir -p /root/.ssh
    chmod 0700 /root/.ssh
    restorecon /root/.ssh
fi
EOL

cat <<EOL >> /etc/ssh/sshd_config
UseDNS no
PermitRootLogin without-password
EOL

# bz705572
ln -s /boot/grub/grub.conf /etc/grub.conf

# bz688608
sed -i 's|\(^PasswordAuthentication \)yes|\1no|' /etc/ssh/sshd_config

# allow sudo powers to cloud-user
echo -e 'cloud-user\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers

# bz983611
echo "NOZEROCONF=yes" >> /etc/sysconfig/network

# set virtual-guest as default profile for tuned
echo "virtual-guest" > /etc/tune-profiles/active-profile

#bz 1011013
# set eth0 to recover from dhcp errors
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="yes"
PEERDNS="yes"
IPV6INIT="no"
PERSISTENT_DHCLIENT="1"
EOF
#bz912801
# prevent udev rules from remapping nics
touch /etc/udev/rules.d/75-persistent-net-generator.rules

#setup getty on ttyS0
echo "ttyS0" >> /etc/securetty
cat <<EOF > /etc/init/ttyS0.conf
start on stopped rc RUNLEVEL=[2345]
stop on starting runlevel [016]
respawn
instance /dev/ttyS0
exec /sbin/agetty /dev/ttyS0 115200 vt100-nav
EOF

# lock root password
#passwd -d root
#passwd -l root

# let's randomise the root password
head -n1 /dev/urandom | md5sum| awk {'print $1'} | passwd --stdin root

# clean up installation logs"
yum clean all
rm -rf /var/log/yum.log
rm -rf /var/lib/yum/*
rm -rf /root/install.log
rm -rf /root/install.log.syslog
rm -rf /root/anaconda-ks.cfg
rm -rf /var/log/anaconda*
%end

%packages --nobase --excludedocs
wget
vim
cloud-init
cloud-utils
dracut-modules-growroot
%end

说明

安装途径

<install type='url'>
      <url>http://download.fedoraproject.org/pub/fedora/linux/releases/15/Fedora/x86_64/os/</url>
</install>

 

如果iso在本地,如果是url,就写成http://iso路径 就可以

<install type=’iso’>
<iso>file:///root/rhel-server-6.3-x86_64-dvd.iso</iso>
</install>
</os>

 

默认磁盘改为10G

<disk>
    <size>10</size>
  </disk>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值