使用FAI+PXE批量部署Debian


51CTO独家特稿】FAI全称Fully Automatic Installation,是一种基于Debian GNU/Linux平台的全自动安装集群结点机的软件包,它为构建集群提供了方便快捷的安装方式,可以在几十分钟内实现全部节点机的自动安装。

下图是本次实例讲解的网络拓扑:

使用FAI批量部署Debian

配置DHCP服务

安装DHCP服务是为了给需要安装操作系统的客户端分配IP地址。

1、安装DHCP服务。

srv10:~# apt-get install dhcp3-server

2、配置DHCP服务。在/etc/dhcp3/dhcpd.conf文件中增加如下内容。

allow booting;  allow bootp; 
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.220 192.168.1.250;
  next-server 192.168.1.233; #指定PXE客户端查找的服务器      filename "/pxelinux.0";  #指定启动文件
  option routers 192.168.1.254;
  option domain-name-servers 202.103.24.68;
}

配置TFTP服务

安装TFTP服务是为了让需要安装操作系统的客户端可以下载支持PXE的启动文件。

1、安装TFTP服务。

srv10:~# apt-get install tftp tftpd
srv10:~# apt-get install xinetd

2、配置TFTP服务。

为了使用新的基于Xinetd服务的TFTP,将/etc/inetd.conf文件中,将以下内容注释。

#tftp dgram udp wait nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /home/creater/image 

在/etc/xinetd.d目录下创建tftp文件,并加入如下内容其中“server_args”用于指定TFTP服务的根目录)。

service tftp
{
 socket_type  = dgram
 protocol  = udp
 wait= yes
 user= root
 server = /usr/sbin/in.tftpd
 server_args  = -s /tftpboot
 disable= no
 per_source= 11
 cps = 100 2
 flags  = IPv4
}

为建立TFTP服务的根目录

srv10:~# mkdir /tftpboot

安装NFS服务

FAI服务通过NFS共享必要的启动及安装文件给FAI客户端。

srv10:~# apt-get install nfs-kernel-server

配置FAI

1、安装FAI。

srv10:~# apt-get install fai-quickstart

2、配置FAI。

使用FAI基本功能是主要需要修改/etc/fai/fai.confFAI主配置文件)、/etc/fai/make-fai-nfsroot.confFAI使用NFS服务配置文件)、/etc/fai/apt/sources.list源列表用于NFS-Root,即通过FAI安装的客户机源列表)。

直接使用/etc/apt/sources.list覆盖/etc/fai/apt/sources.list文件。

srv10:~# cp /etc/apt/sources.list /etc/fai/apt/sources.list

修改/etc/fai/fai.conf文件如下内容。

LOGUSER=fai
FAI_LOGPROTO=ssh
FAI_CONFIG_SRC=nfs://192.168.1.233$FAI_CONFIGDIR#FAI配置文件的存放路径
#MNTPOINT=/media/mirror #注释该句

修改/etc/fai/make-fai-nfsroot.conf文件如下内容。

NFSROOT=/srv/fai/nfsroot  #NFS-Root目录路径
TFTPROOT=/tftpboot #指定TFTP服务根目录路径
NFSROOT_ETC_HOSTS="192.168.1.233"  #指定NFS服务器地址
#使用fai-setup命令创建NFSROOT目录时下载软件包的地址
FAI_DEBOOTSTRAP="lenny http://ftp.debian.org/debian" 
NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/
FAI_DEBOOTSTRAP_OPTS="--arch i386 --exclude=dhcp-client,info"

使用如下命令创建FAI所需内容该步骤视网络情况可能很慢)。

srv10:~# fai-setup -v

使用如下命令创建支持PXE服务器所需的启动、配置文件。

srv10:~# fai-chboot -IFv default

通过修改/srv/fai/config/disk_config/FAIBASE文件指定客户端磁盘分区及指定启动标记。

#bootable:1 #将第1个分区标记启动分区。
disk_config disk1 disklabel:msdos bootable:1  
primary  / 25G  ext3rw,errors=remount-ro
primary  swap 1Gswaprw

重启相关服务。

srv10:~# /etc/init.d/nfs-common restart
srv10:~# /etc/init.d/nfs-kernel-server restart
srv10:~# /etc/init.d/dhcp3-server restart
srv10:~# /etc/init.d/xinetd restart

配置完成后在/tftpboot目录内容如下。

srv10:~# ll /tftpboot/
total 10012
drwxr-xr-x  3 fai  nogroup 4096 2010-12-21 21:35 .
drwxr-xr-x 23 root root 4096 2010-12-21 21:35 ..
-rw-r--r--  1 fai  nogroup 8732200 2010-12-21 21:35 initrd.img-2.6.26-2-486
-rwxr-xr-x  1 fai  nogroup15820 2010-12-21 21:35 pxelinux.0
drwxr-xr-x  2 fai  nogroup 4096 2010-12-21 21:36 pxelinux.cfg
-rw-r--r--  1 fai  nogroup 1469968 2010-11-24 21:57 vmlinuz-2.6.26-2-486

到此FAI服务器配置完成,重新启动FAI服务所在计算机后,将客户端BIOS设置为从网络启动即可全自动安装Debian系统。客户端root用户的默认密码是fai。

FAI其它配置

1、自定义客户端需要安装的软件包。

如果需要为客户端安装更多的软件包,可以修改/srv/fai/config/package_config/FAIBASE文件,比如安装GNOME桌面环境可在文件中加入gdm和gnome-core。

2、修改客户端磁盘分区。

如果需要修改客户端磁盘分区,可以修改/srv/fai/config/disk_config/FAIBASE文件。

3、执行自定义脚本。

/srv/fai/config/scripts/LAST/50-misc 
#脚本是在客户端完成所有安装完成后执行的内容,可以在其中加入一些脚本自定义内容。
#fcopy
#将FAI服务器/srv/fai/nfsroot/live/filesystem.dir/目录下对应目录的内容得到到客户端对应目录,下面是将/srv/fai/nfsroot/live/filesystem.dir/etc/apt/l*.deb文件复制到客户端/etc/apt目录中。
fcopy -i /etc/apt/l*.deb 
#$ROOTCMD 
#用于在客户端本地执行的内容。
$ROOTCMD echo "root:debian" | $ROOTCMD chpasswd

作者简介:张勤博客),MCSE、MCDBA、RHCE,从事软件开发(Delphi、Java)、项目管理、系统集成工作。曾参与多个基于Windows及Linux的大型系统集成项目,并在国内多个知名IT网站发表技术类文章。

相关内容