Jump to: navigation, search

Main Page/cobbler

< Main Page
Revision as of 13:54, 28 March 2014 by Yj.yuan@huawei.com (talk | contribs) (Created page with "关键技术点: 1、制作livecd 介绍:livecd是redhat体系提供的一种镜像格式,制作的iso可以直接启动,当然也可以安装到硬盘上。现在cent...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

关键技术点: 1、制作livecd 介绍:livecd是redhat体系提供的一种镜像格式,制作的iso可以直接启动,当然也可以安装到硬盘上。现在centos、fedora每个版本发布的repo都包含了已编译出的livecd iso。例如CentOS-6.4-x86_64-LiveCD.iso。也可以到其官方网站下载 步骤: (1)执行以下命令,安装redhat openstack rdo的yum文件。注意根据需要安装的openstack版本选择合适的rpm包 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 困难: 实际操作过程中,碰到的最大困难是一开始找了个裁剪了的centos ks文件,结果制作的包含openstack的iso,安装后因为缺一些rpm包,出现各种莫名奇妙问题。最后解决办法是先制作一个非裁剪的centos os,然后在openstack可以正常运行前提下,再做系统裁剪瘦身 相关参考: 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

2、写作脚本,将livcd安装到OS中,流程及所用到系统命令如下:

  1. 找到livecd中文件系统所挂载的设备,例如ext3fs.img挂载到了/dev/loop3上

losetup -a |grep ext3fs.img

  1. 将img拷贝到目的磁盘分区中,例如/dev/vda1

cat /dev/loop3 /dev/vda1

  1. 安装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 到此,重启服务器就可以从硬盘启动了 相关参考: http://www.syslinux.org/wiki/index.php/EXTLINUX http://molinux.blog.51cto.com/2536040/548247

3、配置pxe服务器,通过pxe方式批量安装openstack节点 介绍:在网上看到有许多相关的集成部署工具,例如xcat、cobbler,其支持的功能大同小异。本次考虑使用cobbler。 步骤: 1、cobbler网上资料较多,参考网上资料即可完成cobbler的基本搭建 2、将livecd iso部署到cobbler中作为repo 注:livce本身是不支持pxe加载的,为支持此功能,需先使用livecd-iso-to-pxeboot工具,将iso生成vmlinuz和initrd0.img文件,然后将这两个文件部署到cobbler中。 核心思想是将livced中的内存文件系统制作成ramdisk文件,就可以通过pxe流程引导启动到内存文件系统了 相关命令如下: iso="openstack" livecd-iso-to-pxeboot $iso.iso 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 到此,就可以通过pxe加载openstack的livced iso中。加载完毕后,可以手工执行以上介绍“将livcd安装到OS中”脚本将系统安装到硬盘中。也可以在制作iso时写入系统自启动命令自动执行安装脚本 3、cobbler默认pxe引导方式是tftp,tftp是不可靠协议,而现在制作的ramdisk文件有200多MB,如果并发安装多个主机,很可能出现引导慢或者断连的情况。在网上遍历一把,发现可以用ipxe来替代pxe。ipxe的核心理念是用http协议代替tftp协议来下载vmlinuz和initrd0.img 这里遇到很多问题,记录如下: (1)cobbler是否支持gpxe,经网上搜索,collber已经支持gpxe,对应配置项如下:

    sed -i "s/^enable_gpxe:.*/enable_gpxe: 1/g" /etc/cobbler/settings

(1)pxe安装虚拟机正常,但是安装服务器则一直进入不到http下载vmlinuz和initrd0.img的流程。

    结果:定位发现服务器的网卡不支持gpxe

(2)有的网卡能支持gpxe、有的不支持,怎样的配置能够自动判断支持情况并选择用gpxe还是pxe呢

    结果:可以在cat /etc/dhcp/dhcpd.conf 写if...else进行逻辑判断,如果是ipxe/gpxe则返回http形式的vmlinuz和initrd0.img路径,否则返回undionly.kpxe这个pxe引导文件
    例子如下:

host generic_735135b1-d72f-47f2-9f1d-13c63e75dc9c {

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";
}
next-server    186.100.8.248;

} 如果是ipxe、gxe则调用collber的脚本,产生http下载vmlinuz和initrd0.img的配置信息,例子如下:

  1. !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 相关参考: http://www.ibm.com/developerworks/cn/linux/l-cobbler/