OpenStack Oz自动化制作centos6.5镜像

openstack镜像制作以往都是用传统的KVM, virt-install加载本地iso文件启动系统,继而在系统里配置一些必备的软件和配置,手动繁琐,耗时长。
openstack官网推荐几款镜像制作工具,下面简要说明下:
https://docs.openstack.org/image-guide/create-images-automatically.html

1、Diskimage-builder
https://docs.openstack.org/diskimage-builder/latest/
diskimage-builder支持定制element,即镜像中包含的元素。(比如创建用户,安装软件包,进行某种配置)
用户可以根据需要进行定义,然后再使用disk-image-create时指定。具体参考diskimage-builder指导。

diskimage-builder的原理也比较简单,是在主机上创建虚拟机镜像,然后通过挂载/chroot方式,通过kickstart自动完成镜像内容的安装。
elements比较像程序中的接口/插件机制,将element中规定目录下的定制脚本执行,完成对镜像的定制。
整个过程并不需要启动虚拟机。

上边工具主要是Linux镜像的制作,并不支持windows镜像的自动制作。

DIB把一些操作封装成脚本,比如创建用户(devuser)、安装cloud-init(cloud-init)、配置yum源(yum)、部署tgtadm(deploy-tgtadm)等,这些脚本称为elements,位于目录diskimage-builder/diskimage_builder/elements,你可以根据自己的需求自己定制elements,elements之间会有依赖,依赖通过element-deps文件指定,比如elements centos7的element-deps为:

cache-url
redhat-common
rpm-distro
source-repositories
yum
DIB会首先下载一个base镜像,然后通过用户指定的elements,一个一个chroot进去执行,从而完成了镜像的制作,整个过程不需要启动虚拟机。这有点类似Dockerfile的构建过程,Dockerfile的每个指令都会生成一个临时的容器,然后在容器里面执行命令。DIB则每个elements都会chroot到镜像中,执行elements中的脚本

感兴趣的可以去官网深入了解更多语法



2、virt-builder
http://libguestfs.org/virt-builder.1.html
官网写的也很详细,语法也很简单
virt-builder os-version
[-o|--output DISKIMAGE] [--size SIZE] [--format raw|qcow2]
[--arch ARCHITECTURE] [--attach ISOFILE]
[--append-line FILE:LINE] [--chmod PERMISSIONS:FILE]
[--commands-from-file FILENAME] [--copy SOURCE:DEST]
[--copy-in LOCALPATH:REMOTEDIR] [--delete PATH] [--edit FILE:EXPR]
[--firstboot SCRIPT] [--firstboot-command ‘CMD+ARGS‘]
[--firstboot-install PKG,PKG..] [--hostname HOSTNAME]
[--install PKG,PKG..] [--link TARGET:LINK[:LINK..]] [--mkdir DIR]
[--move SOURCE:DEST] [--password USER:SELECTOR]
[--root-password SELECTOR] [--run SCRIPT]
[--run-command ‘CMD+ARGS‘] [--scrub FILE] [--sm-attach SELECTOR]
[--sm-register] [--sm-remove] [--sm-unregister]
[--ssh-inject USER[:SELECTOR]] [--truncate FILE]
[--truncate-recursive PATH] [--timezone TIMEZONE] [--touch FILE]
[--uninstall PKG,PKG..] [--update] [--upload FILE:DEST]
[--write FILE:CONTENT] [--no-logfile]
[--password-crypto md5|sha256|sha512] [--selinux-relabel]
[--sm-credentials SELECTOR]
更重要的是可以自定义安装,那么对于openstack云镜像有了更多的灵活的选配。



2、Oz
强大的镜像制作工具,支持诸多发行版linux
https://github.com/clalancette/oz/wiki
安装
yum -y install oz

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

配置Oz,默认Oz是使用raw格式,我的习惯是使用qcow2格式.
cat /etc/oz/oz.cfg
[paths]
output_dir = /data/nvme0n1/oz
data_dir = /var/lib/oz
screenshot_dir = /var/lib/oz/screenshots
# sshprivkey = /etc/oz/id_rsa-icicle-gen

[libvirt]
uri = qemu:///system
image_type = raw

# type = kvm
# bridge_name = virbr0
# cpus = 1
# memory = 1024

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

[icicle]
safe_generation = no

[timeouts]
install = 3600
inactivity = 300
boot = 300
shutdown = 90

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



创建配置文件,我们需要两个配置文件,centos65.tdl 和centos65.ks
centos65.ks
install
text
key --skip
keyboard us
lang en_US.UTF-8
skipx
rootpw [email protected][email protected]$%.CN
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
logging --level=info
reboot
services --disabled="avahi-daemon,iscsi,iscsid,firstboot,kdump" --enabled="network,sshd,rsyslog,tuned"
timezone --utc Asia/Shanghai
network --bootproto=dhcp --device=eth0 --onboot=on
bootloader --location=mbr --append="console=tty0 console=ttyS0,115200" --location=mbr --driveorder="sda" --timeout=1
zerombr yes
clearpart --all

