码迷,mamicode.com
首页 > 其他好文 > 详细

kickstart+pxe部署

时间:2020-12-31 12:35:50      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tftp服务器   nsf   ash   ati   info   redhat   应该   解析   自动   

------------恢复内容开始------------

kickstart

通过网络安装系统 ----pxe

kickstart,cobbler

pex

预启动执行环境

通过网络接口启动计算机,不依赖于本地存储设备,硬盘

c/s

ip,udp,dhcp,tftp

pxelinux.0文件

kickstart作

ks.cfg

  • 主机名
  • root密码
  • 网络信息
  • 软件包选择
    1. vim
    2. lrzsz
    3. iftop
    4. netstat

reboot

cobbler

cobbler-web

  • dhcp
  • tftp
  • dns

cobbler命令

环境准备

准备好一台用于部署kickstart服务端的机器

注意:虚拟机网卡连接方式,采用NAT模式,不要用桥接,且关闭VM网卡中的DHCP服务

环境准备如下

1.配置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

2.安装基础软件,如果是最小化安装的话
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate 


3.关闭防火墙
[root@kickstart ~]# iptables -F
[root@kickstart yum.repos.d]# systemctl stop firewalld
[root@kickstart yum.repos.d]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@client01 ~]# sed -i  ‘s/enforcing/disabled/g‘ /etc/selinux/config 
[root@kickstart ~]# getenforce 
Disabled

4.关闭vmware的dhcp服务,设置linux静态ip
[root@kickstart ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="b4c06569-fc94-4e94-9c63-0391c7a35432"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=172.18.41.133
NETMASK=255.255.255.0
DNS1=1.2.4.8
GATEWAY=172.18.41.2

5.系统检查
[root@kickstart ~]# uname -a
Linux kickstart 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@kickstart ~]# uname -r
3.10.0-862.el7.x86_64


[root@kickstart ~]# ifconfig  ens33 |awk  ‘NR==2 {print $2}‘
172.18.41.133

