1. <th id="orwrz"></th>
        <tbody id="orwrz"><pre id="orwrz"></pre></tbody>
      2. <rp id="orwrz"><object id="orwrz"></object></rp>
        首頁 系統自動部署PXE和Cobbler教程利用 PXE 實現自動化系統部署

        實現TFTP服務

        利用cobbler實現自動化安裝

        運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
        領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

        利用 PXE 實現自動化系統部署

        PXE介紹

        PXE:Preboot Excution Environment,預啟動執行環境,是由Intel公司研發,基于Client/Server的網絡模式,支持遠程主機通過網絡從遠端服務器下載映像,并由此支持通過網絡啟動操作系統,可以引導和安裝Windows,linux等多種操作系統

        PXE啟動工作原理
        利用 PXE 實現自動化系統部署插圖

        利用PXE實現自動化安裝流程

        利用 PXE 實現自動化系統部署插圖1

        1. Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的所在TFTP服務器地址信息一并傳送給Client
        2. Client向TFTP服務器發送獲取pxelinux.0請求消息,TFTP服務器接收到消息之后,向Client發送pxelinux.0大小信息,試探Client是否滿意,當TFTP收到Client發回的同意大小信息之后,正式向Client發送pxelinux.0
        3. Client執行接收到的pxelinux.0文件,并利用此文件啟動
        4. Client向TFTP 服務器發送請求針對本機的配置信息文件(在TFTP 服務器的pxelinux.cfg目錄下),TFTP服務器將啟動菜單配置文件發回Client,繼而Client根據啟動菜單配置文件執行后續操作
        5. Client根據啟動菜單配置文件里的信息,向TFTP發送Linux內核和initrd文件請求信息,TFTP接收到消息之后將內核和initrd文件發送給Client
        6. Client向TFTP發送根文件請求信息,TFTP接收到消息之后返回Linux根文件系統
        7. Client啟動Linux內核,加載相關的內核參數
        8. Client通過內核參數下載kickstart文件,并根據kickstart文件里的安裝信息,下載安裝源文件進行自動化安裝

        在CentOS 6 上實現PXE自動化安裝CentOS

        安裝前準備

        關閉防火墻和SELINUX,DHCP服務器靜態IP

        網絡要求:關閉Vmware軟件中的DHCP服務

        安裝相關軟件包并啟動
        [root@centos6 ~]#yum install dhcp httpd  tftp-server  syslinux
        [root@centos6 ~]#chkconfig tftp on
        [root@centos6 ~]#chkconfig httpd on
        [root@centos6 ~]#chkconfig dhcpd on
        [root@centos6 ~]#service httpd start
        [root@centos6 ~]#service xneted start?
        準備yum 源和相關目錄
        [root@centos6 ~]#mkdir -pv /var/www/html/centos/6/os/x86_64
        [root@centos6 ~]#mount /dev/sr0 /var/www/html/centos/6/os/x86_64
        準備kickstart文件
        [root@centos6 ~]#mkdir /var/www/html/ks/
        [root@centos6 ~]#vim  /var/www/html/centos/ks/centos6.cfg
        [root@centos6 ~]#grep -vE '^#|^' /var/www/html/centos/ks/centos6.cfg
        install
        text
        reboot
        url --url=http://10.0.0.100/centos/6/os/x86_64/
        lang en_US.UTF-8
        keyboard us
        network --onboot yes --device eth0 --bootproto dhcp  --noipv6
        rootpw  --iscrypted6b6C5mM/BwOMBoK8HcYZFrHoNlOL0iDsxOTRhwnWJ3yfFmf7mRJBOxEqGoI56UMrT8J7qlrGwX7tSnOf7wKxYR2hAvAREILDgOgsFe1
        firewall --disabled
        authconfig --enableshadow --passalgo=sha512
        selinux --disabled
        timezone Asia/Shanghai
        bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
        zerombr
        clearpart --all --initlabel
        part /boot --fstype=ext4 --size=1024
        part / --fstype=ext4 --size=50000
        part /data --fstype=ext4 --size=30000
        part swap --size=2048
        %packages
        @core
        @server-policy
        @workstation-policy
        autofs
        vim-enhanced
        %end
        %post
        useradd wang 
        echo magedu | passwd --stdin wang &> /dev/null
        mkdir  /etc/yum.repos.d/bak
        mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
        cat > /etc/yum.repos.d/base.repo <<EOF
        [base]
        name=base
        baseurl=file:///misc/cd
        gpgcheck=0
        EOF
        %end
        配置DHCP服務
        [root@centos6 ~]#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
        [root@centos6 ~]#vim /etc/dhcp/dhcpd.conf
        [root@centos6 ~]#cat /etc/dhcp/dhcpd.conf
        option domain-name "example.com";
        option domain-name-servers 10.0.0.1;
        subnet 10.0.0.0 netmask 255.255.255.0 {
            range 10.0.0.1 10.0.0.200;
            option routers 10.0.0.1;
            filename "pxelinux.0";
            next-server 10.0.0.100;
        }
        [root@centos6 ~]#service dhcpd start
        準備PXE啟動相關文件
        [root@centos6 ~]#mkdir /var/lib/tftpboot/pxelinux.cfg/
        [root@centos6 ~]#cp  /usr/share/syslinux/pxelinux.0   /var/lib/tftpboot/
        [root@centos6 ~]#cd  /misc/cd/images/pxeboot/
        [root@centos6 ~]#cp vmlinuz initrd.img /var/lib/tftpboot
        [root@centos6 ~]#Cd /misc/cd/isolinux/
        [root@centos6 ~]#cp boot.msg vesamenu.c32 splash.jpg /var/lib/tftpboot
        [root@centos6 ~]#cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
        [root@centos6 ~]#tree /var/lib/tftpboot/
        /var/lib/tftpboot/
        ├── boot.msg
        ├── initrd.img
        ├── pxelinux.0
        ├── pxelinux.cfg
        │     └── default
        ├── splash.jpg
        ├── vesamenu.c32
        └── vmlinuz
        
        1 directory, 7 files
        準備啟動菜單文件
        [root@centos6 ~]#vim /var/lib/tftpboot/pxelinux.cfg/default 
        default vesamenu.c32 #指定菜單風格
        #prompt 1
        timeout 600?
        display boot.msg?
        menu background splash.jpg
        menu title Welcome to wang CentOS 6
        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 auto
          menu label ^Automatic Install Centos6 
          kernel vmlinuz
          append initrd=initrd.img ks=http://10.0.0.100/ks/centos6.cfg
        label manual
          menu label ^Manual Install Centos
          kernel vmlinuz
          append initrd=initrd.img inst.repo=http://10.0.0.100/centos/6/isos/x86_64/
        label local
          menu default 
          menu label Boot from ^local drive
          localboot 0xffff
        測試客戶端基于PXE實現自動安裝

        新準備一臺主機,設置網卡引導,可看到看啟動菜單,并實現自動安裝

        在CentOS7 上實現PXE自動化安裝CentOS

        安裝前準備

        關閉防火墻和SELINUX,DHCP服務器靜態IP

        網絡要求:關閉Vmware軟件中的DHCP服務

        安裝相關軟件包并啟動服務
        [root@centos7 ~]#yum -y install httpd tftp-server dhcp  syslinux  system-config-kickstart
        [root@centos7 ~]#systemctl enable --now httpd tftp dhcpd

        注意:由于dhcp還沒有配置,此時還無法立即啟動

        準備yum源和相關目錄
        [root@centos7 ~]#mkdir  -pv /var/www/html/centos/7/os/x86_64
        [root@centos7 ~]#mount /dev/sr0  /var/www/html/centos/7/os/x86_64
        準備kickstart文件
        [root@centos7 ~]#mkdir /var/www/html/ks/
        [root@centos7 ~]#vim  /var/www/html/ks/centos7.cfg  
        [root@centos7 ~]#grep -vE '^#|^' /var/www/html/ks/centos7.cfg 
        install
        xconfig  --startxonboot
        keyboard --vckeymap=us --xlayouts='us'
        rootpw --iscrypted1bpNEv8S5lK.CjNkf.YCpFPHskSNiN0
        url --url="http://10.0.0.100/centos/7/os/x86_64"
        lang en_US
        auth  --useshadow  --passalgo=sha512
        text
        firstboot --enable
        selinux --disabled
        skipx
        services --disabled="chronyd"
        ignoredisk --only-use=sda
        firewall --disabled
        network  --bootproto=dhcp --device=ens33
        reboot
        timezone Asia/Shanghai --nontp
        bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
        zerombr
        clearpart --all --initlabel
        part swap --fstype="swap" --ondisk=sda --size=3072
        part / --fstype="xfs" --ondisk=sda --size=51200
        part /boot --fstype="xfs" --ondisk=sda --size=1024
        part /data --fstype="xfs" --ondisk=sda --size=30720
        %post
        useradd wang
        %end
        %packages
        @core
        %end
        配置DHCP服務
        [root@centos7 ~]#vim /etc/dhcp/dhcpd.conf
        option domain-name "example.com";
        default-lease-time 600;
        max-lease-time 7200;
        subnet 10.0.0.0 netmask 255.255.255.0 {
            range 10.0.0.1 10.0.0.200;
            option routers 10.0.0.1;
            next-server 10.0.0.100;
            filename "pxelinux.0";
        }
        [root@centos7 ~]#systemctl  start dhcpd
        準備PXE啟動相關文件
        [root@centos7 ~]#mkdir /var/lib/tftpboot/pxelinux.cfg/
        [root@centos7 ~]#cp  /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/  
        [root@centos7 ~]#cp  /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
        [root@centos7 ~]#cp  /misc/cd/isolinux/isolinux.cfg   /var/lib/tftpboot/pxelinux.cfg/default

        最終目錄文件列表如下:
        /var/lib/tftpboot/
        ├── initrd.img
        ├── menu.c32
        ├── pxelinux.0
        ├── pxelinux.cfg
        │ └── default
        └── vmlinuz

        準備啟動菜單
        [root@centos7 ~]#Vim /var/lib/tftpboot/pxelinux.cfg/default
        default menu.c32
        timeout 600
        menu title PXE INSTALL MENU
        label auto
          menu label ^Auto Install CentOS 7 
          kernel vmlinuz
          append initrd=initrd.img ks=http://10.0.0.100/ks/centos7.cfg 
        label manual
          menu label ^Manual Install CentOS 7 
          kernel vmlinuz
          append initrd=initrd.img inst.repo=http://10.0.0.100/centos/7/os/x86_64
        label local   
            menu default 
            menu label ^Boot from local drive
            localboot 0xffff
        測試客戶端基于PXE實現自動安裝

        新準備一臺主機,設置網卡引導,可看到看啟動菜單,并實現自動安裝

        在CentOS 8 上實現PXE自動化安裝CentOS 6,7,8

        安裝前準備

        關閉防火墻和SELINUX,DHCP服務器靜態IP

        網絡要求:關閉Vmware軟件中的DHCP服務,基于NAT模式

        安裝相關軟件包并啟動
        [root@centos8 ~]#dnf -y install dhcp-server tftp-server httpd syslinux-nonlinux 
        [root@centos8 ~]#systemctl enable --now httpd tftp dhcpd 
        準備yum 源和相關目錄
        [root@centos8 ~]#mkdir  -pv /var/www/html/centos/{6,7,8}/os/x86_64/ 
        [root@centos8 ~]#mount /dev/sr0 /var/www/html/centos/6/os/x86_64/
        [root@centos8 ~]#mount /dev/sr1 /var/www/html/centos/7/os/x86_64/
        [root@centos8 ~]#mount /dev/sr2 /var/www/html/centos/8/os/x86_64/
        準備kickstart文件
        [root@centos8 ~]#mkdir /var/www/html/ks/
        [root@centos8 ~]#vim /var/www/html/ks/centos6.cfg  #內容參看6.3.4
        [root@centos8 ~]#vim /var/www/html/ks/centos7.cfg  #內容參看6.4.4
        [root@centos8 ~]#vim /var/www/html/ks/centos8.cfg
        [root@centos8 ~]#grep -Ev " (#|)" /var/www/html/ks/centos8.cfg
        ignoredisk --only-use=sda
        zerombr
        text
        reboot
        clearpart --all --initlabel
        selinux --disabled
        firewall --disabled
        url --url=http://10.0.0.100/centos/8/os/x86_64/
        keyboard --vckeymap=us --xlayouts='us'
        lang en_US.UTF-8
        network  --bootproto=dhcp --device=ens160 --ipv6=auto --activate
        network  --hostname=centos8.magedu.com
        rootpw --iscrypted 6j9YhzDUnQVnxaAk8qv7rkMcPAEbV5yvwsP666DXWYadd3jYjkA9fpxAo9qYotjGGBUclCGoP1TRvgHBpqgc5n0RypMsPTQnVDcpO01
        firstboot --enable
        skipx
        services --disabled="chronyd"
        timezone Asia/Shanghai --isUtc --nontp
        user --name=wang --password=6oUfb/02CWfLb5l8fsgEZeR7c7DpqfpmFDH6huSmDbW1XQNR4qKl2EPns.gOXqlnAIgv9pTogtFVaDtEpMOC.SWXKYqxfVtd9MCwxb1 --iscrypted --gecos="wang"
        part / --fstype="xfs" --ondisk=sda --size=102400
        part /data --fstype="xfs" --ondisk=sda --size=51200
        part swap --fstype="swap" --ondisk=sda --size=2048
        part /boot --fstype="ext4" --ondisk=sda --size=1024
        %packages
        @^minimal-environment
        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
        配置DHCP服務
        [root@centos8 ~]#cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
        [root@centos8 ~]#vim /etc/dhcp/dhcpd.conf 
        option domain-name "example.com";
        option domain-name-servers 180.76.76.76,223.6.6.6;
        default-lease-time 600;
        max-lease-time 7200;
        log-facility local7;
        subnet 10.0.0.0 netmask 255.255.255.0 {
          range 10.0.0.1 10.0.0.200;
          option routers 10.0.0.1;
          next-server 10.0.0.100;
          filename "pxelinux.0";
        }
        
        [root@centos8 ~]#systemctl start dhcpd 
        準備PXE啟動相關文件
        [root@centos8 ~]#mkdir /var/lib/tftpboot/centos{6,7,8}
        #準備CentOS6,7,8各自的內核相關文件
        [root@centos8 ~]#cp /var/www/html/centos/6/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6
        [root@centos8 ~]#cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
        [root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8
        [root@centos8 ~]#cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
        
        #以下三個文件是CentOS8安裝所必須文件,CentOS6,7則不需要
        [root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
        
        #生成安裝菜單文件
        [root@centos8 ~]#mkdir /var/lib/tftpboot/pxelinux.cfg/
        [root@centos8 ~]#cp /var/www/html/centos/8/isos/x86_64/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default
        
        #最終目錄結構如下
        [root@centos8 ~]#tree /var/lib/tftpboot
        .
        ├── centos6
        │   ├── initrd.img
        │   └── vmlinuz
        ├── centos7
        │   ├── initrd.img
        │   └── vmlinuz
        ├── centos8
        │   ├── initrd.img
        │   └── vmlinuz
        ├── ldlinux.c32
        ├── libcom32.c32
        ├── libutil.c32
        ├── menu.c32
        ├── pxelinux.0
        └── pxelinux.cfg
            └── default
        
        4 directories, 12 files
        
        準備啟動菜單文件
        [root@centos8 ~]#vim  /var/lib/tftpboot/pxelinux.cfg/default 
        default menu.c32
        timeout 600
        menu title Install CentOS  Linux 
        
        label linux8
          menu label Auto Install CentOS Linux ^8
          kernel centos8/vmlinuz
          append initrd=centos8/initrd.img ks=http://10.0.0.100/ks/centos8.cfg
        
        label linux7
          menu label Auto Install CentOS Linux ^7 
          kernel centos7/vmlinuz
          append initrd=centos7/initrd.img ks=http://10.0.0.100/ks/centos7.cfg
        
        label linux6
          menu label Auto Install CentOS Linux ^6 
          kernel centos6/vmlinuz
          append initrd=centos6/initrd.img ks=http://10.0.0.100/ks/centos6.cfg
        
        label manual
          menu label  ^Manual  Install CentOS Linux 8.0 
          kernel vmlinuz
          append initrd=initrd.img inst.repo=http://10.0.0.100/centos/8/os/x86_64/
        
        label rescue
         menu label ^Rescue a CentOS Linux system 8
         kernel centos8/vmlinuz
         append initrd=centos8/initrd.img inst.repo=http://10.0.0.100/centos/8/os/x86_64/  rescue 
        
        label local
          menu default
          menu label Boot from ^local drive
          localboot 0xffff
        測試客戶端基于PXE實現自動安裝

        新準備一臺主機,設置網卡引導,可看到看啟動菜單,并實現自動安裝

        注意:VMware workstation 對于不同的CentOS 版本,生成的虛擬機的硬件并不兼容
        利用 PXE 實現自動化系統部署插圖2
        利用 PXE 實現自動化系統部署插圖3

        利用 PXE 實現自動化系統部署插圖4

        利用 PXE 實現自動化系統部署插圖5

        利用 PXE 實現自動化系統部署插圖6

        利用 PXE 實現自動化系統部署插圖7

        利用 PXE 實現自動化系統部署插圖8

        本文鏈接:http://www.abandonstatusquo.com/36139.html

        實現TFTP服務

        利用cobbler實現自動化安裝

        網友評論comments

        發表評論

        您的電子郵箱地址不會被公開。

        暫無評論

        Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
        掃二維碼
        掃二維碼
        返回頂部
        十分钟免费观看视频高清下载