DHCP+TFTP+HTTP+KICKSTART网络自动化部署服务器

    本文档仅作为快速配置自动化安装服务器的一般性指导,对于其他延伸的内容在这里不做过多的介绍。
    这里是通过虚拟机进行实际部署前的测试,完全可用于实际的部署工作。
    虚拟环境:
    操作系统:rhel-server-6.2-x86_64
    IP:192.168.1.3
    客户端需要安装的系统:rhel-server-6.2-x86_64

    NOTICE:网络自动化安装操作系统,需要客户端支持网卡启动和PXE功能,不过不必担心,现在网卡大部分都支持PXE功能。

实施步骤:

一、配置DHCP服务器:

1)安装DHCP服务器

  
  
  
  
  1. [root@rrl ~]#yum install -y dhcp* 

2)编辑DHCP服务器配置文件/etc/dhcp/dhcpd.conf

    由于我们的目的是安装操作系统,而不是将其作为专门的DHCP服务器,所以,我们只需要配置几项简单的参数就行了。这里我贴下我的配置:

  
  
  
  
  1. ddns-update-style interim; 
  2.  
  3. allow booting; 
  4. allow bootp; 
  5. ignore client-updates; 
  6. set vendorclass = option vendor-class-identifier; 
  7. subnet 192.168.1.0 netmask 255.255.255.0 { 
  8.      option routers          192.168.1.1; 
  9. #    option domain-name         "ns.rrl.com"; 
  10. #    option domain-name-servers 192.168.1.1; 
  11.      option subnet-mask         255.255.255.0; 
  12.      range dynamic-bootp        192.168.1.100 192.168.1.254; 
  13.      filename                "/pxelinux.0"; 
  14.      default-lease-time         21600; 
  15.      max-lease-time             43200; 
  16.      next-server           192.168.1.3; 
  
  
  
  
  1. 简单介绍:  
  2.  Option routers指定网关;     
  3.  Option domain-name-server指定DNS服务器;      
  4.  Option subnet-mask指定掩码;      
  5.  range dynamic-bootp指定分配给客户端的IP地址段;      
  6.  Filename 指定启动镜像;      
  7.  Next-server 指定TFTP服务器。  

    这里我将DNS配置注释掉,是因为在安装某些版本的红帽系统时,会需要指定的DNS服务器进行解析,从而导致自动化安装失败。

3)启动DHCP服务

  
  
  
  
  1. [root@rrl ~]#service dhcpd start  
  2. [root@rrl ~]#chkconfig --add dhcpd           #设置dhcp服务开机自动启动 

二、配置TFTP服务器

1)安装TFTP服务器

  
  
  
  
  1. [root@rrl ~]#yum install tftp* 

2)编辑tftp的配置文件

Tftp服务是受xinetd(网络守护进程)控制的,所以tftp的配置文件是/etc/xinetd.d/tftp。下面贴下我修改后的配置:

  
  
  
  
  1. service tftp 
  2.         disable                 = no 
  3.         socket_type             = dgram 
  4.         protocol                = udp 
  5.         wait                    = yes 
  6.         user                    = root 
  7.         server                  = /usr/sbin/in.tftpd 
  8.         server_args             = -u nobody -s /tftpboot 
  9.         per_source              = 11 
  10.         cps                  = 100 2 
  11.         flags                   = IPv4 

    修改的地方我用红色标记出来了,只需要修改这两处就OK了。

    此外/tftpboot是tftp服务的根目录,默认目录是/var/lib/tftpboot,这里为了方便我将其进行了更改。所以我们要多做一步创建这个目录:

  
  
  
  
  1. [root@rrl ~]#mkdir /tftpboot 

3)为了简便,将Linux安装程序的内核、根文件系统文件及其他文件全复制到tftp的根目录中

  
  
  
  
  1. [root@rrl ~]#mkdir /media/iso 
  2. [root@rrl ~]#mount -o loop,ro rhel-server-6.2-x86_64-dvd.iso /media/iso 
  3. [root@rrl ~]#cp /media/iso/* /tftpboot 

4)将PXE启动镜像文件pxelinux.0复制到tftp的根目录中

    启动镜像pxelinux.0可以从syslinux安装包获得。所以首先要确保syslinux已经安装,这里假设没有安装过syslinux安装包。

  
  
  
  
  1. [root@rrl ~]#yum install –y syslinux  
  2. [root@rrl ~]#rpm –ql syslinux | grep “pxelinux.0”  
  3. /usr/share/syslinux/gpxelinux.0  
  4. /usr/share/syslinux/pxelinux.0  
  5. [root@rrl ~]#cp /usr/share/syslinux/pxelinux.0 /tftpboot 

