zoukankan      html  css  js  c++  java
  • 批量部署系统

    使用 PXE+Kickstart 实现无人值守批量部署系统

     

    笔者:@拿着保温瓶的年轻人


    正文:

    一、废话两句

    在云数据中心,一次几十台甚至几百台服务器上线,系统安装将变得非常繁琐,系统安装好了后还会涉及很多配置,如果一台台来安装的话工作量非常大。(虽然有加班费,开个玩笑)
    为了解决这个问题,我们需要实现无人值守批量部署系统。

     简单看一下拓扑图:

    1. 什么是PXE?

     简单来说:PXE主要是引导作用,具体的详细信息这里就不多说了,详情百度即可。

    PXE引导流程:

    2. 什么是Kickstart?

    简单两句就是:Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数;
    比如:我们安装系统的时候需要分区、设置时区、设置root密码、安装后执行的脚本等等,这些操作都记录下来并生成一个名为ks.cfg的文件。

    PXE+Kickstart 无人值守安装操作系统完整过程:

    二、环境准备

    操作系统:CentOS 7.4 (最小化安装)
    实验平台:VMware Workstation 14
    网络模式:NAT模式
    服务器IP地址:192.168.115.21
    防火墙:关闭
    SElinux=Disable

    三、准备工作

    如果当初已经是图形化安装了,则不需要该步骤。
    生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依赖于X Windows,所以我们需要安装X Windows 和Desktop 并重启系统,操作如下:

    i. 挂载光盘:

    [root@localhost ~]# mkdir /mnt/cdrom
    [root@localhost ~]# mount /dev/cdrom /mnt/cdrom

     

    ii. 配置本地yum源:

    复制代码
    [root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
    ------------------------------------------------------
    [development]
    # 名称必须为 “development”,否则到后面kickstart配置会出现软件包选择出现没有软件包信息
    name=redhat
    baseurl=file:///mnt/cdrom
    gpgcheck=0
    复制代码

    iii. 安装图形化:

    [root@localhost ~]# yum groupinstall "Server with GUI" -y
    [root@localhost ~]# systemctl set-default graphical.target  // 设置默认启动到图形界面
    [root@localhost ~]# reboot      // 重启机器

    四、安装需要服务

    1. 配置DHCP

    i. 安装DHCP服务

    [root@localhost ~]# yum install dhcp -y

    ii. 修改/etc/dhcp/dhcpd.conf 配置文件

    复制代码
    [root@localhost ~]# vim /etc/dhcp/dhcpd.conf
    ------------------------- 配置如下 -------------------------------
    subnet 192.168.115.0 netmask 255.255.255.0 {    //所在网段
    range 192.168.115.100 192.168.115.199;          //分配IP地址范围
    option subnet-mask 255.255.255.0;              //给客户端设置子网掩码(netmask)
    default-lease-time 21600;           //设置默认的IP租期时间
    max-lease-time 43200;               //设置最大的IP租期时间
    next-server 192.168.115.21;         //tfp服务端IP地址
    filename "/pxelinux.0";             //网络引导程序
    }
    复制代码

    iii. 启动DHCP服务

    [root@localhost ~]# systemctl start dhcpd
    [root@localhost ~]# systemctl enable dhcpd

    iv. 测试DHCP是否成功

    新建一个虚拟机进行测试,如下图可以看出已经成功获取IP地址和其他信息了。

    2. 配置TFP

     i. 安装TFP、Xinetd

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

    ii. 修改配置文件

    [root@localhost ~]# vim /etc/xinetd.d/tftp
    -------------- 省略配置信息,看下图 -------------
    将 disable 设置为 no

    iii. 启动服务

    因为 tftp 服务是挂载在超级进程 xinetd 下的,所以通过启动 xinetd 来启动 tftp 服务。

    [root@localhost ~]# systemctl start xinetd
    [root@localhost ~]# systemctl enable xinetd

    iv. 检查服务是否启动成功

    [root@localhost ~]# netstat -ntulp | grep 69
    udp       0      0 0.0.0.0:69        0.0.0.0:*        2817/xinetd

    3. 安装Syslinux

    i. 安装syslinux只是为了要 pxelinux.0 引导加载程序,没有别的用意。

    [root@localhost ~]# yum install selinux -y

    ii. 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中

    [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

    iii. 拷贝光盘里的配置文件

    [root@localhost ~]# cp /mnt/cdrom/isolinux/* /var/lib/tftpboot/

    iv. 验证改步骤是否成功

    将新建的测试虚拟机重启,就可以看到该界面了。

    4. 配置HTTP

    i. 安装HTTP

    系统的安装方式可以选择HTTP、FTP、 NFS,我们这里介绍HTTP方式的安装,其他两种方式的安装,大家可以自行百度。

    [root@localhost ~]# yum install httpd  -y

    ii. 启动HTTP

    [root@localhost ~]# systemctl start httpd
    [root@localhost ~]# systemctl enable httpd

    iii. 复制光盘全部内容至http 的根目录/var/www/html/pub 下

    [root@localhost ~]# mkdir /var/www/html/pub
    [root@localhost ~]# cp -r /mnt/cdrom/ /var/www/html/pub

    iv. 测试改步骤是否成功

    5. 配置kickstart

    i. 安装kickstart

    [root@localhost ~]# yum install system-config-kickstart -y

    ii. 在桌面环境下配置Kickstart,生成ks.cfg 文件

    [root@localhost ~]# system-config-kickstart

    A. 设置语言,键盘,时区,Root密码,安装完毕后重启等。

    B. 设置安装方式,这篇文章介绍的是HTTP方式的安装。

    C. 安装MBR

    D. 设置分区

    E. 配置网络

    F. 认证配置

    G. SELinux 和防火墙配置

    H. 图形环境配置

    I. 软件包安装选择

    注:如果你的软件列表没有信息,解决该问题看后面部分,如下图:

    J. 安装后脚本

    K. 保存导出配置文件

    iii. 复制到HTTP下的ks目录

    [root@localhost ~]# mkdir /var/www/html/ks
    [root@localhost ~]# cp ks.cfg  /var/www/html/ks/

    iv. 验证改步骤

    6. 修改default

    i. 创建配置文件夹

    [root@localhost ~]# cd /var/lib/tftpboot/
    [root@localhost tftpboot]# mkdir pxelinux.cfg

    ii. 复制配置文件

    复制代码
    [root@localhost ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    [root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
    ----------------------- 修改配置如下 --------------------------
    label linux
      menu label ^Install PXE+Kickstart_RedHat7
      kernel vmlinuz
      append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0
    复制代码

    参数解释:

    append initrd=initrd.img ks     // 存放ks配置文件的服务器地址和路径,通过该路径找到对应的ks.cfg文件来引导系统安装
    ksdevice=eth0                   // 指定该网卡进行ks的数据交互(可忽略)
    net.ifnames=0 biosdevname=0     // 修改内核参数,让网卡命名变为ethXX

    iii. 开机验证(需要手动选择安装)

    iv. 全自动化安装,无需手动选择安装

    复制代码
    [root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
    --------------------------------------------------------------
    default linux            # 在配置文件第一行找到default,加上label的名称即可。
    label linux
      menu label ^Install PXE+Kickstart_RedHat7
      kernel vmlinuz
      append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0
    复制代码

    v. 安装好后验证脚本信息

    到此就完成了无人值守批量部署系统,收工下班。

    五、你可能会出现的问题

    1. 配置kickstart时,软件包选择出现没有软件包信息,如下图:

    解决办法:

    检查yum源配置是否为: [development] ,配置好后,重新打开kickstart配置窗口即可。如图:

    2. 配置好后,进行自动化部署的时候出现如下报错信息,如下图:

    "/sbin/dmsquash-live-root: line 273: write error: No space left on device"

    解决办法:

    检查虚拟机或服务器的内存大小,RedHat7.3以上的版本进行Kickstart安装需要分配至少2GB的内存。

  • 相关阅读:
    windows系统切换jdk,修改java_home无效情况
    Cannot instantiate interface org.springframework.context.ApplicationListener
    MySQL分组查询获取每个学生前n条分数记录(分组查询前n条记录)
    ASP.NET Web API 使用Swagger生成在线帮助测试文档,支持多个GET
    EF TO MYSQL 无法查询中文的解决方法
    HttpWebRequest post请求获取webservice void数据信息
    This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分 解决方案
    MySQL 5.7.13解压版安装记录 mysql无法启动教程
    C# udpclient 发送数据断网后自动连接的方法
    汽车XX网站秒杀抢购代码
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/11796600.html
Copyright © 2011-2022 走看看