NOTICE:网络自动化安装操作系统,需要客户端支持网卡启动和PXE功能,不过不必担心,现在网卡大部分都支持PXE功能。
实施步骤:
一、配置DHCP服务器:
1)安装DHCP服务器
- [root@rrl ~]#yum install -y dhcp*
2)编辑DHCP服务器配置文件/etc/dhcp/dhcpd.conf
由于我们的目的是安装操作系统,而不是将其作为专门的DHCP服务器,所以,我们只需要配置几项简单的参数就行了。这里我贴下我的配置:
- ddns-update-style interim;
- allow booting;
- allow bootp;
- ignore client-updates;
- set vendorclass = option vendor-class-identifier;
- subnet 192.168.1.0 netmask 255.255.255.0 {
- option routers 192.168.1.1;
- # option domain-name "ns.rrl.com";
- # option domain-name-servers 192.168.1.1;
- option subnet-mask 255.255.255.0;
- range dynamic-bootp 192.168.1.100 192.168.1.254;
- filename "/pxelinux.0";
- default-lease-time 21600;
- max-lease-time 43200;
- next-server 192.168.1.3;
- }
- 简单介绍:
- Option routers指定网关;
- Option domain-name-server指定DNS服务器;
- Option subnet-mask指定掩码;
- range dynamic-bootp指定分配给客户端的IP地址段;
- Filename 指定启动镜像;
- Next-server 指定TFTP服务器。
这里我将DNS配置注释掉,是因为在安装某些版本的红帽系统时,会需要指定的DNS服务器进行解析,从而导致自动化安装失败。
3)启动DHCP服务
- [root@rrl ~]#service dhcpd start
- [root@rrl ~]#chkconfig --add dhcpd #设置dhcp服务开机自动启动
二、配置TFTP服务器
1)安装TFTP服务器
- [root@rrl ~]#yum install tftp*
2)编辑tftp的配置文件
Tftp服务是受xinetd(网络守护进程)控制的,所以tftp的配置文件是/etc/xinetd.d/tftp。下面贴下我修改后的配置:
- service tftp
- {
- disable = no
- socket_type = dgram
- protocol = udp
- wait = yes
- user = root
- server = /usr/sbin/in.tftpd
- server_args = -u nobody -s /tftpboot
- per_source = 11
- cps = 100 2
- flags = IPv4
- }
修改的地方我用红色标记出来了,只需要修改这两处就OK了。
此外/tftpboot是tftp服务的根目录,默认目录是/var/lib/tftpboot,这里为了方便我将其进行了更改。所以我们要多做一步创建这个目录:
- [root@rrl ~]#mkdir /tftpboot
3)为了简便,将Linux安装程序的内核、根文件系统文件及其他文件全复制到tftp的根目录中
- [root@rrl ~]#mkdir /media/iso
- [root@rrl ~]#mount -o loop,ro rhel-server-6.2-x86_64-dvd.iso /media/iso
- [root@rrl ~]#cp /media/iso/* /tftpboot
4)将PXE启动镜像文件pxelinux.0复制到tftp的根目录中
启动镜像pxelinux.0可以从syslinux安装包获得。所以首先要确保syslinux已经安装,这里假设没有安装过syslinux安装包。
- [root@rrl ~]#yum install –y syslinux
- [root@rrl ~]#rpm –ql syslinux | grep “pxelinux.0”
- /usr/share/syslinux/gpxelinux.0
- /usr/share/syslinux/pxelinux.0
- [root@rrl ~]#cp /usr/share/syslinux/pxelinux.0 /tftpboot
5)将pxelinux.0的配置文件复制到/tftpboot/pxelinux.cfg目录中,这里我们将ISO镜像中自带的配置文件/media/iso/isolinux/isolinux.cfg复制到该目录下。
- [root@rrl~]#mkdir /tftpboot/pxelinux.cfg
- [root@rrl~]#cp /media/iso/isolinux/isolinux.cfg
- /tftpboot/pxelinux.cfg/default
- [root@rrl~]#chmod +x /tftpboot/pxelinux.cfg/default #该文件默认没有写权限
后面我们还需要对/tftpboot/pxelinux.cfg/defalut文件进行简单的编辑,所以到后面我们会看到这个文件的内容的。这个配置文件只适合对应操作系统的ISO文件的系统安装。当然我们也可以对这个配置文件进行修改,使这台安装服务器支持多个linux操作系统的选择安装。这里只做单一版本的linux操作系统的安装服务器。
6)启动tftp服务器
- [root@rrl~]#service xinetd start
- [root@rrl~]#chkconfig --add xinetd #设置TFTP等服务开机自动启动
三、配置WEB服务器
1)安装httpd服务器
- [root@rrl~]#yum install –y httpd*
2)配置Web服务器
通过yum安装的httpd服务器网页文件放置的位置在/var/www/html目录中。我们在这个目录中创建rhel6.2镜像的挂载目录。然后将镜像重新挂载到这个目录下。
- [root@rrl~]#mkdir /var/www/html/rhel6.2
- [root@rrl~]#umount /media/iso
- [root@rrl~]#mount –o loop,ro rhel-server-6.2-x86_64-dvd.iso /var/www/html/rhel6.2
3)启动httpd服务器
- [root@rrl~]#service httpd start
- [root@rrl~]#chkconfig --add httpd #设置httpd服务开机自动启动
在这个阶段我们也可以使用NFS或者FTP的方式进行部署,配置过程同样很简单。只需要执行几个命令并且修改对应的kickstart文件中的如何指定安装树的指向的配置选项。在下面kickstart文件中我会给出nfs和ftp的指向配置,可以参考一下。
三、配置kickstart文件
1)kickstart文件有三种方式进行创建
2)创建kickstart文件
我使用的是第三种方式,复制/root/anaconda-ks.cfg到/var/www/html目录下,并更名为ks.cfg,并为其添加读取权限。
- [root@rrl~]#cp anaconda-ks.cfg /var/ww/html/ks.cfg
- [root@rrl~]#chmod +r /var/www/html/ks.cfg
下面贴出我配置好的kickstart文件:
- # Kickstart file automatically generated by anaconda.
- #version=DEVEL
- Install
- #nfs --server=192.168.1.3 --dir=/media/cdrom
- #url --url=ftp://root:[email protected]/var/ftp
- url --url=http://192.168.1.3/rhel6.2
- lang en_US.UTF-8
- keyboard us
- text
- key –skip #红帽的序列号,如果有则写,没有则跳过。注:有些版本的系统会忽略这个,而有些则需要你明确定义跳过该步骤。 否则会影响自动化安装。
- network –bootproto=dhcp --device=eth0 --onboot=on
- rootpw --iscrypted $1$AbMG5lMV$wpNs2yKuFbz4iev/ #为root用户设密码,明文也行。
- # Reboot after installation
- reboot
- firewall --disabled
- authconfig --useshadow --passalgo=sha512
- selinux --disabled
- timezone Asia/Shanghai
- bootloader --location=mbr --driveorder=sda
- # The following is the partition information you requested
- # Note that any partitions you deleted are not expressed
- # here so unless you clear all partitions first, this is
- # not guaranteed to work
- clearpart --all --initlabel
- part /boot --fstype=ext4 --size=500
- part swap --size=2048
- part / --fstype=ext4 --grow --size=2 #--grow表示将剩余的所有磁盘空间分配给根分区
- #逻辑卷分区创建实例
- part /boot –fstype=ext4 –size=500 #因为系统启动时无法识别lvm分区表,所以需要为/boot单独分区。
- part pv.01 --grow --size=1
- volgroup vg0 pv.01
- logvol swap --fstype=swap --name=swap --vgname=vg0 --size=1024
- logvol / --fstype=ext4 --name=root --vgname=vg0 --size=5120
- logvol /tmp --fstype=ext4 --name=tmp --vgname=vg0 --size=5120
- logvol /home --fstype=ext4 --name=home --vgname=vg0 --size=5120
- logvol /usr/local --fstype=ext4 --name=local --vgname=vg0 --size=10240
- %packages
- @Base
- @Core
- @base
- @client-mgmt-tools
- @debugging
- @emacs
- @ftp-server
- @hardware-monitoring
- @large-systems
- @network-file-system-client
- %end
NOTICE:红帽5系列与红帽6系列的kickstart文件有点区别,在红帽5系列中如果有%end选项的话,在安装过程中会报错。红帽6.0以后的系统支持该选项。好像红帽5系列的还不支持ext4文件系统,所以在kickstart文件中要根据系统的版本进行相应的修改。
最后再在pxelinux.0的配置文件/tftpboot/pxelinux.cfg/default文件中指定kickstart文件即可。编辑/tftpboot/pxelinux.cfg/defalut文件,修改的内容我用红色进行标记,另外,灰色的内容可以删除:
- default vesamenu.c32
- #prompt 1
- timeout 30
- display boot.msg
- menu background splash.jpg
- menu title Welcome to Red Hat Enterprise Linux 6.2!
- menu color border 0 #ffffffff #00000000
- menu color sel 7 #ffffffff #ff000000
- menu color title 0 #ffffffff #00000000
- menu color tabmsg 0 #ffffffff #00000000
- menu color unsel 0 #ffffffff #00000000
- menu color hotsel 0 #ff000000 #ffffffff
- menu color hotkey 7 #ffffffff #ff000000
- menu color scrollbar 0 #ffffffff #00000000
- label linux
- menu label ^Install or upgrade an existing system
- menu default
- kernel vmlinuz
- append initrdinitrd=initrd.img ks=http://192.168.1.3/ks.cfg
- label vesa
- menu label Install system with ^basic video driver
- kernel vmlinuz
- append initrdinitrd=initrd.img xdriver=vesa nomodeset
- label rescue
- menu label ^Rescue installed system
- kernel vmlinuz
- append initrdinitrd=initrd.img rescue
- label local
- menu label Boot from ^local drive
- localboot 0xffff
- label memtest86
- menu label ^Memory test
- kernel memtest
- append –
四、安装测试
新建虚拟机进行测试,在网络安装过程中,我们只需要在开始的时候注意要从网卡启动就Ok了。然后我们就可以再接一台服务器到交换机继续安装了。是不是很方便呢?下面是我测试安装过程的一部分截图,只是为了进行说明,在实际操作中我们就不必要看这些内容了。
下图是一个菜单选择界面,与我们用光盘安装时候的一样,其中默认的就是进入系统安装,另外菜单中的选项、以及等待的时间都是在/tftpboot/pxelinux.cfg/default进行设置的。这个菜单界面对我们配置一个能够网络安装多个不同版本的linux的时候是非常有帮助的。
图 4-1 菜单界面
下图是客户端正在进行网络配置:
图4-2 网络配置
下图是获取相关文件:
图4-3 获取文件
下图是在进行初始化安装程序:
图4-4 初始化
下图是安装我们在kickstart文件定义的软件包组和额外的软件包,等软件包安装完成以后,根据我们在kickstart文件中的定义,系统会自动重启。
图4-5 安装软件包
至此,所有的过程都完成了,当然在实施的时候也遇到了各种各样的问题,这就需要我们一步步进行调整了,说一句:google真的很强大,有什么问题就问google吧!
Now,我们就可以在真机上进行安装了。个人认为:看百遍文档,不如实际完成一次。我真心这样认为,PXE网络安装,我以前也没有配置过,在网上看了好多文档,感觉好难,怎么这么复杂,但是当我从头到尾实际完成以后,蓦然回首,发现这东西竟然如此简单。
正在研究Cobbler批量部署工具的使用方法,Cobbler的使用方法也挺简单的,有空也总结个文档。但是对于Cobbler的高级用法就不做深入的研究了。