5)将pxelinux.0的配置文件复制到/tftpboot/pxelinux.cfg目录中,这里我们将ISO镜像中自带的配置文件/media/iso/isolinux/isolinux.cfg复制到该目录下。

  
  
  
  
  1. [root@rrl~]#mkdir /tftpboot/pxelinux.cfg 
  2. [root@rrl~]#cp /media/iso/isolinux/isolinux.cfg  
  3. /tftpboot/pxelinux.cfg/default 
  4. [root@rrl~]#chmod +x /tftpboot/pxelinux.cfg/default   #该文件默认没有写权限 

    后面我们还需要对/tftpboot/pxelinux.cfg/defalut文件进行简单的编辑,所以到后面我们会看到这个文件的内容的。这个配置文件只适合对应操作系统的ISO文件的系统安装。当然我们也可以对这个配置文件进行修改,使这台安装服务器支持多个linux操作系统的选择安装。这里只做单一版本的linux操作系统的安装服务器。

6)启动tftp服务器

  
  
  
  
  1. [root@rrl~]#service xinetd start 
  2. [root@rrl~]#chkconfig --add xinetd        #设置TFTP等服务开机自动启动 

三、配置WEB服务器

1)安装httpd服务器

  
  
  
  
  1. [root@rrl~]#yum install –y httpd* 

2)配置Web服务器

    通过yum安装的httpd服务器网页文件放置的位置在/var/www/html目录中。我们在这个目录中创建rhel6.2镜像的挂载目录。然后将镜像重新挂载到这个目录下。

  
  
  
  
  1. [root@rrl~]#mkdir /var/www/html/rhel6.2  
  2. [root@rrl~]#umount /media/iso 
  3. [root@rrl~]#mount –o loop,ro rhel-server-6.2-x86_64-dvd.iso /var/www/html/rhel6.2 

3)启动httpd服务器

  
  
  
  
  1. [root@rrl~]#service httpd start 
  2. [root@rrl~]#chkconfig --add httpd          #设置httpd服务开机自动启动 

    在这个阶段我们也可以使用NFS或者FTP的方式进行部署,配置过程同样很简单。只需要执行几个命令并且修改对应的kickstart文件中的如何指定安装树的指向的配置选项。在下面kickstart文件中我会给出nfs和ftp的指向配置,可以参考一下。

三、配置kickstart文件

1)kickstart文件有三种方式进行创建

  
  
  
  
  • 纯手工打造方式,就是自己使用文本工具(如:vi)直接进行编辑配置; 
  • System-config-kickstart方式:这需要我们事先安装好syste-config-kickstart软件包,使用yum安装即可。然后使用这个软件定制我们的kickstart文件;  
  • 复制/root/anaconda-ks.cfg文件方式:Red Hat操作系统,在系统安装完成后,会自动在root家目录下创建一个anaconda-ks.cfg文件,这个文件真实的记录了系统安装过程中的配置。我们可以复制这个文件,然后在其基础上进行配置。 

2)创建kickstart文件

    我使用的是第三种方式,复制/root/anaconda-ks.cfg到/var/www/html目录下,并更名为ks.cfg,并为其添加读取权限。

  
  
  
  
  1. [root@rrl~]#cp anaconda-ks.cfg /var/ww/html/ks.cfg 
  2. [root@rrl~]#chmod +r /var/www/html/ks.cfg 