[root@kickstart ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

6.时间同步更新
[root@kickstart ~]# ntpdate -u ntp.aliyun.com
修改时区
[root@kickstart ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
[root@kickstart ~]# date
Tue Jul 21 19:05:06 CST 2020

dhcp服务端的配置

1.手动输入静态ip(static address)

2.优选,dhcp方式,客户端向服务端租用ip为动态ip地址dynamic,ip,address

dhcp提供的服务

  • 提供ip地址和子网掩码,当前的局域网段172.168.1.0 ,动态分配,租给你一个ip 192.168.1.20 255.255.255.0 172.168.1.2
  • 提供IP地址对应的网络地址和广播地址
  • 提供网关
  • dns服务器地址 8.8.8.8 223.5.5.5 223.6.6.6

租约

RARP逆向地址解析协议,提供Mac地址找到ip

租约的过程 tail /var/log/message 能够看到dhcp通信过程

? 1.客户端请求ip(客户端向服务端发送 DHCPISCOVER广播包)

? 2.DHCP服务端给与响应(服务器发送DHCPOFFER广播包)

? 3.客户端此时选择ip地址(客户端再次向服务端发送DHCPREQUEST广播包)

? 4.服务端确定租约(服务端再次发送DHCPACK/DHCPNAK广播包)

DHCP报文

DHCP协议中的报文

DHCP报文共有一下几种:

DHCP DISCOVER :客户端开始DHCP过程发送的包,是DHCP协议的开始

DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息

DHCP REQUEST :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。

DHCP ACK :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。

DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。

DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址

DHCP INFORM :客户端发出的向服务器请求一些信息的报文

DHCP DECLINE :当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。

DHCP的作用域

作用域是指DHCP服务器可分配租用给DHCP客户机的IP地址范围。DHCP服务器应该至少配置一个作用域,各作用域的IP地址范围(IP地址池)不能出现重叠。

保留IP

保留IP用于有特定服务的客户机,需要将保留的IP与客户机的MAC地址绑定。

IP租约的更新

当客户机重新启动或租期达50%时,就需要重新更新租约,客户机直接向提供租约的服务器发送请求DHCPREQUEST消息,要求更新现有的地址租约。如果DHCP服务器接收到请求,它将发送DHCP确认信息给客户机,更新客户机租约。如果客户机无法与提供租约的服务器取得联系,则客户机一直等到租期到达87.5%时,进入到一种重新申请的状态,它向网络上所有的服务器广播DHCPDISCOVER请求更新现有的IP租约。

IP租约的释放

使用ipconfig/release使DHCP客户机向DHCP服务器发送DHCPRELEASE消息并释放其租约。

如果客户机在租约时间内保持关闭并且不更新租约,在租约到期后DHCP服务器可能将客户机的IP地址分配给其他的客户机。如果客户机不发送DHCPRELEASE消息,那么它在重启后,将试图尝试继续使用上一次使用过的IP地址。

部署DHCP服务端

# 机器1 dhcp服务端
[root@kickstart ~]# ifconfig  ens33 |awk  ‘NR==2 {print $2}‘
172.168.1.13


[root@kickstart ~]# hostname
kickstart

dhcp服务端

[root@kickstart ~]# yum install dhcp -y
# 查询软件包信息
[root@kickstart ~]# rpm -qa dhcp
dhcp-4.2.5-79.el7.centos.x86_64

设置dhcpd.conf配置文件

[root@kickstart ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#

subnet 172.168.1.0 netmask 255.255.255.0 {    
range 172.168.1.100 172.168.1.199;                # range设置起始,结束ip范围
option subnet-mask 255.255.255.0;                # 选项,设置掩码
option routers 172.168.1.2;                        # dhcp服务的网关设置,这里不写,客户端则无法上网
option domain-name-servers 223.5.5.5;              # 保证dhcp客户端可以域名解析
default-lease-time 21600;                        # 默认的IP租用期限
max-lease-time 43200;                                # 最大的IP租用期限
next-server 172.168.1.13;                        # 告知客户端tftp服务器的ip
filename "/pxelinux.0";                            # 指明引导文件,用于指定PXE的运行程序文件,放在TFTP服务器的目录下
}

配置文件解释

filename:指明引导文件名称,用于指定PXE的运行程序文件,一般是在TFTP服务器的工作目录下,这个是关于PXE启动的配置。流程如下:

        客户机通过网络启动,一般采用的就是intel的PXE来启动;

        PXE首先指定DHCP,获取自身IP地址、TFTP服务器或者NFS服务器的IP地址、PXE程序等内容;

        执行获取的PXE程序,获得详细配置内容,再获取linux虚拟系统和intrid等内容;

        最后加载整个linux系统到内核。

next-server server-name(一般是IP):客户端启动后,获得了IP地址,会加载引导文件,这里就定义提供引导文件的服务器IP地址

启动dhcp服务,检查日志,状态

[root@kickstart ~]# systemctl start dhcpd
[root@kickstart ~]# systemctl is-enabled dhcpd
disabled
[root@kickstart ~]# systemctl is-active  dhcpd
active


# 部分日志如下
[root@kickstart ~]# tail -f /var/log/messages 
Jul 21 06:23:06 kickstart systemd: Starting DHCPv4 Server Daemon...
Jul 21 06:23:06 kickstart dhcpd: Internet Systems Consortium DHCP Server 4.2.5
Jul 21 06:23:06 kickstart dhcpd: Copyright 2004-2013 Internet Systems Consortium.
Jul 21 06:23:06 kickstart dhcpd: All rights reserved.
Jul 21 06:23:06 kickstart dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Jul 21 06:23:06 kickstart dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Jul 21 06:23:06 kickstart dhcpd: Wrote 0 leases to leases file.
Jul 21 06:23:06 kickstart dhcpd: Listening on LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd: Sending on   LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd: Sending on   Socket/fallback/fallback-net
Jul 21 06:23:06 kickstart systemd: Started DHCPv4 Server Daemon.

检查服务状态

[root@kickstart ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-07-21 06:23:06 EDT; 5min ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 10396 (dhcpd)
   Status: "Dispatching packets..."
   CGroup: /system.slice/dhcpd.service
           └─10396 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

Jul 21 06:23:06 kickstart dhcpd[10396]: Internet Systems Consortium DHCP Server 4.2.5
Jul 21 06:23:06 kickstart dhcpd[10396]: Copyright 2004-2013 Internet Systems Consortium.
Jul 21 06:23:06 kickstart dhcpd[10396]: All rights reserved.
Jul 21 06:23:06 kickstart dhcpd[10396]: For info, please visit https://www.isc.org/software/dhcp/
Jul 21 06:23:06 kickstart dhcpd[10396]: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified ...ig file
Jul 21 06:23:06 kickstart dhcpd[10396]: Wrote 0 leases to leases file.
Jul 21 06:23:06 kickstart dhcpd[10396]: Listening on LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd[10396]: Sending on   LPF/ens33/00:0c:29:e9:ed:77/172.18.41.0/24
Jul 21 06:23:06 kickstart dhcpd[10396]: Sending on   Socket/fallback/fallback-net
Jul 21 06:23:06 kickstart systemd[1]: Started DHCPv4 Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.

查看dhcp端口监听udp

[root@kickstart ~]# ss -unlp
State      Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
UNCONN     0      0                               127.0.0.1:323                                                 *:*                   users:(("chronyd",pid=652,fd=1))
UNCONN     0      0                                       *:67                                                  *:*                   users:(("dhcpd",pid=10396,fd=7))
UNCONN     0      0                                     ::1:323                                                :::*                   users:(("chronyd",pid=652,fd=2))

设置dhcp服务开机自启

[root@kickstart ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.


[root@kickstart ~]# systemctl is-enabled dhcpd
disabled
[root@kickstart ~]# systemctl is-active  dhcpd
active

PXE和tftp

这里注意,虚拟机的内存至少分配2G,PXE工作原理
技术图片

TFTP服务器

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。

xinetd

inux服务器端tftp-server的配置

tftp服务器需要安装xinetd(守护tftp)、tftp和tftp-server 3个软件

[root@kickstart ~]# yum install tftp-server tftp xinetd -y

修改xinetd配置文件,管理tftp

[root@kickstart ~]# cat /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            = no
    per_source        = 11
    cps            = 100 2
    flags            = IPv4
}

启动xinetd服务

通过xinetd启动tftp服务即可

[root@kickstart ~]# systemctl start xinetd
[root@kickstart ~]# netstat -a | grep tftp
udp        0      0 0.0.0.0:tftp            0.0.0.0:*   

[root@kickstart ~]# lsof -i:69
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  15519 root    5u  IPv4  67791      0t0  UDP *:tftp

连接tftp

[root@kickstart ~]# tftp 172.18.41.133

默认tftp工具的目录,可以创建测试文件

[root@kickstart ~]# cd /var/lib/tftpboot/
[root@kickstart tftpboot]# ls
[root@kickstart tftpboot]# touch test.cc
[root@kickstart tftpboot]# ls
test.cc

进入任意目录,测试下载tftp目录内容

[root@kickstart tftpboot]# cd /tmp/
[root@kickstart tmp]# tftp 172.168.1.13
tftp> ?
tftp-hpa 5.2
Commands may be abbreviated.  Commands are:

connect     connect to remote tftp
mode        set file transfer mode
put         send file
get         receive file
quit        exit tftp
verbose     toggle verbose mode
trace       toggle packet tracing
literal     toggle literal mode, ignore ‘:‘ in file name
status      show current status
binary      set mode to octet
ascii       set mode to netascii
rexmt       set per-packet transmission timeout
timeout     set total retransmission timeout
?           print help information
help        print help information
tftp> get test.cc
tftp> quit
[root@kickstart tmp]# ls
test.cc

清空测试数据

[root@kickstart tmp]# rm -rf /var/lib/tftpboot/test.cc

HTTP服务器部署网络镜像

既然是自动化装机系统,我们要想办法吧IOS系统镜像光盘的内容,发布出去,提供下载等,生产环境需要进行镜像复制,学习阶段为了节省时间,用HTTPD展示就好,是发布镜像源的一个步骤。

# 安装
[root@kickstart syslinux]# yum install httpd -y


# 插入一行配置
[root@kickstart syslinux]# sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf

# 启动
[root@kickstart syslinux]# systemctl start httpd


# 建立站点目录
mkdir /var/www/html/CentOS-7/

# 通过vmware挂上centos7镜像文件,该步骤重要,如下的图片

# 挂载目录
[root@kickstart syslinux]# mount /dev/cdrom /var/www/html/CentOS-7/
mount: /dev/sr0 is write-protected, mounting read-only


# 查看挂载情况
[root@kickstart syslinux]# df -h |grep www
/dev/sr0                 4.2G  4.2G     0 100% /var/www/html/CentOS-7


# 访问站点,访问IOS镜像的内容,注意大小写,内容如下图
http://172.168.1.13/CentOS-7/

技术图片

技术图片

部署PXE

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。

如果没有找到pxelinux.0这个文件,可以安装一下。

[root@kickstart syslinux]# yum install syslinux -y

拷贝pxelinux.0该文件,放入tfpt目录,便于提供给客户端下载

# 把pxelinux.0文件 发给tftp目录,用于发给客户端
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

# 拷贝启动菜单程序文件
[root@kickstart syslinux]# cp -a /var/www/html/CentOS-7/isolinux/* /var/lib/tftpboot/

# 拷贝自动重启文件
[root@kickstart ~]# cp /usr/share/syslinux/reboot.c32 /var/lib/tftpboot/


# 检查tftp目录下的启动菜单文件
[root@kickstart syslinux]# tree -F /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.cat
├── boot.msg
├── grub.conf
├── initrd.img   # 驱动文件
├── isolinux.bin
├── isolinux.cfg
├── memtest
├── pxelinux.0   # 启动代码
├── pxelinux.cfg/
│   └── default # 配置文件
├── reboot.c32  # 重启系统
├── splash.png
├── TRANS.TBL
├── vesamenu.c32  # 界面框架
└── vmlinuz*      # 内核文件



# 新建一个pxelinux.cfg目录,用于存放客户端的配置文件
[root@kickstart syslinux]#  mkdir -p /var/lib/tftpboot/pxelinux.cfg


# 拷贝PXE配置文件,且改名
[root@kickstart syslinux]# cp /var/www/html/CentOS-7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

# 提升tftp目录权限
[root@kickstart tftpboot]# chmod 777 -R /var/lib/tftpboot/

配置文件了解

这些文件内的参数,就是你开机安装系统看见的画面

[root@kickstart tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32  # 默认加载一个菜单
#prompt 1             # 开启会显示命令行‘boot: ‘提示符。prompt值为0时则不提示,将会直接启动‘default‘参数中指定的内容。
timeout 600           # timeout时间是引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
display boot.msg
# 菜单背景图片、标题、颜色。
menu background splash.jpg
menu title Welcome to CentOS 6.7!
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指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动label linux下标记的kernel和initrd.img文件。
label linux       # 一个标签就是前面图片的一行选项。
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz  # 指定要启动的内核。同样要注意路径,默认是/tftpboot目录。
  append initrd=initrd.img # 指定追加给内核的参数,initrd.img是一个最小的linux系统
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

定制pxe网络安装文件

修改cfg文件,修改如下配置

1.修改第一行,让centos直接默认安装linux,不去手动再选择
default linux

2.制定apache的系统iso下载地址
 61 label linux
 62   menu label ^Install CentOS 7
 63   kernel vmlinuz
 64 # append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
 65   append initrd=initrd.img inst.repo=http://172.168.1.13/CentOS-7/ net.ifnames=0 biosdevname=0

DHCP客户端配置

再准备好一个linux虚拟机客户端,客户端注意网络连接选择,选择适配器,不要开启dhcp功能

且不要选择默认的NAT网卡,因为已经关闭了DHCP服务,你也无法获取IP地址,选择我们自己创建的DHCP服务器

VMWARE新建虚拟机

新添加一块网络适配器*

严格检查,你的配置,是否和我一样

创建lan区段和dhcp服务端同一个局域网

这个地方是之前做的

技术图片

dhcp服务端检查

# 检查系统日志,有关信息
[root@kickstart ~]# tail -f /var/log/messages 
Jul 27 12:28:17 kickstart dhcpd: DHCPDISCOVER from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:28:17 kickstart dhcpd: DHCPOFFER on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:28:17 kickstart dhcpd: DHCPREQUEST for 172.168.1.101 (172.168.1.13) from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:28:17 kickstart dhcpd: DHCPACK on 172.18.41.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:33 kickstart dhcpd: DHCPDISCOVER from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:34 kickstart dhcpd: DHCPOFFER on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:35 kickstart dhcpd: DHCPREQUEST for 172.168.1.101 (172.168.1.13) from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:35 kickstart dhcpd: DHCPACK on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:34:35 kickstart in.tftpd[14636]: Error code 0: TFTP Aborted
Jul 27 12:34:35 kickstart in.tftpd[14637]: Client ::ffff:172.168.1.101 finished /pxelinux.0
Jul 27 12:34:35 kickstart in.tftpd[14648]: Client ::ffff:172.168.1.101 finished /pxelinux.cfg/default
Jul 27 12:34:35 kickstart in.tftpd[14649]: Client ::ffff:172.168.1.101 finished /boot.msg
Jul 27 12:34:37 kickstart in.tftpd[14651]: Client ::ffff:172.168.1.101 finished /vmlinuz
Jul 27 12:34:53 kickstart in.tftpd[14652]: Client ::ffff:172.168.1.101 finished /initrd.img
Jul 27 12:35:04 kickstart dhcpd: DHCPDISCOVER from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:35:04 kickstart dhcpd: DHCPOFFER on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:35:04 kickstart dhcpd: DHCPREQUEST for 172.168.1.101 (172.18.41.133) from 00:0c:29:a5:a7:e7 via ens33
Jul 27 12:35:04 kickstart dhcpd: DHCPACK on 172.168.1.101 to 00:0c:29:a5:a7:e7 via ens33
# 该文件存着客户端的动态分配信息,可以对比一下mac地址,也可以针对该mac地址,在dhcpd.conf中设置固定ip
[root@kickstart ~]# cat /var/lib/dhcpd/dhcpd.leases

直到你的客户端,出现如下界面,通过pxe网络安装系统成功

我们没有借助本地磁盘工具,通过网络,获取镜像源,直到系统开始安装界面
技术图片
客户端机器通过网络,分配了dhcp地址

之前截屏图片

技术图片
安装介质,是我们制定的apache站点目录,获取ISO镜像文件
技术图片
手动通过pxe远程安装,搞定,最终安装完毕系统,查看ip
技术图片
技术图片

kickstart自动应答装机

上述我们还是通过鼠标点击,进行装机,这些步骤,可以写成脚本文件,自动化装机。

通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart就诞生了。使用这种kickstart,只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。

生成kickstart配置文件的三种方法:

  • 方法1、 每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)
  • 方法2、Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).网上有很多用CentOS桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。
  • 方法3、阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。

kickstart实践

环境准备,确保启动好PXE网络安装系统的各个组件

1.启动dhcp服务
[root@kickstart ~]# systemctl start dhcpd

[root@kickstart ~]# netstat -tunlp   
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1007/dhcpd          
2.启动tftp服务,
[root@kickstart ~]# systemctl restart xinetd.service 
[root@kickstart ~]# netstat -tunlp | grep xinetd
udp        0      0 0.0.0.0:69              0.0.0.0:*                           19479/xinetd       

启动httpd服务,并且可以正常获取iso镜像
[root@kickstart ~]# systemctl restart httpd

挂载镜像到http
[root@kickstart ~]# mount /dev/cdrom /var/www/html/CentOS-7/
mount: /dev/sr0 is write-protected, mounting read-only
[root@kickstart ~]# curl 127.0.0.1/CentOS-7

部署kickstart过程

1.第一步编写ks脚本文件,自动应答配置文件,把安装的步骤,写人到开始文件里,系统自动化的根据这个ks文件,就能够吧系统安装好了

生成ks配置文件方式

centso默认安装好之后,在/root家目录下就会自动生成一个ks脚本文件

ks文件语法

命令段
包组段  %packages开头,以%end结束
脚本段  以%post开头,以%end结束,在安装完系统之后,执行的linux命令,脚本
       以%pre开头,以%end结束,在安装完系统之前执行的linux命令,脚本

通过工具检查ks文件语法

yum install pykickstart
ksvalidator /var/www/html/ks_config/CentOS-7-ks.cfg

该工具只是基本的对文件语法进行简单检测,并不能保证完全正确,还需人为检查

用python脚本对文件加密
python -c ‘import crypt;print(crypt.crypt("chaoge666"))‘
得到如下结果

部署操作

1.准备一个自定义的ks文件,放入http目录下
[root@kickstart ks_config]# cat /var/www/html/ks_config/ks.cfg 

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts=‘us‘
# Root password
rootpw --iscrypted $6$cIVuOep8khS61xi3$iNU0CiA8ANu8.8KNEmADfIVqPgcSEaC440oF.41eKin6vpyehf1QMDzjqPLYSfh1SGi8fJ2ajR3axw6jJqrvU1


# Use network installation
url --url="http://172.18.41.133/CentOS-7"
# System language
lang en_US
# yum configuation
repo --name="Red Hat Enterprise Linux" --baseurl="http://172.168.1.13/CentOS-7" --cost=100
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled

# System services
services --enabled="chronyd"
ignoredisk --only-use=sda
# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
#autopart --type=lvm
# Clear the Master Boot Record,清空分区,重新分区
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=500
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
# 安装系统软件包
%packages
@core
%end

修改pxe配置文件

修改pxelinux.cfg/default文件

备份原有pxe配置文件

[root@kickstart pxelinux.cfg]# cp default{,.bak}
[root@kickstart pxelinux.cfg]# ls
default  default.bak

写入新的文件信息

[root@kickstart pxelinux.cfg]# >default
[root@kickstart pxelinux.cfg]# cat /var/lib/tftpboot/pxelinux.cfg/default
# 使用欢迎界面
default vesamenu.c32
#default menu.c32
#prompt 1
# 倒计时600毫秒
timeout 600

# 欢迎词
MENU TITLE welcome to centos.

# 如下三个驱动
# 启动本地设备
label local
  menu label Boot from ^local drive
  localboot 0xffff

# 启动来自于ks配置文件
MENU SEPARATOR
label linux
  menu label ^Install or upgrade an existing system for ks
  # 系统默认选ks
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://172.168.1.13/ks_config/CentOS7-ks.cfg

# 安装基本驱动
MENU SEPARATOR
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset

检验配置是否正确

检验配置是否正确

1.检验iso文件是否可以获取

[root@kickstart pxelinux.cfg]# curl  http://172.168.1.13/CentOS-7/

2.检验pxe文件是否可以获取

[root@kickstart pxelinux.cfg]# curl  http://172.168.1.13/ks_config/CentOS7-ks.cfg

至此,我们就部署好了如下

  • dhcp服务器
  • tftp服务器
  • pxe配置文件
  • kickstart配置文件
    技术图片

开始ks自动化装机

上述准备工作,做好之后,开始装机

1.服务端可以观察日志
[root@kickstart pxelinux.cfg]# tail -f /var/log/messages

2.创建一个虚拟机,vmware,注意点如下

大于等于2G内存
添加网卡,选择lan区段

技术图片

自动化安装界面
技术图片
区别就是,本来这些选项都是图形化的,这里已经是黑屏的了
技术图片

待自动装机完毕后,系统会自动重启,进入centos操作系统,大功告成

输入账号密码,登录,开始玩耍吧

root
uplooking

kickstart+pxe部署

标签:tftp服务器   nsf   ash   ati   info   redhat   应该   解析   自动   

原文地址:https://www.cnblogs.com/lzyunv/p/14191268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!