part / --fstype ext4 --size=2048 --grow

%post

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

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

#sed_profile
sed -i ‘s/#PermitRootLogin yes/PermitRootLogin yes/g‘ /etc/ssh/sshd_config
sed -i ‘s/#UseDNS yes/UseDNS no/g‘ /etc/ssh/sshd_config
sed -i ‘s/GSSAPIAuthentication yes/GSSAPIAuthentication no/g‘ /etc/ssh/sshd_config

#yum clean all
rm -rf /root/
rm -rf /var/log/anaconda

rm -rf /var/log/message

/var/log/boot.log
/var/log/messages
/var/log/cloud-init-output.log
/var/log/yum.log
%end
%packages --nobase --excludedocs



tdl文件是xml格式的。不知道博客为什么不支持此格式
centos65.tdl
<template>
<name>centos65</name> #版本最好写对
<os>
<name>CentOS-6</name>
<version>5</version>
<arch>x86_64</arch>#cpu架构64位
<install type=‘iso‘>#install源,这里选择本地iso,当然也可以url指定网上的iso
<iso>file:///data/iso/CentOS-6.5-x86_64-minimal.iso</iso>
</install>
<rootpw>123456</rootpw>#root密码
</os>
<disk>
<size>20</size>#磁盘大小
</disk>
<description>CentOS 6.5 x86_64</description>
<packages>#需要安装的软件包,名字得写全
<package name=‘acpid‘/>
<package name=‘cloud-utils‘/>
<package name=‘cloud-init‘/>
<package name=‘parted‘/>
<package name=‘NetworkManager-*‘/>
</packages>
<repositories>#设置yum源,这里写阿里源
<repository name=‘aliyun-Base‘>
<url>http://mirrors.aliyun.com/centos/$releasever/os/$basearch/</url&gt;
<signed>no</signed>
</repository>
<repository name=‘epel‘>
<url>http://mirrors.aliyun.com/epel/6/$basearch</url&gt;
<signed>no</signed>
</repository>
</repositories>
<commands>

<command name=‘install_linux_root_resize‘>#cloud-init的resize的包,centos6系列如果不装此包无法扩展根分区大小

cd /root
unzip linux-rootfs-resize-master.zip
cd linux-rootfs-resize-master
bash ./install
</command>

<command name=‘profile‘>#自定义命令
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
ln -s /boot/grub/grub.conf /etc/grub.conf
rm -rf /etc/udev/rules.d/70-persistent-net.rules
touch /etc/udev/rules.d/75-persistent-net-generator.rules
chmod +x /var/lib/cloud/scripts/per-boot/resetroot
</command>

<command name=‘services‘>#关于服务开机自启
service sshd restart
service iptables stop
service ip6tables stop
service acpid start
service NetworkManager start
chkconfig iptables off
chkconfig ip6tables off
chkconfig acpid on
chkconfig NetworkManager on
chkconfig cloud-init on
chkconfig cloud-final on
chkconfig cloud-config on
chkconfig cloud-init-local on
</command>

<command name=‘clear-logs‘>#清空log文件
rm -rf /root/
rm -rf /var/log/anaconda

rm -rf /var/log/message
rm -rf /var/log/messages
rm -rf /etc/yum.repos.d/aliyun-Base.repo
rm -rf /etc/yum.repos.d/epel.repo
yum clean all
yum makecache

/var/log/boot.log
/var/log/messages
/var/log/cloud-init-output.log
/var/log/yum.log
</command>

</commands>
<files>#这里可以指定服务器本地文件,对应上传到镜像中的位置,比如传个包或者配置文件替换默认配置文件
<file name="/root/linux-rootfs-resize-master.zip" type="url">
file:///data/nvme0n1/oz/linux-rootfs-resize-master.zip
</file>
<file name="/var/lib/cloud/scripts/per-boot/resetroot" type="url">
file:///data/nvme0n1/oz/resetroot
</file>
<file name="/etc/cloud/cloud.cfg" type="url">
file:///data/nvme0n1/oz/cloud.cfg_centos6
</file>
</files>
</template>



编辑好执行命令,配置文件路径一定要写对
oz-install -p -u -d3 -a centos65.ks centos65.tdl -x centos65-libvirt.xml
以下为输出截图

原文地址:http://blog.51cto.com/gushiren/2121573

时间: 2024-11-08 21:50:22

OpenStack Oz自动化制作centos6.5镜像的相关文章