下面贴出我配置好的kickstart文件:

  
  
  
  
  1. # Kickstart file automatically generated by anaconda.      
  2. #version=DEVEL     
  3. Install      
  4. #nfs --server=192.168.1.3 --dir=/media/cdrom   
  5. #url --url=ftp://root:[email protected]/var/ftp      
  6. url --url=http://192.168.1.3/rhel6.2   
  7. lang en_US.UTF-8   
  8. keyboard us   
  9. text   
  10. key –skip     #红帽的序列号,如果有则写,没有则跳过。注:有些版本的系统会忽略这个,而有些则需要你明确定义跳过该步骤。 否则会影响自动化安装。   
  11. network –bootproto=dhcp --device=eth0   --onboot=on     
  12. rootpw  --iscrypted $1$AbMG5lMV$wpNs2yKuFbz4iev/  #为root用户设密码,明文也行。    
  13. # Reboot after installation      
  14. reboot   
  15. firewall --disabled      
  16. authconfig --useshadow  --passalgo=sha512      
  17. selinux --disabled   
  18. timezone Asia/Shanghai      
  19. bootloader --location=mbr --driveorder=sda  
  20.    
  21. # The following is the partition information you requested      
  22. # Note that any partitions you deleted are not expressed   
  23. # here so unless you clear all partitions first, this is      
  24. # not guaranteed to work   
  25.    
  26. clearpart --all --initlabel   
  27.        
  28. part /boot --fstype=ext4 --size=500      
  29. part swap  --size=2048      
  30. part /     --fstype=ext4 --grow --size=2     #--grow表示将剩余的所有磁盘空间分配给根分区   
  31.   
  32.  
  33. #逻辑卷分区创建实例   
  34.    
  35. part /boot –fstype=ext4 –size=500        #因为系统启动时无法识别lvm分区表,所以需要为/boot单独分区。     
  36. part pv.01 --grow --size=1      
  37. volgroup vg0 pv.01   
  38. logvol swap       --fstype=swap  --name=swap   --vgname=vg0  --size=1024   
  39. logvol /          --fstype=ext4  --name=root   --vgname=vg0  --size=5120      
  40. logvol /tmp       --fstype=ext4  --name=tmp    --vgname=vg0  --size=5120      
  41. logvol /home      --fstype=ext4  --name=home   --vgname=vg0  --size=5120   
  42. logvol /usr/local --fstype=ext4  --name=local  --vgname=vg0  --size=10240   
  43.     
  44. %packages    
  45. @Base   
  46. @Core    
  47. @base    
  48. @client-mgmt-tools   
  49. @debugging    
  50. @emacs   
  51. @ftp-server    
  52. @hardware-monitoring   
  53. @large-systems   
  54. @network-file-system-client   
  55.        
  56. %end   

    NOTICE:红帽5系列与红帽6系列的kickstart文件有点区别,在红帽5系列中如果有%end选项的话,在安装过程中会报错。红帽6.0以后的系统支持该选项。好像红帽5系列的还不支持ext4文件系统,所以在kickstart文件中要根据系统的版本进行相应的修改。

    最后再在pxelinux.0的配置文件/tftpboot/pxelinux.cfg/default文件中指定kickstart文件即可。编辑/tftpboot/pxelinux.cfg/defalut文件,修改的内容我用红色进行标记,另外,灰色的内容可以删除:

  
  
  
  
  1. default vesamenu.c32 
  2.  
  3. #prompt 1 
  4.  
  5. timeout 30 
  6.   
  7. display boot.msg 
  8.  
  9. menu background splash.jpg 
  10. menu title Welcome to Red Hat Enterprise Linux 6.2! 
  11. menu color border 0 #ffffffff #00000000 
  12. menu color sel 7 #ffffffff #ff000000  
  13. menu color title 0 #ffffffff #00000000 
  14. menu color tabmsg 0 #ffffffff #00000000  
  15. menu color unsel 0 #ffffffff #00000000  
  16. menu color hotsel 0 #ff000000 #ffffffff 
  17. menu color hotkey 7 #ffffffff #ff000000  
  18. menu color scrollbar 0 #ffffffff #00000000 
  19.  
  20. label linux  
  21.   menu label ^Install or upgrade an existing system 
  22.   menu default  
  23.   kernel vmlinuz  
  24.   append initrdinitrd=initrd.img ks=http://192.168.1.3/ks.cfg 
  25.  
  26. label vesa 
  27.   menu label Install system with ^basic video driver 
  28.   kernel vmlinuz 
  29.   append initrdinitrd=initrd.img xdriver=vesa nomodeset 
  30.  
  31. label rescue  
  32.   menu label ^Rescue installed system 
  33.   kernel vmlinuz 
  34.   append initrdinitrd=initrd.img rescue 
  35.  
  36. label local 
  37.   menu label Boot from ^local drive 
  38.   localboot 0xffff 
  39.  
  40. label memtest86 
  41.   menu label ^Memory test  
  42.   kernel memtest  
  43.   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的高级用法就不做深入的研究了。

你可能感兴趣的:(网络,自动化,pxe,kickstart)