基于pxe httpd dhcp Kickstart 实现linux自动化安装

wKiom1M0FP2BhRPVAAFH9aUiUK8504.jpg

pxe:预启动执行环境,是由intel公司开发,工作于C/S网络模式,用于网络引导操作系统.

http:超文本传输协议,这里的角色仅提供安装系统所需的软件包

kickstart: 是什么

       许多系统管理员宁愿使用自动化的安装方法来安装红帽企业 Linux.为了满足这种需要,红帽创建了kickstart安装方法.使用kickstart,系统管理员可以创建一个文件,这个文件包含了在典型的安装过程中所遇到的问题的答案.

       Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择.

       Kickstart给用户提供了一种自动化安装红帽企业Linux的方法.  

1、客户端开机启动时,会根据客户端主机主板上的BIOS设定的启动顺序启动.如果没有找到bootload,就会根据启动顺序与其对应的启动介质启动.

2、如果是DHCP网络启动的话,客户端首先会向其服务器请求IP地址以及mask

3、服务器响应客户端并分配IP及其Mask

4、当客户端获取其IP及Mask之后还会向服务器发送请求获取启动安装的bootload,及其系统安装时需要文件

5、Tftp Server 会响应客户端,提供启动安装时所需的文件

6、客户端将服务器提供的启动软件包下载至本地,并在内存中执行安装

        简单介绍:其实能够提供这bootload,及其安装系统所需文件的服务器除了tftp之外,还有ftp,http

tftp: Trivial file transfer server , 简单文件传输协议,由于开发初期就是为了提供高效传输小文件,所以是基于udp协议开发的,并监听在udp:69,等待客户端的请求;不过客户端对Tftp的需求并不是特别高,所以每次系统启动时都需要开启的话,其实挺浪费资源的.所以tftp实在后端工作的,睡眠状态.

在linux系统中有这样的一种进程:叫做超级守护进程:xinetd:就是为了那些极少接收用户请求的服务,专门提供监听功能负责代替Tftp服务器监听udp:69号端口,事实上当用户请求到来之后xinetd,负责唤醒Tftp响应客户端请求

瞬时(非独立)守护进程:它们无须定义在运行级别下,只需要一次性地定义xinetd的运行级别 瞬时守护进程基于xinetd的配置文件:/etc/xinetd.d/Service_name

什么是:pxe预启动执行环境,是由intel公司开发,工作于C/S网络模式,用于网络引导操作系统

1、配置DHCP服务器

# yum -y install dhcp
# vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
#表示dhcp服务器和dns服务器的动态信息更新模式。这行必须要有dhcp服务器才能启动以来。
subnet 172.16.0.0 netmask 255.255.0.0 {
#subnet 定义网段DHCP工作的网段
    option routers        172.16.0.1;   # 默认网关
    option subnet-mask    255.255.255.0;  # 子网掩码掩码
    option domain-name     "Mozilla.com"; # 客户端所在域的名称
    option domain-name-servers  220.2.2.2,220.2.2.1; # 首选DNS,以及备用DNS服务器的IP地址
    option time-offset      -180000;
    range dynamic-bootp 172.16.251.100 172.16.251.254; # 能够兼容bootp;以及IP地址池,能够分配IP的地址范围
    default-lease-time 21600; #默认租约时间
    max-lease-time 43200;  #最大租约时间
    next-server 172.16.251.67; #tftp Sserver 的ip地址
    filename "pxelinux.0";
}

2、启动服务

# service dhcpd start

# tail -f /var/log/boot.log

   注释:# tail -f /var/log/boot.log,能够查看客户端请求dhcp服务器获取IP的过程

3、配置tftp-server

# yum -y install xinetd tftp-server tftp
# chkconfig xinetd on
# chkconfig tftp on
# service xinetd start
# ss -unl | grep ":69"

3、准备安装树,将挂载在media/cdrom 通过mount命令绑定到web服务DocumentRoot

# mkdir /var/www/html/centos6
# mount --bind /media/cdrom /var/www/html/centos6
# service httpd start

4、准备tftpboot下的文件,tftp默认文件存放的根目录/var/lib/tftpboot/

# yum -y install syslinux
# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/
# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

