前言:
openstack 环境已经部署好了,接下来就是运行实例,运行实例就需要镜像了。镜像的来源分为官方镜像,三方镜像,以及自定义镜像。
官方的镜像不能自动扩容根目录大小
三方镜像嘛……这个看需求吧
自定义镜像,也就是自己动手来做一个镜像。我比较喜欢这种方式,在制作过程中可以学到新东西。由于本人使用的ubuntu 系统已经安装了virtualBox 此例就使用virtualBox 为例。
磁盘格式:
openstack 镜像服务支持的虚拟机镜像磁盘格式有
aki
亚马逊 kernel 镜像
ami
亚马逊 machine 镜像
ari
亚马逊 ramdisk 镜像
iso
光盘数据格式
qcow2
raw
裸磁盘格式。各种格式可以在裸格式间转换
vdi
vhd
VHD磁盘格式,支持VMware,Xen,Microsoft,VirtualBox和其它虚拟化
vhdx
增强版本的VHD格式,支持更大磁盘大小
vmdk
常见磁盘格式,支持常见虚拟化格式
需求:
可根据磁盘大小自动扩展根目,修改主机名,注入ssh密钥,根据作用安装相应软件,如Nginx、apache、tomcat、PHP-fpm、DB……
实现以上需求,需要借用几个工具实现
cloud-init (https://launchpad.net/cloud-init/)功能
设置默认语言环境
设置实例主机名
生成实例ssh私钥
添加ssh密钥到用户 .ssh/authorized_keys 使其能够登录
设置临时挂载点
cloud-utils https://launchpad.net/cloud-utils
扩大硬盘
linux-rootfs-resize https://github.com/flegmatik/linux-rootfs-resize
调用cloud-utils ,虚拟机启动时检测硬盘扩大,则自动扩展根目录
具体实现:
因本人电脑已经安装有VirtualBox,且已安装好Centos 6.8系统(VirtualBox如何安装系统略),这里就基于已安装好的系统做配置。
添加EPEL 库,安装cloud-init:
yuminstall-yhttp://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
安装cloud-init 软件包及其他所需包:
yuminstall-ycloud-initcloud-utilscloud-utils-growpartacpidgitparted
安装linux rootfs resize:
gitclone cdlinux-rootfs-resize ./install
将启动日志打印到Dashboard 控制台,修改内核引导参数:
vim/boot/grub/menu.lst
在kernel 行尾增加
console=tty0console=ttyS0,115200n8
rhgbquiet
删除网络配置中对UUID和MAC地址的硬编码:
rm-f/etc/udev/rules.d/70-persistent-net.rules PRIMARY_INTERFACE=$(iproutelistmatch0.0.0.0|awk'NR==1{print$5}') sed-i'/UUID/d'/etc/sysconfig/network-scripts/ifcfg-$PRIMARY_INTERFACE sed-i'/HWADDR/d'/etc/sysconfig/network-scripts/ifcfg-$PRIMARY_INTERFACE
为了是openstack实例能与元数据服务通行,修改网络配置:
echo"NOZEROCONF=yes">>/etc/sysconfig/network
关闭iptables、selinux:
sed-i's/^SELINUX=.*/SELINUX=disabled/g'/etc/selinux/config serviceiptablesstop&&chkconfigiptablesoff serviceip6tablessotp&&chkconfigiptablesoff
安装相关应用或应用源(可选)
清理yum:
yumcleanall
rm-rf/tmp/*
rm-f/var/log/wtmp/var/log/btmp
清理命令历史记录:
history-c
关闭虚拟机:
poweroff
转换格式:
先将vdi转为raw裸格式,在转换为qcow2
VBoxManageclonemedium[disk|dvd|floppy]<uuid|inputfile><uuid|outputfile> [--formatVDI|VMDK|VHD|RAW|<other>] [--variantStandard,Fixed,Split2G,Stream,ESX] [--existing]
VBoxManageclonehd"centos.vdi"centos.img--formatraw--variantstandard
raw转为qcow2格式需要借用qemu-img完成
qemu-imgconvert-cfrawcentos-6.8.img-Oqcow2centos-6.8.qcow2
参数说明:
-c 压缩
-O指定要转换的目标格式,既输出镜像格式
将镜像上传到glance Repository
openstackimagecreate"centos6.8"--filecentos-6.8.qcow2--disk-formatqcow2--container-formatbare--public
注意:
安装操作系统时只分一个根(/)目录,否则自扩容会失败。