kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

实际生产环境中肯定会有一次性安装多台服务器操作系统的工作,因此,光靠传统的一台台安装,很费时费力,数量不多的情况,还是比较好应付,如果一次是几十、几百台,就比较麻烦了,因此,实际生产环境中都用采用批量无人值守的安装方式来安装操作系统,所以今天来详细介绍下,通过利用kickstart+PXE+dhcp+nfs组合的方式批量安装操作系统。

1、原理与过程介绍

原理:

利用PXE协议使用服务器通过网络方式启动,后向DHCP服务器请求IP,连接后将服务端的文件下载到本地,执行一系统列的操作

过程:

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

第一步:PXE-client发送请求

将支持PXE启动方式的服务器设置成PXE启动,PEX客户端通过PXE boot ROM以udp的形式发送一个广播包,请求DHCP服务器分配IP地址

第二步:DHCP应答请求并回应

DHCP服务器收到请求后,验证是否来自合法的PXE客户端请求,验证通过后,回应PXE客户端,回应信息中包括分配的IP地址,pxelinux启动程序(TFTP)的位置,以及配置文件的位置

第三步:PXE-client请求下载启动文件

PXE客户端收到回应后,向TFTP服务器请求下载所需的启动系统安装文件(文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件)

第四步:TFTP服务器响应请求并传送文件

当TFTP服务器收到请求后,服务器会响应请求并应答请求,之后传送所需的文件给客户端

第五步:PXE-client请求下载自动应答文件

PXE客户端通过pxelinux.cfg/default文件成引导linux安装后,安装程序必须先确定通过什么方式安装系统,如果是通过网络,则会在此时进行初始化网络,并定位安装系统所需要的二进制包以及配置文件的位置,接着读取文件中指定的自动应答文件ks.cfg,然后根据文件位置请求下载文件

第六步:客户端安装系统

将ks.cfg下载到本地,通过文件找到安装系统的ISO文件位置,并请求下载所需的软件包,正常连接后,开始传输软件包,最终开始安装操作系统,安装完成后重新启动

2、配置NFS及共享目录


创建NFS共享目录

[[email protected] ~]# mkdir /data/sys -p

创建系统ISO文件挂载目录

[[email protected] ~]# mkdir /isodir

将光盘挂载到挂载目录

[[email protected] ~]# mount /dev/cdrom /isodir

mount: block device /dev/sr0 is write-protected, mounting read-only

[[email protected] ~]# ls /isodir/

CentOS_BuildTag GPL Packages RPM-GPG-KEY-CentOS-6

RPM-GPG-KEY-CentOS-Testing-6 EFI images RELEASE-NOTES-en-US.html

RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL EULA isolinux

repodata RPM-GPG-KEY-CentOS-Security-6

检查NFS是否安装

[[email protected] ~]# rpm -qa |grep nfs

nfs-utils-lib-1.1.5-11.el6.x86_64

nfs-utils-1.2.3-70.el6_8.2.x86_64

nfs4-acl-tools-0.3.3-8.el6.x86_64

nfs-utils-lib-devel-1.1.5-11.el6.x86_64

[[email protected] ~]# rpm -qa |grep rpcbind

rpcbind-0.2.0-12.el6.x86_64

配置nfs

[[email protected] ~]# echo "/data/sys 172.16.1.235/24(ro,sync)" >>/etc/exports

[[email protected] ~]# echo "/isodir 172.16.1.235/24(ro,sync)" >>/etc/exports

[[email protected] ~]# tail -2 /etc/exports

/data/sys 172.16.1.235/24(ro,sync)

/isodir 172.16.1.235/24(ro,sync)

启动服务(注意先后顺序)

[[email protected] ~]# /etc/init.d/rpcbind start

Starting rpcbind: [ OK ]

[[email protected] ~]# /etc/init.d/nfs start

Starting NFS services: [ OK ]

Starting NFS quotas: [ OK ]

Starting NFS mountd: [ OK ]

Starting NFS daemon: [ OK ]

Starting RPC idmapd: [ OK ]

[[email protected] ~]# chkconfig rpcbind on

[[email protected] ~]# chkconfig nfs on

[[email protected] ~]# chkconfig --list |egrep "nfs|rcpbind"

nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

nfslock 0:off 1:off 2:off 3:on 4:on 5:on6:off

检查配置

[[email protected] ~]# showmount -e

clnt_create: RPC: Port mapper failure - Timed out

出现这个错误提示,首先检查防火墙是否关闭

[[email protected] ~]# /etc/init.d/iptables status

iptables: Firewall is not running.

也可能是本地hosts解析的问题,修改下hosts文件

127.0.0.1 kickserver------>增加这个配置

[[email protected] ~]# showmount -e

Export list for kickserver:

/isodir 172.16.1.235/24

/data/sys 172.16.1.235/24

3、安装配置TFTP-server


[[email protected] ~]# yum install tftp-server* -y

------------------------具体过程省略

配置TFTP服务器

[[email protected] ~]# vi /etc/xinetd.d/tftp

# default: off

# description: The tftp server serves files using the trivial file transfer

# protocol. The tftp protocol is often used to boot diskless

# workstations, download configuration files to network-aware printers,

# and to start the installation process for some operating systems.

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /var/lib/tftpboot

disable = yes------>修改成no

per_source = 11

cps = 100 2

flags = IPv4

}

启动服务

[[email protected] ~]# /etc/init.d/xinetd start

Starting xinetd: [ OK ]

[[email protected] ~]# chkconfig xinetd on

[[email protected] ~]# chkconfig --list|grep xinetd

