Cobbler介绍:
Cobbler是一款自动化操作系统安装的实现,与PXE安装系统的区别就是可以同时部署多个版本的系统,而PXE只能选择一种系统。而如今的架构动辄就是上千台的服务器。而存在一些操作系统不统一的现象,例如最初的架构采用的是CentOS5系列的系统,而新出现了一些技术后,需要新的操作系统的支持,一方面是需要批量部署装机,而另一方面还需要考虑到如果老版本的服务器出现故障后还需要重新去部署。并且提供Web配置页面,可以只需要一些点击就可以完成一些操作。
Cobbler的实现和PXE的方法大同小异,例如都需要安装tftp,dhcp,http等,但是使用yum安装Cobbler的时候,会自动把需要的全部安装上,而不需要去手动一个个的安装。
本次将实现CentOS 6.5和CentOS7的安装。
而此次安装CentOS7的操作系统,新的系统将不再使用默认的EXT文件系统,对新引入的XFS做下简介:
XFS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性。并且在CentOS7上已经是默认的文件系统。主要特性包含一下几点:
数据完整性:
采用XFS文件系统时,如果发生宕机现象,由于文件系统开启日志功能,磁盘上的文件会记录到日志,并且可以短时间内恢复磁盘数据。
传输性:
XFS文件系统采用优化算法,日志记录对于IO影响小,而并不映像查询与分配的性能。XFS文件系统能够连续提供快速的反映时间。
可扩展性:
XFS是一个64bit的文件系统,可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持非常好,支持大数量目录。XFS文件系统使用表结构(B+树)保证文件系统可以快速搜索及快速分配空间。XFS文件系统能够持续提供高速操作,文件系统性能不受目录及文件数量限制。
传输带宽:
XFS文件系统能以接近裸设备的IO的性能存储数据,在单个文件系统测试中,吞吐量可以达到7GB美妙,对单个文件的读写操作达到4GB每秒。
安装Cobbler。
使用yum安装cobbler。
# yum install cobbler Install 21 Package(s) Total download size: 6.0 M Installed size: 23 M Is this ok [y/N]: Y Downloading Packages: (1/21): PyYAML-3.10-3.el6.x86_64.rpm | 157 kB 00:00 (2/21): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm | 15 kB 00:00 (3/21): cobbler-2.4.0-1.el6.noarch.rpm | 664 kB 00:00 (4/21): createrepo-0.9.9-18.el6.noarch.rpm | 94 kB 00:00 (5/21): deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 71 kB 00:00 (6/21): genisop_w_picpath-1.1.9-12.el6.x86_64.rpm | 348 kB 00:00 (7/21): httpd-2.2.15-29.el6.centos.x86_64.rpm | 821 kB 00:00 (8/21): httpd-tools-2.2.15-29.el6.centos.x86_64.rpm | 73 kB 00:00 (9/21): libyaml-0.1.5-1.el6.x86_64.rpm | 52 kB 00:00 (10/21): mod_wsgi-3.2-3.el6.x86_64.rpm | 66 kB 00:00 (11/21): mtools-4.0.12-1.el6.x86_64.rpm | 194 kB 00:00 (12/21): python-cheetah-2.4.1-1.el6.x86_64.rpm | 365 kB 00:00 (13/21): python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 27 kB 00:00 (14/21): python-markdown-2.0.1-3.1.el6.noarch.rpm | 118 kB 00:00 (15/21): python-netaddr-0.7.5-4.el6.noarch.rpm | 1.0 MB 00:00 (16/21): python-pygments-1.1.1-1.el6.noarch.rpm | 562 kB 00:00 (17/21): python-setuptools-0.6.10-3.el6.noarch.rpm | 336 kB 00:00 (18/21): python-simplejson-2.0.9-3.1.el6.x86_64.rpm | 126 kB 00:00 (19/21): syslinux-4.02-8.el6.x86_64.rpm | 859 kB 00:00 (20/21): tftp-server-0.49-7.el6.x86_64.rpm | 39 kB 00:00 (21/21): xinetd-2.3.14-39.el6_4.x86_64.rpm | 121 kB 00:00 -------------------------------------------------------------------------------------------------------------------------------------- Total 5.6 MB/s | 6.0 MB 00:01
可以看到这里是安装了http,lftp,因为dhcp服务还是需要手动去安装的。
使用yum安装dhcp。
# yum install dhcp启动httpd,lftp,cobbler, xinetd,rsync查看端口。
# ss -tual Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:bootps *:* #dhcp相关 udp UNCONN 0 0 *:bootpc *:* udp UNCONN 0 0 *:tftp *:* # tcp LISTEN 0 128 :::http :::* # tcp LISTEN 0 128 :::ssh :::* tcp LISTEN 0 128 *:ssh *:* tcp LISTEN 0 100 ::1:smtp :::* tcp LISTEN 0 100 127.0.0.1:smtp *:* tcp LISTEN 0 5 127.0.0.1:25151 *:* #cobbler默认端口 tcp LISTEN 0 64 :::rsync :::* #启动cobbler时,使用cobbler –help可以看到cbbler的命令选项,而使用cobbler check检测环境时,会有如下的报错。
编辑settings配置文件,修改上面报错的位置信息。
# vim /etc/cobbler/settings server: 192.168.151.128#修改cobbler的主机地址 next_server: 172.16.32.10#修改tftpIP地址 default_password_crypted: "$1$f75165f2$vmkPJLhF1yCiLhosykXOC/"#修改cobbler默认加密密码,使用如下命令生成 # openssl passwd -1 -salt `openssl rand -hex 4` Password: $1$f75165f2$vmkPJLhF1yCiLhosykXOC/复制pxelinux.0, menu.c32到/var/lib/cobbler/loaders/。
# cd /usr/share/syslinux/ # cp -r * /var/lib/cobbler/loaders/修改完成后执行cobbler sync。
# cobbler sync task started: 2014-10-07_231726_sync task started (id=Sync, time=Tue Oct 7 23:17:26 2014) running pre-sync triggers cleaning trees mkdir: /var/lib/tftpboot/pxelinux.cfg mkdir: /var/lib/tftpboot/grub mkdir: /var/lib/tftpboot/s390x mkdir: /var/lib/tftpboot/ppc mkdir: /var/lib/tftpboot/etc removing: /var/lib/tftpboot/grub/p_w_picpaths copying bootloaders copying: /usr/share/syslinux/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0 copying: /usr/share/syslinux/menu.c32 -> /var/lib/tftpboot/menu.c32 copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk copying distros to tftpboot copying p_w_picpaths generating PXE configuration files generating PXE menu structure rendering TFTPD files generating /etc/xinetd.d/tftp cleaning link caches running post-sync triggers running python triggers from /var/lib/cobbler/triggers/sync/post/* running python trigger cobbler.modules.sync_post_restart_services running shell triggers from /var/lib/cobbler/triggers/sync/post/* running python triggers from /var/lib/cobbler/triggers/change/* running python trigger cobbler.modules.scm_track running shell triggers from /var/lib/cobbler/triggers/change/* *** TASK COMPLETE ***Cobbler 子命令介绍。
cobbler check #检查cobbler配置 cobbler sync #步配置到dhcp pxe和数据目录 cobbler list #列出所有的cobbler元素 cobbler import #导入安装的系统光盘镜像 cobbler report #列出各元素的详细信息 cobbler distro #查看导入的发行版系统信息 cobbler profile #查看配置信息 cobbler system #查看添加的系统信息 cobbler reposync #同步yum仓库到本地因为dhcp需要还是需要手动安装配置,而不是需要cobbler来管理的,还需要配置dhcp。
# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf cp: overwrite `/etc/dhcp/dhcpd.conf'? y # vim /etc/dhcp/dhcpd.conf subnet 172.16.32.0 netmask 255.255.255.0 { range 172.16.32.15 172.16.32.50; #dhcp分配网络 option routers 172.16.32.10; #dhcp主机地址 next-server 172.16.32.10; #lftp地址 filename="pxelinux.0"; } # service dhcpd start接下来开始导入光盘映像文件。
# mount /dev/cdrom /mnt/ mount: block device /dev/sr0 is write-protected, mounting read-only导入CentOS6.5的映像文件
# cobbler import --name=CentOS_6.5_x86_64 --path=/mnt/
期间因为导入CentOS7的镜像文件时我的电脑磁盘满了而虚拟机停止,触发了一个Cobbler的BUG,再次启动虚拟机后重新导入CentOS7的映像文件时显示如下。
# cobbler import --name=CentOS_7_x86_64 --path=/mnt/ Traceback (most recent call last): File "/usr/bin/cobbler", line 35, in <module> sys.exit(app.main()) File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 644, in main rc = cli.run(sys.argv) File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 270, in run self.token = self.remote.login("", self.shared_secret) File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__ return self.__send(self.__name, args) File "/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request verbose=self.__verbose File "/usr/lib64/python2.6/xmlrpclib.py", line 1253, in request return self._parse_response(h.getfile(), sock) File "/usr/lib64/python2.6/xmlrpclib.py", line 1392, in _parse_response return u.close() File "/usr/lib64/python2.6/xmlrpclib.py", line 838, in close raise Fault(**self._stack[0]) xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">解决方法。
重新导入。
# cobbler import --name=CentOS_7_x86_64 --path=/mnt/ task started: 2014-10-08_173739_import task started (id=Media import, time=Wed Oct 8 17:37:39 2014) Found a candidate signature: breed=redhat, version=rhel6 Found a candidate signature: breed=redhat, version=fedora16 Found a candidate signature: breed=redhat, version=fedora17 Found a candidate signature: breed=redhat, version=fedora18 No signature matched in /var/www/cobbler/ks_mirror/CentOS_7_x86_64 !!! TASK FAILED !!!这个时候又一次的出错了:!!! TASK FAILED !!!,使用如下命令解决。
查看/var/www/cobbler/ks_mirror路径下的目录。
# ls CentOS_6.5_x86_64 CentOS_7_x86_64 config查看dirstro。
# cobbler distro list CentOS_6.5-x86_64 CentOS_7-x86_64接下来准备ks.cfg文件。CentOS6.5的cfg文件是参考我上次PXE时使用的,而CentOS7的在软件包安装以及磁盘分区上有些出入,CentOS7使用的是xfs系统。
#version=RHEL7 # System authorization information auth --enableshadow --passalgo=sha512 url --url=http://172.16.32.10/cobbler/ks_mirror/CentOS_7_x86_64 # Run the Setup Agent on first boot reboot firewall --disabled ignoredisk --only-use=sda # Keyboard layouts keyboard --vckeymap=us --xlayouts='cn' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp --device=ens32 --onboot=off --ipv6=auto network --hostname=localhost.localdomain # Root password rootpw --iscrypted $6$rHQRho3gkPJXIgy7$LTVHkf8PwxnOUc8QPvotK3myXGDsp2FKfdHWjWftjwcSAAB.V/j7Ki3lTDbu6e2Kc55imnNLc/Hno./VQh2cz. # System timezone timezone Asia/Shanghai --isUtc # System bootloader configuration bootloader --location=mbr --boot-drive=sda # Partition clearing information zerombr clearpart --all clearpart --none --initlabel # Disk partitioning information part /boot --fstype="xfs" --ondisk=sda --size=500 part pv.10 --fstype="lvmpv" --ondisk=sda --size=82087 volgroup centos --pesize=4096 pv.10 logvol /var --fstype="xfs" --size=40000 --name=var --vgname=centos #此处便是XFS的LVM逻辑卷划分 logvol / --fstype="xfs" --size=20000 --name=root --vgname=centos logvol swap --fstype="swap" --size=2080 --name=swap --vgname=centos logvol /usr --fstype="xfs" --size=20000 --name=usr --vgname=centos %packages @core @development %end添加Cobbler Profile。
# cobbler profile add --name=CentOS7_X86_64-basic --distro=CentOS_7-x86_64 --kickstart=/tmp/CentOS7_x86_64.ks.cfg # cobbler profile add --name=CentOS_6.5_X86_64-basic --distro=CentOS_6.5-x86_64 --kickstart=/tmp/CentOS6.5_x86_64.ks.cfg # cobbler profile list CentOS7_X86_64-basic CentOS_6.5-x86_64 CentOS_6.5_X86_64-basic CentOS_7-x86_64这时候就可以开始装机了。先安装CentOS7。
在安装CentOS6.5。
CobblerWeb界面。
# yum install cobbler-webWeb页面默认不允许任何人登录,需要手动修改认证相关配置。
创建账户,使其能够登录CobblerWeb页面。
# useradd Cadmin [root@web tmp]# passwd Cadmin Changing password for user Cadmin. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple修改Cobbler的用户配置文件,添加进Cobbler管理组。
# vim /etc/cobbler/users.conf [admins] admin = "Cadmin" cobbler = ""重启http,Cobbler。
# service cobblerd restart Stopping cobbler daemon: [ OK ] Starting cobbler daemon: [ OK ] # service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]地址栏输入172.16.32.10/cobbler_web,就可以访问了。
登录进去后就可以通过Web页面来配置了。