OpenStack制作CentOS6.7镜像

1.下载镜像 直接访问官方镜像地址下载,注意选择中国的镜像源,相对国外镜像下载速率比较快,进入后选择版本为6.7,在isos目录下下载x86_64的Minimal镜像. 2.创建虚拟机 首先需要创建一个qcow2格式镜像文件,用于作为虚拟机的磁盘,大小20G. [email protected]:/var/lib/libvirt/images# qemu-img create -f qcow2centos-6.7.qcow2 20G Formatting 'centos-6.7.qcow2',

2017-7-8 OpenStack手工+oz自动制作CentOS 7.3镜像

制作镜像是我一直想实践的,openstack制作镜像很大程度就是kvm制作镜像,区别就是虚拟机下载了cloud-init.cloud-utils.rootfs,我整理了下工作笔记,方便以后快速部署.最好选择物理机来做,不然VNC连接的时候太卡 前情提要:KVM机器就是控制节点,CPU是瓶颈问题,内存不是重点. 1.安装kvm基础软件包[[email protected] ~]# modprobe kvm [[email protected] ~]# egrep "(vmx|svm)"

trove 基于 centos7 制作 mysql5.5 镜像

本文档是手动制作mysql5.5的trove镜像 openstack版本为newton 1.创建基础虚拟机 登录openstack创建一台虚拟机,这台虚拟机用于制作trove镜像,虚拟机的根磁盘最终会上传到glance给trove使用,虚拟机的根磁盘容量根据需要设置,这里略掉这步的详细操作. 以下操作皆登录到这台虚拟机中操作 2. 配置ssh cat /etc/ssh/sshd_config UseDNS no 3.添加mysql源 yum install http://dev.mysql.co

trove 基于 centos7 制作 mysql5.6 镜像

本文档是手动制作mysql5.6的trove镜像 openstack版本为newton 1.创建基础虚拟机 登录openstack创建一台虚拟机,这台虚拟机用于制作trove镜像,虚拟机的根磁盘最终会上传到glance给trove使用,虚拟机的根磁盘容量根据需要设置,这里略掉这步的详细操作. 以下操作皆登录到这台虚拟机中操作 2.配置ssh cat /etc/ssh/sshd_config UseDNS no 3.添加mysql源 yum install http://dev.mysql.com

PXE+HTTP+tftp+kickstart 网络自动化安装centos6.5

基本流程: 1.网卡作为可引导的启动设备 2.BIOS找到引导设置网卡,激活网卡的PXE功能 3.客户端通过PXE的内置dhcp客户端尝试DHCP广播请求,从DHCP服务器获取IP地址.掩码.网关.网络属性 4.DHCP服务器告知客户端tftp服务器地址(next-server),将 "filename "pxelinux.0";" 参数中指定的文件(pxelinux.0)推送给客户端: 5.PXE的内置tftp客户端到指定tftp服务器下载启动镜像文件pxelin

docker制作jdk+tomcat镜像

docker部署TOMCAT项目 一.内核升级 [[email protected] ~]# uname -r   #内核查看确认 2.6.32-696.16.1.el6.x86_64 [[email protected] ~]# [[email protected] ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org [[email protected] ~]# rpm -Uvh http://www.elrepo.or

Centos7制作docker初始镜像

Centos7用febootstrap制作docker初始镜像包 使用工具:febootstrap 下载地址:http://down.51cto.com/data/2330414 使用命令: febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim -i openssh-server -i openssh-clients -i tar -i gzip centos7  /tmp/centos-image/  ht

构建PXE环境--网络自动化安装CentOs6.5

一.构建PXE环境实验 1.当前系统版本 2.查看网络环境和yum源 当前系统的IP是192.168.1.60,子网掩码是255.255.255.0,默认网关是192.168.1.1 本次实验使用的yum源是本地光盘,构建过程如下: (1)挂载本地光盘(已做成yum仓库的)到/media/centos6.5_DVD1目录下     (2)在/etc/yum.repos.d/目录下新建yum的配置文件local.repo,并编辑该配置文件,指定yum源在本地光盘上 3.安装并启动DHCP服务 (1

OpenStack部署笔记和安装WindowsXP镜像

以下是本人最近两周搭建OpenStack的心得与笔记,参考了网上很资料,终于搭建完成,途中遇到过很多问题,比如stack.sh执行中途出错问题,系统安装vnc连接问题,建云主机蓝屏问题,后来都慢慢解决了,供各位网友参考. 1. 系统为 ubuntu-14.04.1 amd64 位版本 ,电脑单网卡就可以了,不需要双网卡. 2. sudo apt-get update 3. sudo apt-get upgrade 4. sudo apt-get install python-netaddr gi