xinetd 0:off1:off 2:on 3:on 4:on 5:on 6:off

4、配置PXE引导(bootstarp)

[[email protected] ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[[email protected] ~]# ll /var/lib/tftpboot/

-rw-r--r--. 1 root root 26759 Dec 13 16:07 /var/lib/tftpboot/pxelinux.0

拷贝网络内核启动文件

[[email protected] ~]# cp /isodir/images/pxeboot/initrd.img /var/lib/tftpboot/

[[email protected] ~]# cp /isodir/images/pxeboot/vmlinuz /var/lib/tftpboot/

[[email protected] ~]# ll /var/lib/tftpboot/

-r-xr-xr-x. 1 root root 4128368 Dec 13 16:12 vmlinuz

-r--r--r--. 1 root root 33383679 Dec 13 16:11 initrd.img

-rw-r--r--. 1 root root 26759 Dec 13 16:07 pxelinux.0

配置引导文件

[[email protected] ~]# cd /var/lib/tftpboot/

[[email protected] tftpboot]# mkdir pxelinux.cfg

[[email protected] tftpboot]# cp /isodir/isolinux/isolinux.cfg ./pxelinux.cfg/default

[[email protected] tftpboot]# vi ./pxelinux.cfg/default

menu label ^Install or upgrade an existing system

default test

#prompt 1

timeout 600

display boot.msg

menu background splash.jpg

menu title Welcome to CentOS 6.5!

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 test

kernel vmlinuz

append ks=nfs:172.16.1.235:/data/sys/kickstart/ks.cfg initrd=initrd.img test

#增加此行配置文件

5、安装配置DHCP

[[email protected] tftpboot]# yum install dhcp* -y

配置DHCP服务器

[[email protected] tftpboot]# cd /etc/dhcp/

[[email protected] dhcp]# vi dhcpd.conf

#

# DHCP Server Configuration file.

# see /usr/share/doc/dhcp*/dhcpd.conf.sample

# see 'man 5 dhcpd.conf'

#

ddns-update-style none;

ignore client-updates;

allow booting;

allow bootp;

default-lease-time 21600;

max-lease-time 43200;

option routers 172.16.1.1;

subnet 172.16.1.0 netmask 255.255.255.0 {

range dynamic-bootp 172.16.1.100 172.16.1.120;

next-server 172.16.1.235;

filename "/data/sys/kickstart/ks.cfg";

next-server 172.16.1.235;

filename "/var/lib/tftpboot/pxelinux.0";

}

增加上述标记部分的配置内容

启动服务

[[email protected] dhcp]# /etc/init.d/dhcpd start

Starting dhcpd: [ OK ]

[[email protected] dhcp]# chkconfig dhcpd on

[[email protected] dhcp]# chkconfig --list|grep dhcpd

dhcpd0:off 1:off 2:on 3:on 4:on5:on 6:off

6、安装配置kickstart

[[email protected] dhcp]# mkdir /data/sys/kickstart -p

#创建文件目录

[[email protected] dhcp]# cp /root/anaconda-ks.cfg /data/sys/kickstart/ks.cfg

#拷贝配置文件

[[email protected] dhcp]# ll /data/sys/kickstart/ks.cfg

-rw------- 1 root root 1229 Dec 13 18:16 /data/sys/kickstart/ks.cfg

#修改默认权限,例其它用户可读

[[email protected] dhcp]# chmod 644 /data/sys/kickstart/ks.cfg

[[email protected] dhcp]# ll /data/sys/kickstart/ks.cfg

-rw-r--r-- 1 root root 1229 Dec 13 18:16 /data/sys/kickstart/ks.cfg

配置ks.cfg文件(重要步骤)

[[email protected] dhcp]# cd /data/sys/kickstart/

[[email protected] kickstart]# vi ks.cfg

# Kickstart file automatically generated by anaconda.

#version=DEVEL

install

#cdrom

#注释默认的安装方式,新增下面的配置

nfs --server=172.16.1.235 --dir=/isodir

lang en_US.UTF-8

keyboard us

network --onboot no --device eth0 --bootproto dhcp --noipv6

#rootpw --iscrypted $6$zKfIpmK0g7MKWBVy$I8sk1Q8CAmkEA/zUwhNYC.A1DJOw6un2qbww2empzQx04DGjSvmLbZ2ESVMyOzU0DyT9qsz/IfNsD0Teim//N1

rootpw 123456

firewall --service=ssh

authconfig --enableshadow --passalgo=sha512

selinux --disabled

timezone --utc Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

# 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 --drives=sda

#part /boot --fstype=ext4 --size=500

#part pv.008002 --grow --size=1

#volgroup vg_centos6 --pesize=4096 pv.008002

#logvol / --fstype=ext4 --name=lv_root --vgname=vg_centos6 --grow --size=1024 --maxsize=51200

#logvol swap --name=lv_swap --vgname=vg_centos6 --grow --size=1984 --maxsize=1984

zerombr

#清除mbr引导

repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100

%packages

#这个软件包可自行定义增加

@base

@compat-libraries

@core

@debugging

@development

@server-policy

@workstation-policy

sgpio

device-mapper-persistent-data

systemtap-client

%end

7、配置PXE客户端引导并启动服务器

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

重新启动服务器

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

可以清楚的看到加载之前配置的文件

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

整个过程无需人工干预,全部自动化完成

kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统

以上是 kickstart+PXE+dhcp+nfs 批量无人值守自动化安装操作系统 的全部内容, 来源链接: utcz.com/a/65337.html

回到顶部