请选择 进入手机版 | 继续访问电脑版
查看: 17586|回复: 2237

一键安装PXE+dhcp+tftp+http+kickstart 批量部署linux系统脚本(mbr)

[复制链接]
  • TA的每日心情

    2020-4-12 22:16
  • 签到天数: 71 天

    [LV.6]常住居民II

    发表于 2016-3-14 10:49:26 | 显示全部楼层 |阅读模式
    本帖最后由 以谁为师 于 2016-3-14 10:53 编辑

    环境:centos 7服务列表
    dhcp服务:分配IP地址,指定启动文件和tftp服务地址
    tftp-server:传输引导文件
    http:将光盘iso镜像发布

    其他:
    pxelinux.0:启动文件通过安装syslinux包获得
    ks.cfg:通过/root/anaconda-ks.cfg定制自己的参数,当然如果是图形界面的服务器可以安装kickstart 生成自动化文件
    查看分配的地址,我这里启动是vm分配的ip,可以停掉vm dhcp。生产环境可以根据mac和先后顺序找到主机并进行ssh登录。
    cat /var/lib/dhcpd/dhcpd.leases
    #服务器分配给客户端的IP地址已记录

    停留界面

    1.png
    安装过程
    2.png


    下面我把脚本贴出来,后期有时间在搞混合的支持uefi
    [Shell] 纯文本查看 复制代码
    #!/bin/bash
    #centos 7 pxe install
    #by www.to-share.net
    
    mkdir -p /pxe/iso >/dev/nell 2>&1
    ####---- 挂载镜像 ----####
    mount /dev/cdrom /pxe/iso  >/dev/nell 2>&1
    #镜像挂载
    if [ ! -d  /pxe/iso/Packages ]; then
    echo
    echo -e "\033[41;36m   mount failed !  CD-ROM is not detected !\033[0m" 
    echo
    exit
    fi
    
    
    ####---- 设置ip和网段变量 ----####
    read -p "Please enter the IP address": IPADDR 
    mask=$(echo $IPADDR| cut -d '.' -f 1-3)
    
    ####---- 本地yum库 ----####
    mv /etc/yum.repos.d/*repo .
    
    cat > /etc/yum.repos.d/local.repo<<EOF
    [base]
    baseurl=file:///pxe/iso
    enable=1
    gpgcheck=0
    EOF
    yum clean all
    
    
    
    ####---- yum安装所有服务 ----####
    yum install dhcp tftp-server httpd syslinux net-tools -y
    mv *repo /etc/yum.repos.d/  >/dev/nell 2>&1
    rm /etc/yum.repos.d/local.repo -rf
    #恢复原来的yum库配置
    yum clean all
    
    subnet=$(ifconfig |grep $IPADDR| awk '{print $4}')
    router=$(route |grep default|awk '{print $2}')
    
    ####---- dhcp配置 ----####
    cat >/etc/dhcp/dhcpd.conf<<EOF
    subnet $mask.0  netmask $subnet {
    range dynamic-bootp $mask.10 $mask.60;
    option routers $router;
    filename "pxelinux.0";
    next-server $IPADDR;
    }
    EOF
    
    ####---- tftpd配置 ----####
    sed -i 's#/var/lib/tftpboot#/pxe/tftpboot#g' /etc/xinetd.d/tftp
    sed -i 's/disable.*$/disable = no/g' /etc/xinetd.d/tftp
    mkdir /pxe/tftpboot >/dev/nell 2>&1
    cp /usr/share/syslinux/pxelinux.0 /pxe/tftpboot/
    cp  /pxe/iso/isolinux/vmlinuz /pxe/tftpboot/
    cp  /pxe/iso/isolinux/initrd.img  /pxe/tftpboot/
    cp  /pxe/iso/isolinux/boot* /pxe/tftpboot/
    cp  /pxe/iso/isolinux/vesamenu.c32 /pxe/tftpboot/
    mkdir /pxe/tftpboot/pxelinux.cfg >/dev/nell 2>&1
    
    cat >/pxe/tftpboot/pxelinux.cfg/default<<EOF
    default vesamenu.c32
    timeout 6000
    #timeout -1 停留界面
    display boot.msg
    menu background splash.jpg
    label localhost
    menu label  ^Local Boot
    menu default
    localboot 0x80
    
    label linux
    menu label ^Install Centos 7
    kernel vmlinuz
    append initrd=initrd.img ks=http://$IPADDR/ks.cfg
    EOF
    chmod  o+rwx /pxe/tftpboot/ -R
    
    ####---- http配置 ----####
    sed -i 's#/var/www/html#/pxe#g' /etc/httpd/conf/httpd.conf
    
    ####---- ks.cfg自动脚本 ----####
    cat >/pxe/ks.cfg<<EOF
    text
    url --url http://$IPADDR/iso
    firstboot --enable
    ignoredisk --only-use=sda
    keyboard --vckeymap=us --xlayouts='us'
    lang en_US.UTF-8
    network  --bootproto=dhcp --device=eno16777736 --ipv6=auto --activate
    network  --hostname=www.to-share.net
    rootpw 123456
    #root password
    timezone Asia/Shanghai --isUtc
    bootloader --location=mbr --boot-drive=sda
    autopart --type=lvm
    clearpart --all --initlabel
    reboot
    
    #安装软件包
    %packages
    @core
    net-tools
    %end
    
    #安装结束后执行脚本
    %post --interpreter=/bin/bash
    chmod  +x  /etc/rc.local
    echo /root/echo_ip.sh >> /etc/rc.local
    cat >/root/echo_ip.sh<<Local-IP
    #!/bin/bash
    network_dir=/etc/sysconfig/network-scripts/ifcfg-eno16777736
    echo >/etc/issue
    echo "Server IP: \$(ip add |grep global |head -1|awk  '{print \$2}'|cut -d / -f 1)" >>/etc/issue
    echo >>/etc/issue
    sed -i 's#none#static#g'   \$network_dir
    echo "IPADDR=\$(ip add |grep global |head -1|awk  '{print \$2}'|cut -d / -f 1)"  >> \$network_dir
    echo "NETMASK=$subnet"  >> \$network_dir
    echo "GATEWAY=$router"  >> \$network_dir
    echo "DNS1=223.5.5.5"  >> \$network_dir
    echo "DNS2=114.114.114.114"  >> \$network_dir
    echo >>/etc/issue
    sed -i '14d' /etc/rc.local
    sed -i '14d' /etc/rc.d/rc.local
    #删除14行
    reboot
    Local-IP
    chmod +x /root/echo_ip.sh
    #/root/echo_ip.sh
    %end
    EOF
    ####---- 启动服务 ----####
    service xinetd restart >/dev/nell 2>&1
    service dhcpd restart >/dev/nell 2>&1
    service httpd restart >/dev/nell 2>&1
    service iptables stop >/dev/nell 2>&1
    systemctl stop firewalld >/dev/nell 2>&1
    setenforce 0 
    echo
    echo -e "\t\t\t\t\033[3;032m[OK]\033[0m\n"

    uefi混合思路查考下面的地址
    http://os.51cto.com/art/201402/428737.htm
    回复

    使用道具 举报

    该用户从未签到

    发表于 2016-3-14 13:18:07 | 显示全部楼层
    谢谢楼主的分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-14 18:35:04 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-14 23:56:09 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-15 03:55:44 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-15 20:56:57 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-10-24 10:52
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2016-3-16 02:18:52 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-4-13 21:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-3-16 05:03:52 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-21 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-3-16 17:04:49 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-17 08:56:01 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表