• 使用pxe和kickstart进行无人值守批量安装centos7


    1.概述

    本篇博客主要通过在虚拟化环境试验:使用pxe引导方式,配合自应答配置kickstart,进行无人值守批量安装centos7.9操作系统。

    操作系统的安装过程一般是这样的:

    • 让裸机从本地或者网络加载引导程序
    • 引导程序在本地或者网络加载操作系统和自应答配置文件

    2. 部署过程

    此过程在一台kvm虚拟机node17上操作。主要包括:

    • dhcp服务。负责为client分配ip,指定next-server和filename
    • tftp服务。负责为client配置操作系统类型,引导文件等
    • xinetd软件。负责指定tftp根目录
    • syslinux软件。产生pxe引导所需要的引导文件。
    • vsftpd/httpd/nfs-utils。存放操作系统镜像或者ks.cfg文件
    • system-config-kickstart。用于生成ks.cfg文件

    2.1 dhcp服务

    安装dhcp服务器,yum -y install dhcp

    配置dhcpd.conf,vim /etc/dhcp/dhcpd.conf

    ddns-update-style none;
    default-lease-time 259200;
    max-lease-time 518400;    
    option routers 192.168.80.1;
    option domain-name-servers 192.168.80.1;
    subnet 192.168.80.0 netmask 255.255.255.0 {
        range 192.168.80.51 192.168.80.59;
        option subnet-mask 255.255.255.0;
        next-server 192.168.80.17;
        filename "pxelinux.0";
    }
    

    启动dhcpd服务

    systemctl start dhcpd && systemctl enable dhcpd

    2.2 tftp/xinetd服务

    安装tftp,yum -y install tftp-server xinetd

    启动:systemctl start tftp && systemctl enable tftp

    查询:netstat -tupln|egrep 69

    udp        0      0 0.0.0.0:69              0.0.0.0:*                           1/systemd
    

    安装syslinux,yum -y install syslinux

    从syslinux安装目录/usr/share/syslinux中拷贝所需要的文件到tftp根目录/var/lib/tftpboot

    cp -a /usr/share/syslinux/{menu.c32,vesamenu.c32,pxelinux.0} /var/lib/tftpboot
    

    在tftp服务根目录下创建两个目录:centos7.9pxelinux.cnf

    mkdir -p /var/lib/tftpboot/{centos7.9,pxelinux.cfg}
    

    挂载centos7.9的镜像,拷贝所需要的引导文件

    mkdir -p /mnt/cdrom
    mount -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt/cdrom/
    cd /mnt/cdrom/isolinux/
    cp vmlinuz initrd.img /var/lib/tftpboot/centos7.9/
    cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    

    目录结构如下:

    [root@node17][/var/lib/tftpboot]
    $ pwd
    /var/lib/tftpboot
    [root@node17][/var/lib/tftpboot]
    $ tree .
    .
    ├── centos7.9
    │   ├── initrd.img
    │   └── vmlinuz
    ├── menu.c32
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   └── default
    └── vesamenu.c32
    

    修改pxelinux.cfg下面default文件内容:

    default vesamenu.c32
    timeout 600
    display boot.msg
    menu clear
    menu background splash.png
    menu title CentOS 7 menu
    menu vshift 8
    menu rows 18
    menu margin 8
    #menu hidden
    menu helpmsgrow 15
    menu tabmsgrow 13
    menu color border * #00000000 #00000000 none
    menu color sel 0 #ffffffff #00000000 none
    menu color title 0 #ff7ba3d0 #00000000 none
    menu color tabmsg 0 #ff3a6496 #00000000 none
    menu color unsel 0 #84b8ffff #00000000 none
    menu color hotsel 0 #84b8ffff #00000000 none
    menu color hotkey 0 #ffffffff #00000000 none
    menu color help 0 #ffffffff #00000000 none
    menu color scrollbar 0 #ffffffff #ff355594 none
    menu color timeout 0 #ffffffff #00000000 none
    menu color timeout_msg 0 #ffffffff #00000000 none
    menu color cmdmark 0 #84b8ffff #00000000 none
    menu color cmdline 0 #ffffffff #00000000 none
    
    label linux
      menu label ^Install CentOS 7.9 through pxe
      kernel ./centos7.9/vmlinuz
      append initrd=./centos7.9/initrd.img inst.stage2=ftp://192.168.80.17 quiet net.ifnames=0 biosdevname
    

    default是比较重要的一个文件,主要是定义了引导界面的内容

    而lable则是定义了操作系统的各类引导参数,包括kernal和各种内核参数

    2.3 安装vsftpd

    执行安装:yum -y install vsftpd

    配置vsftpd,vim /etc/vsftpd/vsftpd.conf,保证能够匿名访问。非匿名也可以,不过没有必要。

    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    xferlog_std_format=YES
    

    启动vsftpd:systemctl start vsftpd && systemctl enable vsftpd

    把操作系统解压的文件,拷贝到vsftpd目录

    cp -r /mnt/cdrom/* /var/ftp/

    执行ftp测试:curl ftp://192.168.80.17,能够看到操作系统的镜像解压后的文件

    2.4 编辑ks.cfg文件

    ks.cfg文件可以自行编辑,也可以用图像化生成。

    install 
    url --url="ftp://192.168.80.17"
    text
    auth --enableshadow --passalgo=sha512
    firewall --disabled
    firstboot --disabled
    ignoredisk --only-use=vda
    keyboard --vckeymap=us --xlayouts='us'
    lang en_US.UTF-8
    network  --onboot=yes --bootproto=dhcp --device=eth0 --noipv6 --activate
    reboot
    rootpw --iscrypted $6$dJiqrlRIoif61j3g$ECII6Ne7.Nni52/s4.4mcoY/c1hwOFNjDRPosLhGpjtI.W.e76IuQ3mvCG8CVDR8nRdUjG4EF74XQOgH8dJva0
    services --disabled="chronyd"
    selinux --disabled
    timezone Asia/Shanghai --isUtc --nontp
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda
    clearpart --none --initlabel
    part /boot --fstype="xfs" --ondisk=vda --size=250
    part swap --fstype="swap" --size=250
    part / --fstype="xfs" --ondisk=vda --size=19979
    
    %packages
    @^minimal
    @core
    kexec-tools
    %end
    
    %addon com_redhat_kdump --enable --reserve-mb='auto'
    %end
    
    %anaconda
    pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    %end
    

    把ks.cfg文件放到ftp目录下,并把文件权限改为644

    cp ks.cfg /var/ftp && chmod 644 /var/ftp/ks.cfg

    3. 测试部署

    virt-manager配置一台虚拟机,测试成功

  • 相关阅读:
    动手学深度学习
    实用机器学习
    双向注意力流模型
    深度学习进阶自然语言处理
    整体二分的升华
    2022百度之星 复赛 T3 最大值
    树的难题 BJOI2017 点分治 单调队列
    CF 818 div2
    2022 CCPC 热身赛
    AOJ 完全背包 数量少体积大价值小版本 dp+贪心
  • 原文地址:https://www.cnblogs.com/liwanliangblog/p/16434363.html
Copyright © 2020-2023  润新知