5、提供kickstart文件 kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别.可以用「Kickstart 配置」应用程序创建它或是自己从头编写.红帽企业Linux安装程序也根据在安装过程中的选择创建一个简单的kickstart文件,这个文件被写入到/root/anaconda-ks.cfg.可以用任何能够把文件保存为ASCII文本的文本编辑器或字处理器来编辑它.  编辑好kickstart文件后保存至/var/www/html目录下;这里假设为ks.cfg

# Kickstart file automatically generated by anaconda.
#version=DEVEL
#版本名称
install
url --url=http://172.16.251.67/Centos6.5     #安装树的url路径,因为我们这里是基于http所以,如果是ftp:ftp://path
lang en_US.UTF-8 #默认语言以及字符集
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6 #定义网络类型,noboot yes:自动启动,设备名称,获取地址的方式,不启动ipv6
rootpw  --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0 #root的密码这里使用iscrypted 加密存放
#Reboot after installation
reboot #安装之后立即重新启动
firewall --disabled #默认iptables防火墙
authconfig --useshadow  --passalgo=sha512 #默认用户密码加密方式使用的是sha512
selinux --disabled #安装时不启动selinux
timezone Asia/Shanghai  #安装的时区上海
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" #定义bootload安装在本地mbr中 并创建创建设备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 #将系统中的所有分区清空格式化
zerombr     #将mbr格式化
text #安装方式text文本安装
#part /boot --fstype=ext4 --size=200  #定义boot分区文件系统类型以及的大小
#part pv.008002 --size=61440
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
#创建lvs逻辑卷
repo --name="CentOS"  --baseurl=http://172.16.251.67/Centos6.5
%packages
@Base
@Core
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
ibus-table-cangjie
ibus-table-erbi
ibus-table-wubi
lftp
#需要安装的包组
# 1.每节必须按顺序指定.除非特别申明,每节内的项目则不必按序排列.小节的顺序为:
                        #命令部分,这里应该包括必需的选项.
                        #%packages部分,这部分选择需要安装的软件包.
                        #%pre和%post部分,这两个部分可以按任何顺序排列而且不是必需的.
                #2.不必需的项目可以被省略.
                #3.如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样.一旦用户进行了选择,安装会以非交互的方式(unattended)继续(除非找到另外一个没有指定的项目).
                #4.以井号("#")开头的行被当作注释行并被忽略.
        对于 kickstart 升级,下列项目是必需的:
                #1.语言
                #2.安装方法
                #3.设备规格(如果这个设备是在安装过程中所需要的)
                #4.键盘设置
                #5.upgrade 关键字
                #6.引导装载程序配置
                #7.如果任何其他的项目被指定为upgrade,这些项目将被忽略(注意这包括了软件包选择).
                                                                                                                                                                                                                  
 #kickstart预安装脚本
        #可以在 ks.cfg文件被解析后马上加入要运行的命令.这个部分必须处于kickstart文件的最后(在命令部分之后)而且必须用%pre命令开头.可以在%pre部分访问网络;然而,此时命名服务还未被配置,所以只能使用IP地址.
        #注:预安装脚本不在改换了的根环境(chroot)中运行.
        -#-interpreter /usr/bin/python,允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言.
#kickstart安装后脚本
        #也可以加入在系统安装完毕后运行的命令.这部分内容必须在kickstart的最后而且用%post命令开头.它被用于实现某些功能,如安装其他的软件和配置其他的命名服务器.
        #注:如果用静态IP信息和命名服务器配置网络,可以在%post部分访问和解析IP地址.如果使用DHCP配置网络,当安装程序执行到%post部分时,/etc/resolv.conf文件还没有准备好.此时,可以访问网络,但是不能解析IP地址.因此,如果使用DHCP,必须在%post部分指定IP地址.
        #注:post-install 脚本是在 chroot 环境里运行的.因此,某些任务如从安装介质复制脚本或RPM将无法执行.
        #--nochroot,允许指定想在chroot环境之外运行的命令.
                #下例把/etc/resolv.conf文件复制到刚安装的文件系统里.
                #%post --nochroot cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf
        #--interpreter /usr/bin/python
                #允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言.


   6、配置引导程序能自动加载此kickstart文件 编辑/var/lib/tftpboot/pxelinux.cfg/default 在label为linux项的append一行后附加: ks=http://172.16.251.67/ks.cfg





你可能感兴趣的:(linux,服务器,IP地址,软件包,系统管理员)