Create a virtualbox Based CentOS 6 OpenStack Cloud Image

前言:

    openstack 環境已經部署好了,接下來就是運行實例,運行實例就需要鏡像了。鏡像的來源分爲官方鏡像,三方鏡像,以及自定義鏡像。

    官方的鏡像不能自動擴容根目錄大小

    三方鏡像嘛……這個看需求吧

    自定義鏡像,也就是自己動手來做一個鏡像。我比較喜歡這種方式,在製作過程中可以學到新東西。由於本人使用的ubuntu 系統已經安裝了virtualbox 此例就使用virtualbox 爲例。


磁盤格式:

    openstack 鏡像服務支持的虛擬機鏡像磁盤格式有

    aki

        亞馬遜 kernel 鏡像

    ami

        亞馬遜 machine 鏡像

    ari

        亞馬遜 ramdisk 鏡像

    iso

        光盤數據格式

    qcow2

        支持QEMU 能動態擴展,支持寫時複製

    raw

        裸磁盤格式。各種格式可以在裸格式間轉換

    vdi

        支持VirtualBox虛擬機和QEMU

    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:

 yum install -y http://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm

安裝cloud-init 軟件包及其他所需包:

yum install -y cloud-init cloud-utils cloud-utils-growpart acpid git parted

安裝linux rootfs resize:

git clone 
cd linux-rootfs-resize
./install

將啓動日誌打印到Dashboard 控制檯,修改內核引導參數:

vim /boot/grub/menu.lst

在kernel 行尾增加

console=tty0 console=ttyS0,115200n8

在同一行上的同一文件中刪除對以下參數的任何引用:

rhgb quiet

刪除網絡配置中對UUID和MAC地址的硬編碼:

rm -f /etc/udev/rules.d/70-persistent-net.rules 
PRIMARY_INTERFACE=$(ip route list match 0.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
service iptables stop && chkconfig iptables off
service ip6tables sotp && chkconfig iptables off

安裝相關應用或應用源(可選)

清理yum:

yum clean all

刪除/tmp 目錄中的所有內容:

rm -rf /tmp/*

清理最後的登錄用戶日誌:

rm -f /var/log/wtmp /var/log/btmp

清理命令歷史記錄:

history -c

關閉虛擬機:

poweroff


轉換格式:

先將vdi轉爲raw裸格式,在轉換爲qcow2

VirtualBox支持格式轉換,命令如下

VBoxManage clonemedium      [disk|dvd|floppy] <uuid|inputfile> <uuid|outputfile>
                            [--format VDI|VMDK|VHD|RAW|<other>]
                            [--variant Standard,Fixed,Split2G,Stream,ESX]
                            [--existing]
VBoxManage clonehd "centos.vdi" centos.img  --format raw --variant standard


raw轉爲qcow2格式需要借用qemu-img完成

qemu-img convert -cf raw centos-6.8.img -O qcow2 centos-6.8.qcow2

參數說明:

    -f 指定需要轉換文件的文件格式,既輸入鏡像格式(可省略)

    -c 壓縮

    -O指定要轉換的目標格式,既輸出鏡像格式


將鏡像上傳到glance Repository

openstack image create "centos6.8" --file centos-6.8.qcow2 --disk-format qcow2 --container-format bare --public


注意:

    安裝操作系統時只分一個根(/)目錄,否則自擴容會失敗。

    網卡是DHCP自動獲取方式,且已處於激活狀態

    關閉系統自帶防火牆,使用openstack安全組


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章