概述
关于如何安装部署openstack,各个大小公司纷纷推出自己的方案和产品,例如fuel、trippleO、RDO、devstack等等。试用了RDO等工具后,也萌生了实现一个自研工具的想法(顺便弥补这一块知识的空白),现将思路及过程记录如下。
需求
1、支持灵活的安装部署方式(单台host或者批量host)和多种安装介质(物理机或者虚拟机)
2、安装部署过程用户体验好
(1)安装工时短
(2)并发安装服务器数量多
(3)用户参与环节尽量少
3、兼容性好
(1)可以支持业界主流服务器
(2)跨vlan部署
流程
1、 制作ISO
操作系统采用centos 6.5,openstack采用H版本,使用livecd-creator开源软件制作livecd(livecd是redhat体系提供的一种镜像格式,制作的iso可以直接启动,当然也可以安装到硬盘上。现在centos、fedora每个版本发布的repo都包含了已编译出的livecd iso。例如CentOS-6.4-x86_64-LiveCD.iso。也可以到其官方网站下载)
步骤:
(1)执行以下命令,安装redhat openstack Grizlly的yum文件
yum install -y http://rdo.fedorapeople.org/openstack/openstack-grizzly/rdo-release-grizzly-2.noarch.rpm
(2)制作ks文件:可以在互联网上找一个标准的centos的ks文件作为模板,然后进行修改,将openstack的rpm包信息添加到ks文件中,则出iso时会自动安装openstack的rpm包
(3)安装livecd-tools rpm包
(4)执行以下命令出iso
livecd-creator --config=centos-livecd-minimal.ks --fslabel=openstack-LiveCD -d --shell
2、制作将livecd安装到硬盘并支持从硬盘启动的脚本
livecd的安装不能使用anaconda安装工具,需要自行写作脚本程序(shell或python等),脚本大致流程如下:
(1)找到livecd中文件系统所挂载的设备,例如ext3fs.img挂载到了/dev/loop3上
losetup -a |grep ext3fs.img
(2)将img拷贝到目的磁盘分区中,例如/dev/vda1
cat /dev/loop3 /dev/vda1
(3)安装bootloader,用的是extlinux,这样下次就可以从硬盘启动了
cat /usr/share/syslinux/mbr.bin > dev/vda #写入mbr blkid -o value -s UUID /dev/vda1 #生成分区的uuid mkdir /mnt/tmp #生成临时目录 mount /dev/vda1 /mnt/tmp #将根分区mount到临时目录 extlinux -i /mnt/tmp/boot/ #使用extlinux工具制作启动目录 extlinux --clear-once /mnt/tmp/boot/ cp -rf /dev/.initramfs/live/isolinux/* /mnt/tmp/boot/ mv /mnt/tmp/boot/isolinux.cfg /mnt/tmp/boot/extlinux.conf sed -i 's/live:CDLABEL=.* /UUID=uuid /' /mnt/tmp/boot/extlinux.conf #uuid是上面生成的 sed -i 's/ ro / /' /mnt/tmp/boot/extlinux.conf sed -i 's/ rd.live.image / /' /mnt/tmp/boot/extlinux.conf umount /dev/vda1
3、 支持pxe批量安装
(1) pxe服务器搭建
关于集成pxe的部署工具,在开源社区有很多,例如xcat、cobbler,工具各有特点,本次考虑使用cobbler
(2) 制作的livcecd能够支持pxe流程
livecd本身是不支持pxe加载的,为支持此功能,需先使用livecd-iso-to-pxeboot工具,将iso生成vmlinuz和initrd0.img文件,然后将这两个文件部署到cobbler中。 其核心思想是将livced中的内存文件系统制作成ramdisk文件,就可以通过pxe流程引导启动到内存文件系统了。相关命令如下:
iso="openstack" #变量定义 livecd-iso-to-pxeboot $iso.iso #生成vmlinuz和initrd0.img文件 #部署vmlinuz和initrd0.img文件 cobbler distro add --name=$iso --kernel=/var/www/html/iso/$iso/tftpboot/vmlinuz0 --initrd=/var/www/html/iso/$iso/tftpboot/initrd0.img cobbler distro edit --name=$iso --kopts='root=live:/'$iso.iso' rootfstype=auto rootflags=ro !text !lang !ksdevice installserverip='$serverIp cobbler profile add --name=$iso --distro=$iso
(3) pxe能支持大规模批量部署,可靠性好
使用livecd-iso-to-pxe工具将iso封装成vmlinuz和initrd.img(200多MB)两个文件,使用pxe(tftp)流程大规模批量部署可能性能及可靠性存在问题。故配置使用gpxe,使用http协议替代tftp协议下载vmlinuz和initrd.img
步骤:
1、配置cobbler打开gpxe开关,配置项为enable_gpxe
2、重启服务器/虚拟机,观察是否会变更为进入gpxe加载流程
注意:部分网卡型号可能不支持gpxe特性,导致无法进入http下载vmlinuz和initrd0.img的流程。可通过配置DHCP服务,达到支持gpxe的服务器使用gpxe加载,否则使用pxe加载的效果 /etc/dhcp/dhcpd.conf中配置举例如下。 hardware ethernet 00:16:6D:AD:86:33; if exists user-class and option user-class = "iPXE" { filename "http://186.100.8.248/cblr/svc/op/gpxe/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c"; } else if exists user-class and option user-class = "gPXE" { filename "http://186.100.8.248/cblr/svc/op/gpxe/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c"; } else { filename "undionly.kpxe"; } 访问http://186.100.8.248/cblr/svc/op/gpxe/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c地址可发现cobbler产生的动态配置如下: !gpxe kernel http://186.100.8.248:80/cobbler/images/allinone/vmlinuz0 imgargs vmlinuz0 rootflags=ro root=live:/allinone.iso installserverip=186.100.8.248 rootfstype=auto kssendmac ks=http://186.100.8.248/cblr/svc/op/ks/system/735135b1-d72f-47f2-9f1d-13c63e75dc9c initrd http://186.100.8.248:80/cobbler/images/allinone/initrd0.img boot
(4) pxe能够跨vlan部署服务器
交换机配置dhcp中继、dhcp服务配置为不同vlan服务器分配对应网段ip
4、 Openstack环境配置
使用业界成熟的配置工具即可,例如puppet、salt等 salt开源软件
相关参考:
https://fedoraproject.org/wiki/How_to_create_and_use_a_Live_CD/zh-cn
http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-file.html
http://jgershater.ulitzer.com/node/2701636?page=0,1
http://www.syslinux.org/wiki/index.php/EXTLINUX
http://molinux.blog.51cto.com/2536040/548247
http://www.ibm.com/developerworks/cn/linux/l-cobbler/
由 udpwork.com 聚合
|
评论: 0
|
要! 要! 即刻! Now!