zoukankan      html  css  js  c++  java
  • linux运维、架构之路-Kickstart无人值守

    一、PXE介绍

             PXE全名Pre-boot Execution Environment,预启动执行环境;通过网络接口启动计算机,不依赖本地存储设备或本地已安装的操作系统;Client/Server的工作模式

    二、PXE+Kickstart无人值守过程

    三、PXE+Kickstart实现自动化安装系统

    1、环境

    [root@m01 ~]# cat /etc/redhat-release
    CentOS release 6.9 (Final)
    [root@m01 ~]# uname -r
    2.6.32-696.el6.x86_64
    [root@m01 ~]# /etc/init.d/iptables status
    iptables: Firewall is not running.
    [root@m01 ~]# getenforce
    Disabled
    [root@m01 ~]# hostname -I
    10.0.0.61 172.16.1.61

    2、配置DHCP服务

    yum install dhcp -y #安装DHCP服务
    cat >>/etc/dhcp/dhcpd.conf<<EOF
    subnet 172.16.1.0 netmask 255.255.255.0 {
            range 172.16.1.120 172.16.1.200;  #可分配的地址池
            option subnet-mask 255.255.255.0; #子网掩码
            default-lease-time 21600;         #默认IP租用期限
            max-lease-time 43200;             #默认最大的IP租用期限
            next-server 172.16.1.61;          #指明tftp服务器的IP地址
            filename "/pxelinux.0";           #告知客户端从TFTP根目录下载pxelinux.0文件
    }
    EOF
    
    [root@m01 ~]# /etc/init.d/dhcpd start
    Starting dhcpd:                                            [  OK  ]
    [root@m01 ~]# lsof -i:67 #检查dhcp服务是否启动
    COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    dhcpd   27302 dhcpd    7u  IPv4 132009      0t0  UDP *:bootps 

    3、配置tftp服务

    [root@m01 ~]# yum -y install tftp-server
    [root@m01 ~]# sed -i '14s#yes#no#' /etc/xinetd.d/tftp
    [root@m01 ~]# /etc/init.d/xinetd start
    Starting xinetd:                                           [  OK  ]
    [root@m01 ~]# lsof -i:69
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    xinetd  27339 root    5u  IPv4 132413      0t0  UDP *:tftp

    4、配置HTTP服务

    [root@m01 ~]# yum -y install httpd
    sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf #去掉提示信息
    [root@m01 ~]# /etc/init.d/httpd start
    Starting httpd:                                            [  OK  ]
    
    [root@m01 ~]# mkdir -p /var/www/html/CentOS6.9 #创建镜像目录
    [root@m01 ~]# mount /dev/cdrom /var/www/html/CentOS6.9 #挂载光盘到镜像目录
    mount: block device /dev/sr0 is write-protected, mounting read-only
    [root@m01 ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       6.9G  1.8G  4.8G  27% /
    tmpfs           242M     0  242M   0% /dev/shm
    /dev/sda1       190M   34M  146M  19% /boot
    /dev/sr0        3.7G  3.7G     0 100% /var/www/html/CentOS6.9

    5、配置PXE启动需要的文件

    yum -y install syslinux #为了使用pxelinux.0而安装的包
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制pxe启动文件
    cp -a /var/www/html/CentOS6.9/isolinux/* /var/lib/tftpboot/ #从镜像中复制相关文件
    mkdir -p /var/lib/tftpboot/pxelinux.cfg
    cp /var/www/html/CentOS6.9/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    
    [root@m01 tftpboot]# ll /var/lib/tftpboot/
    total 45356
    -r--r--r-- 1 root root     2048 Mar 29  2017 boot.cat
    -r--r--r-- 1 root root       84 Mar 29  2017 boot.msg
    -r--r--r-- 1 root root      321 Mar 29  2017 grub.conf
    -r--r--r-- 1 root root 41587792 Mar 29  2017 initrd.img
    -r--r--r-- 1 root root    24576 Mar 29  2017 isolinux.bin
    -r--r--r-- 1 root root      923 Mar 29  2017 isolinux.cfg #修改此文件可以定制安装系统界面
    -r--r--r-- 1 root root   183012 Mar 29  2017 memtest
    -rw-r--r-- 1 root root    26759 Oct 11 05:56 pxelinux.0
    drwxr-xr-x 2 root root     4096 Oct 11 05:56 pxelinux.cfg
    -r--r--r-- 1 root root   151230 Mar 29  2017 splash.jpg
    -r--r--r-- 1 root root     2215 Mar 29  2017 TRANS.TBL
    -r--r--r-- 1 root root   163728 Mar 29  2017 vesamenu.c32
    -r-xr-xr-x 1 root root  4274992 Mar 29  2017 vmlinuz

    此时打开浏览器输入

    6、配置ks.cfg文件

    [root@m01 ks_config]# mkdir /var/www/html/ks_config/ -p
    [root@m01 ks_config]# grub-crypt #设置加密密码
    Password: 
    Retype password: 
    $6$3SU6kWgqSBiRVqre$w8L3Tll51SaEWzxyOBDb8AxIT468hMj0hwmQXqAx1ozQKn3rXHRB7hvp6BewtFRlqljqCmTVvaGje5DQVNNXZ.
    
    [root@m01 ks_config]# vi /var/www/html/ks_config/CentOS-6.9-ks.cfg
    # Kickstart Configurator for CentOS 6.9 by yan xinjiang
    install
    url --url="http://172.16.1.61/CentOS6.9/"
    text
    lang en_US.UTF-8
    keyboard us
    zerombr
    bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
    network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS6
    timezone --utc Asia/Shanghai
    authconfig --enableshadow --passalgo=sha512
    rootpw  --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYG
    WlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
    clearpart --all --initlabel
    [root@m01 ks_config]# cat /var/www/html/ks_config/CentOS-6.9-ks.cfg
    # Kickstart Configurator for CentOS 6.7 by yao zhang
    install
    url --url="http://172.16.1.61/CentOS6.9/"
    text
    lang en_US.UTF-8
    keyboard us
    zerombr
    bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
    network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS6
    timezone --utc Asia/Shanghai
    authconfig --enableshadow --passalgo=sha512
    rootpw  --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
    clearpart --all --initlabel
    part /boot --fstype=ext4 --asprimary --size=200
    part swap --size=1024
    part / --fstype=ext4 --grow --asprimary --size=200
    firstboot --disable
    selinux --disabled
    firewall --disabled
    logging --level=info
    reboot
    
    %packages  #选择安装系统需要的一些库和安装包
    @base
    @compat-libraries
    @debugging
    @development
    tree
    nmap
    sysstat
    lrzsz
    dos2unix
    telnet
    
    %post  #可以放安装执行的脚本,可以把自己的优化放在其中
    wget -O /tmp/optimization.sh http://172.16.1.61/ks_config/optimization.sh &>/dev/null
    /bin/sh /tmp/optimization.sh
    %end

    7、配置default文件

    [root@m01 ks_config]# cat /var/lib/tftpboot/pxelinux.cfg/default
    default ks
    prompt 0
    
    label ks
      kernel vmlinuz
      append initrd=initrd.img ks=http://172.16.1.61/ks_config/CentOS-6.9-ks.cfg ksdevice=eth1 #告诉安装程序ks.cfg文件在哪里
      ksdevice=eth1#指定从eth1网卡安装,不指定的话会让你选择

    8、完成无人值守自动安装系统

    打开系统电源,喝个小茶,上个厕所回来系统就OK了

     

    成功最有效的方法就是向有经验的人学习!
  • 相关阅读:
    java中的访问控制符
    DDD CQRS和Event Sourcing的案例:足球比赛
    你用过Spring中哪些功能?
    基于角色的权限访问控制初步
    mybatis深入学习
    GNU make学习笔记
    XmlFactoryBean和DefaultListableBeanFactory学习
    重新组织函数
    【JRebel 作者出品--译文】Java class 热更新:关于对象,类,类加载器
    不吹不黑,关于 Java 类加载器的这一点,市面上没有任何一本图书讲到
  • 原文地址:https://www.cnblogs.com/yanxinjiang/p/7794556.html
Copyright © 2011-2022 走看看