PXE 服务器批量部署方案
Ubuntu实现多系统批量部署
2014/4/15
目录
文档版本说明...................................................................................................................4
参考资料............................................................................................................ ....... ......4
文档目的............................................................................................................ ....... ......4
声明..................................................................................................................... ....... ......4
服务器和软件需求列表....................................................................................................4
1,部署前工作介绍...................................................................................................................5
1.1 目录介绍......................................................................................................................5
1.2 相关目录创建................................................................................................ ............. 5
2 软件包实施安装.............................................................................................. ............. .........5
2.1 tftpd-pha的安装.............................................................................................. .............5
2.1.1 配置文件.............................................................................................. .............5
2.2 dhcp3-server安装.............................................................................................. ...........6
2.2.1 修改配置文件.............................................................................................. ...6
2.2.2 启用dhcp服务.............................................................................................. ..7
2.3, 安装apache2............................................................................................. .. ........ ....7
2.3.1 服务启用和测试.............................................................................................. 7
2.4 dns服务器............................................... ........................ ...........................................7
2.4.1 软件安装.................................................................................. ........... ........... 7
2.4.2 配置文件介绍........................................................................... ........... ...........7
2.4.3 创建和修改正、反解文件......................................................... ........... ..........8
2.4.4 启用服务并测试.......................................................................... ........... .........9
3,系统文件............................................... ........................ ...........................................................9
3.1 ubuntu光盘文件........................ ........................ .........................................................9
3.2 redhat-5.4 光盘文件............... ........................ .........................................................9
3.3 centos-5.7 光盘文件............... ........................ .........................................................9
4,启动主菜单编辑.................................. ........................ ..........................................................9
4.1 编辑default文件..................... ........................ .........................................................9
4.2创建 pxe.conf文件..................... ........................ .......................................................11
4.3 编辑ubuntu引导文件................. ........................ .......................................................11
4.4 编辑redhat菜单引导文件........ ........................ ......................................................11
4.5编辑redhat菜单引导文件............. ........................ ......................................................12
5,创建ks自动安装脚本............................ ........................ ......................................................12
文档版本说明
版本
发布时间
修订章节
作者
V1.0
2013/4/14
参考资料
1,ubuntu官网. https://help.ubuntu.com/community/PXEInstallMultiDistro
2,linux 公社. http://www.linuxidc.com/Linux/2012-07/65748.htm
文档目的
通过ubuntu server,搭建一个pxe网络部署平台,是这个pxe平台能够选择性批量自动部署Redhat,Centos,Ubuntu,Dos和Windows系统。
服务器和软件需求列表
系统版本
服务器ip
软件需求及功能
Ubuntu-12.04
192.168.254.131
Dhcp3-server
分配ip地址
Tftpd-pha
下载系统引导文件
Syslinux
一个轻便的引导程序,告诉计算机从linux内核启动
Apche2
共享系统镜像文件
Bind9
DNS转发查询
Bind9-doc
提供模板文件
Dnsutils
Dns相关工具
1,部署前工作介绍:
1.1,目录介绍
/var/lib/tftpboot下的目录pxelinux.cfg,ubuntu,redhat,cenots,ubuntu-install,dos,window
目录名
目录下文件名
功能
pxelinux.cfg
default
安装界面 主菜单
pxe.conf
界面辅助设置
ubuntu
initrd.gz,vmlinuz
内核引导相关文件
ubuntu.menu
主菜单中的子菜单,有加载ubuntu 源信息
redhat
initrd.img ,vmlinuz
内核引导相关文件
ubuntu.menu
主菜单中的子菜单,有加载 redhat 源信息
ubuntu-installer
*
里面文件较多,主要是从ubuntu系统镜像文件中复制过来的,从光盘的install/netboot中全部拷贝过来。
Apacha默认的文档目录/var/www
/var/www
Ubuntu/
对应系统光盘文件复制过来的
Redhat/
对应系统光盘文件复制过来的
Centos/
对应系统光盘文件复制过来的
1.2 相关目录创建
mkdir -p /var/www/install/ubuntu
mkdir -p /var/www/install/redhat
mkdir -p /var/www/install/centos
mkdir -p /var/lib/tfptboot/ubuntu
mkdir -p /var/lib/tfptboot/redhat
mkdir -p /var/lib/tfptboot/centos
2,软件包实施安装
2.1,tftpd-pha的安装
apt-get install xinetd
apt-get install tftpd-pha
2.1.1 配置文件: /etc/default/tftp-pha
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot" (tftpd默认目录)
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
vim /etc/xinetd/tftp(默认没有,可以手动创建,这里我们不需要)
service tftp
{
disable = no #这里改为no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot/root
source = 11
cps = 100 2
flags =IPv4
}
2.2,dhcp3-server安装
apt-get install dhcp3-server
配置文件:/etc/dhcp/dhcpd.conf
2.2.1 修改配置文件
在全局配置中添加allow booting;表示是否相应使用者查询
allow bootp;表示是否相应激活查询
在subnet中修改自己需要更改的参数,最后还要加入
next-server 192.168.254.131; 告诉客户端tftpd服务器是
192.168.254.131
filename "isolinux.0";
下面贴出自己的dhcpd.conf文件
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "example.com";
option domain-name-servers ubuntu.example.com;
default-lease-time 600;
max-lease-time 7200;
allow booting;
allow bootp;
# A slightly different configuration for an internal subnet.
subnet 192.168.254.0 netmask 255.255.255.0 {
range 192.168.254.1 192.168.254.100;
option domain-name-servers ubuntu.example.com;
# option domain-name "example.com";
option routers 192.168.254.131;
option broadcast-address 192.168.254.255;
default-lease-time 600;
max-lease-time 7200;
filename "pxelinux.0";
next-server 192.168.254.131;
}
2.2.2 启用dhcp服务
service isc-dhcp-server start
2.3, 安装apache2
apt-get install apache2
2.3.1 服务启用和测试
apache默认文档目录是/var/www ,所以这里自学要启动apache服务就ok
注意:将/var/www下的install目录权限更改一下:
chmod -R 777 /var/www/install
测试一下,是否能看到/var/www/install下的文件
http://192.168.254.131/install
2.4 dns服务器
2.4.1 软件安装
apt-get install bind9 bind9-doc dnsutils
2.4.2 配置文件介绍
/etc/bind/ 下
named.conf.options 为全局配置文件
named.conf.local 添加和删除zone文件
db.192.168.254 自定义反解文件
db.example.zone 自定义正解文件
看配置文件:
vim named.conf.options
forwarders {
// 192.168.254.131;
// }; 只需要更改这里的ip地址,如果能通外网,写本地区的dnsip地址,
vim named.conf.local 添加正解文件和反解文件
zone "example.com" {
type master;
file "example.zone"; #正解文件为 example.zone
(没写路径,默认在/var/cache/bind下)
};
zone "254.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.254"; #反解文件为 db.192.168.254
};
2.4.3 创建和修改正、反解文件
cp /etc/bind/db.127 /var/cache/bind/example.zone
cp /etc/bind/db.127 /etc/bind/d.192.168.254
正解文件 vim /var/cache/bind/example.zone
$TTL 604800
@ IN SOA ubuntu.example.com. root. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ubuntu.example.com.
@ IN A 127.0.0.1
@ IN AAAA ::1
ubuntu IN A 192.168.254.131
pincer IN A 192.168.254.132
$GENERATE 100-200 pincer$ in a 192.168.254.$ #根据分配的ip地址
分配对应主机名
反解文件 vim /etc/bind/d.192.168.254
$TTL 604800
@ IN SOA ubuntu.example.com. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ubuntu.example.com.
1.0.0 IN PTR localhost.
131 IN PTR ubuntu.example.com.
132 IN PTR pincer.example.com.
$GENERATE 100-200 $ IN PTR pincer$.example.com. #根据分配的ip地址分配对
应主机名
#################################注意###################################
正解和反解文件的拥有人最好改为bind,不然服务器是没有权限读取正,反解文件的
########################################################################
2.4.4 启用服务并测试
/etc/init.d/bind9 start
netstat -nuplt|grep :53
测试:
修改本地文件/etc/resolv.conf
nameserver 192.168.254.131 #本机的dns指向131
正解测试:
nslookup
pincer.example.com
反解测试:
host 192.168.254.132
3,系统文件
cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot
3.1 ubuntu光盘文件
挂载iso镜像文件
mount -o loop /src/ubuntu.12.04.iso /media/cdrom
这里不采取软连接,因为涉及到多个系统文件,所以只能一一复制到服务器
里面
cp -r /media/cdrom/* /var/www/install/ubuntu &
cp /media/cdrom/install/initrd.gz /var/lib/tftpboot/ubuntu
cp /media/cdrom/install/vmlinuz /var/lib/tftpboot/ubuntu
cp -r /media/cdrom/install/netboot/ubuntu-installer /var/lib/tftpboot/
cp -r /media/cdrom/install/netboot/pxelinux.cfg /var/lib/tftpboot/
3.2 redhat-5.4 光盘文件
umount /media/cdrom
mount -o loop /src/rhel-5.4.iso /media/cdrom
cp -r /media/cdrom/* /var/www/install/redhat &
cp /media/cdrom/install/initrd.img /var/lib/tftpboot/redhat
cp /media/cdrom/install/vmlinuz /var/lib/tftpboot/redhat
3.3 centos-5.7 光盘文件
umount /media/cdrom
mount -o loop /src/centos-5.7.iso /media/cdrom
cp -r /media/cdrom/* /var/www/install/centos &
cp /media/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /media/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/
注意:将/var/www下的install目录权限更改一下:
chmod -R 777 /var/www/install
4,启动主菜单编辑
4.1 编辑default文件
使用vim编辑: vim /var/lib/tftpboot/pxelinux.cfg/default
include ubuntu-installer/i386/boot-screens/menu.cfg #1,2行是主菜单的界面设置
default ubuntu-installer/i386/boot-screens/vesamenu.c32
TIMEOUT 600
ONTIMEOUT BootLocal
PROMPT 0 #如果改为1,则等待1
秒后自动安装
MENU INCLUDE pxelinux.cfg/pxe.conf #可以引用自定义界面
设置,文件为pxe.conf ,
文件在/var/lib/tftpboot/pxelinux.cfg下
NOESCAPE 1
LABEL BootLocal
localboot 0
TEXT HELP
Boot to local hard disk
ENDTEXT
MENU BEGIN Ubuntu #ubuntu菜单,可以进入,
里面有子菜单
MENU TITLE Ubuntu
LABEL Previous
MENU LABEL Previous Menu
TEXT HELP
Return to previous menu
ENDTEXT
MENU EXIT
MENU SEPARATOR
MENU INCLUDE ubuntu/ubuntu.menu #引用ubuntu定义菜单文
件,进行安装源选择和自
动安装
MENU END
MENU BEGIN Redhat Enterprise Linux
MENU TITLE Redhat Enterprise Linux
LABEL Previous
MENU LABEL Previous Menu
TEXT HELP
Return to previous menu
ENDTEXT
MENU EXIT
MENU SEPARATOR
MENU INCLUDE redhat/rhel.menu
MENU END
MENU BEGIN CentOS
MENU TITLE CentOS
LABEL Previous
MENU LABEL Previous Menu
TEXT HELP
Return to previous menu
ENDTEXT
MENU EXIT
MENU SEPARATOR
MENU INCLUDE centos/centos.menu
MENU END
########################################################################
注意:下面的几个文件,必须与default文件中include写的路径和文件名对应
########################################################################
4.2创建 pxe.conf文件 (这个文件可选,因为default中引用了自带的)
vim /var/lib/tftpboot/pxelinux.cfg/pxe.conf
MENU TITLE PXE Server
#MENU BACKGROUND pxelinux.cfg/logo.png
NOESCAPE 1
ALLOWOPTIONS 1
PROMPT 0
#menu width 80
#menu rows 14
#MENU TABMSGROW 24
#MENU MARGIN 10
menu color border 30;44 #ffffffff #00000000 std
4.3 编辑ubuntu引导文件
vim /var/lib/tftpboot/ubuntu/ubuntu.menu
LABEL 2
MENU LABEL Ubuntu 12.0 (32-bit)
KERNEL ubuntu/vmlinuz
APPEND http://192.168.254.131/install/ubuntu ks=http://192.168.254.131/
install/ubuntu/ks.cfg initrd=ubuntu/initrd.gz
TEXT HELP
Boot the Ubuntu 12.04 32-bit DVD
ENDTEXT
#LABEL 1
# MENU LABEL Ubuntu 12.04 (64-bit)
# KERNEL ubuntu64/vmlinuz
## APPEND http://192.168.254.131/install/ubuntu ks=http://192.168.254.131/
install/ubuntu64/ks.cfg initrd=ubuntu64/initrd.gz
# TEXT HELP
# Boot the Ubuntu 12.04 64-bit DVD
# ENDTEXT
目前要确定,/var/lib/tftpboot/ubuntu/下有三个文件了initrd.gz ubuntu.menu vmlinuz
文件中,使用的是ubuntu 32位的系统,如果有32和64两个选择,可以去掉下面的注释,然后做相应的更改,例如在/var/www/install/下创建目录ubuntn64,然后将系统镜像文件复制进入,再创建一个ks.cfg文件放在ubuntu64 目录下
在/var/lib/tfptboo/下创建ubuntu64目录,将内核文件,引导文件等复制进去
4.4 编辑redhat菜单引导文件
vim /var/lib/tftpboot/redhat/rhel.menu
#LABEL 2
#MENU LABEL rhel 5.4 (64-bit)
# KERNEL redhat64/vmlinuz
# APPEND ks=http://192.168.254.131/install/redhat64/ks.cfg lang=us keymap=us initrd=redhat64/initrd.img ramdisk_size=10000
# TEXT HELP
# Install redhat (32-bit)
# ENDTEXT
# TEXT HELP
# Install redhat (64-bit)
# ENDTEXT
LABEL 1
MENU LABEL rhel 5.4 (32-bit)
KERNEL redhat/vmlinuz
APPEND ks=http://192.168.254.131/install/redhat/ks.cfg lang=us keymap=
us initrd=redhat/initrd.img ramdisk_size=10000
TEXT HELP
Install redhat (32-bit)
ENDTEXT
确认/var/lib/tftpboot/redhat/目录下已经有三个文件了:initrd.img rhel.menu vmlinuz
4.5编辑centos菜单引导文件
vim /var/lib/tftpboot/redhat/centos.menu
#LABEL 2
# MENU LABEL CentOS 5.4 (64-bit)
# KERNEL CentOS/5.4/amd64/vmlinuz
# APPEND method=nfs:10.10.1.10:/srv/install/CentOS/5.4/amd64/ lang=us key
map=us ip=dhcp ksdevice=eth0 noipv6 initrd=CentOS/5.4/amd64/initrd.img ramdisk_s
ize=10000
# TEXT HELP
# Install CentOS 5.4 (64-bit)
# ENDTEXT
LABEL 1
MENU LABEL CentOS 5.4 (32-bit)
KERNEL centos/vmlinuz
APPEND ks=http://192.168.254.131/install/centos/ks.cfg lang=us keymap=u
s ip=dhcp ksdevice=eth0 noipv6 initrd=centos/initrd.img ramdisk_size=10000
TEXT HELP
Install CentOS 5.4 (32-bit)
ENDTEXT
5,创建ks自动安装脚本
这里是使用的图形界面创建的,apt-get install system-config-kickstart
贴出ubuntu的ks.cfg
#################################注意###################################
在编辑redhat 5.4的ks.cfg脚本的时候,必须要安装一个软件(在最下面添加%packages
@chinese-support) 选择安装中文支持就可以了
否则会弹出图形交互让你选择安装软件,!!!同时要加入key --skip 否侧要弹出图形交互让你填入序列号!!!
########################################################################
27311662
29769350
18118723045 xie
#Generated by Kickstart Configurator
#platform=x86
#System language
lang en_US
#Language modules to install
langsupport en_US
#System keyboard
keyboard us
#System mouse
mouse
#System timezone
timezone Asia/Shanghai
#Root password
rootpw --disabled
#Initial user
user pincer --fullname "pincer" --iscrypted --password $1$sW.dwNiL$mT3F6HEj1Et.o
dDtbTgCi1
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use Web installation
url --url http://192.168.254.131/install/ubuntu
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part / --fstype ext4 --size 12000
part swap --size 1024
#System authorization infomation
auth --useshadow --enablemd5
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled
#Do not configure the X Window System
skipx
%packages
openssh-server
openssh-client
其他系统的ks文件同上,也可以根据这个修改
他们都是通过httpd共享的,所有都放在相应的位置/var/www/install/ubuntu/ks.cfg
redhat :/var/www/install/redhat/ks.cfg
##################################注意#################################
因为使用vmware workstation,所以在测试完redhat后,当我测试ubuntu的时候,在自动安装时总是报错,这个错误在网上无法查到,我花费了3个小时。。。��
这里可以看出的光驱不能被mount,但是我已经把虚拟机的光驱卸载了,这是因为,之前复制的时候,第一次挂载的ubuntu,第二次挂载的redhat,所以导致了这个问题,下面只要将客户机的cdrom选择ubuntu的景象就ok了,
但是,同样,我们cdrom选择ubuntu的时候,来进行安装redhat却不会这样报错!!!!
#######################################################################