由於最近在做幾個Ceph項目,基本都是50個節點起,那我們在項目中經常使用PXE技術來實現系統自動化安裝,提高效率,可能有會說PXE技術太老了沒什么好了解,但我覺得的很實用,尤其在項目型工程中,通過PXE技術安裝系統,SaltStack 工具批量修改配置。因此今天實驗就是介紹在 SLES15SP1 虛擬機環境下,部署PXE遠程安裝服務,並采用AutoYast工具,實現在另外一台虛擬機中自動化安裝SLES15SP1系統。
實驗環境
本次環境依舊是在win10 + VMware workstation來部署虛擬機,首先部署一台PXE服務器,安裝DHCP和TFTP服務,另外我們還有一台SLES系統倉庫。然后通過PXE技術自動化安裝SLES15SP1系統。
環境搭建
一、PXE 服務器環境搭建和系統安裝
參考這2篇文章:
(1)SUSE Storage6 環境搭建詳細步驟 - Win10 + VMware WorkStation
(2)SUSE Linux Enterprise 15 SP1 系統安裝
- PXE虛擬機:30GB 系統分區設置,系統分區建議按如下分區表建立
分區名 |
設備文件名 |
分區容量 |
文件系統 |
/boot |
/dev/sda1 |
1 GB |
XFS |
vg00 |
/dev/sda2 |
29 GB |
-- |
/ |
/dev/vg00/lvroot |
28 GB |
XFS |
swap |
/dev/vg00/lvswap |
1 GB |
Swap |
- PXE客戶端:300GB系統分區,模擬物理環境
分區名 |
設備文件名 |
分區容量 |
文件系統 |
/boot |
/dev/sda1 |
1 GB |
XFS |
vg00 |
/dev/sda2 |
200 GB |
-- |
/ |
/dev/vg00/lvroot |
184 GB |
XFS |
swap |
/dev/vg00/lvswap |
16 GB |
Swap |
注意:300GB磁盤空間,我們只使用200GB,不使用全部磁盤空間主要因為 PXE 環境下自動分區不允許多出 1 字節,盡量采用小於300GB空間大小來分區,不夠可以通過LVM在線擴容。
二、SLES15 PXE 部署
1、配置DHCP服務
(1)DHCP安裝
# zypper -n in dhcp-server
(2)配置dhcp服務
注意:按照自己服務器地址網段配置
# vim /etc/dhcpd.conf option domain-name ""; option routers 172.200.50.1; default-lease-time 14400; ddns-update-style none; ########### 下面是TFTP服務器地址和啟動文件##################### next-server 172.200.50.49; filename "pxelinux.0"; subnet 172.200.50.0 netmask 255.255.255.0 { range 172.200.50.200 172.200.50.210; default-lease-time 14400; max-lease-time 172800; }
(3)修改支持dhcp服務的網絡接口,將配置文件內的參數修改成真正提供服務的端口:
# vim /etc/sysconfig/dhcpd DHCPD_INTERFACE="eth0"
(4)啟動服務
# systemctl enable dhcpd.service
# systemctl start dhcpd.service
# systemctl status dhcpd.service
2、apache 安裝
(1)安裝
# zypper -n in apache2
(2)配置
# vim /etc/apache2/default-server.conf DocumentRoot "/srv/www/htdocs" <Directory "/srv/www/htdocs"> .... Options Indexes FollowSymLinks .... </Directory>
(3)創建倉庫
# mkdir /srv/www/htdocs/repo/SUSE/Products/SLES15-SP1-Installer-Pools -pv # mount SLE-15-SP1-Installer-DVD-x86_64-GM-DVD1.iso \
/srv/www/htdocs/repo/SUSE/Products/SLES15-SP1-Installer-Pools -r
(4)啟動服務
# systemctl start apache2
# systemctl enable apache2
(5)訪問apache2
http://172.200.50.49/repo/SUSE
3、生產 autoyast.xml 文件
(1)首先,我們選擇一台 300GB 虛擬機,手動方式部署 SLES15SP1
通過手動安裝方式,通過命令自動會產生autoyast.xml文件,然后我們在該文件之上修改。
(2)添加倉庫
## Pool zypper ar http://172.200.50.19/repo/SUSE/Products/SLE-Product-SLES/15-SP1/x86_64/product/ \
SLE-Product-SLES15-SP1-Pool zypper ar http://172.200.50.19/repo/SUSE/Products/SLE-Module-Basesystem/15-SP1/x86_64/product/ \
SLE-Module-Basesystem-SLES15-SP1-Pool zypper ar http://172.200.50.19/repo/SUSE/Products/SLE-Module-Server-Applications/15-SP1/x86_64/product/ \
SLE-Module-Server-Applications-SLES15-SP1-Pool zypper ar http://172.200.50.19/repo/SUSE/Products/SLE-Module-Legacy/15-SP1/x86_64/product/ \
SLE-Module-Legacy-SLES15-SP1-Pool
(3)生成autoyast.xml文件
# zypper in autoyast2 autoyast2-installation # yast clone_system
- 自動生成 /root/autoyast.xml 文件
(4)編輯該配置文件
- 增加倉庫文件
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> <add-on> <add_on_products config:type="list"> <listentry> <media_url><![CDATA[http://172.200.50.19/repo/SUSE/Products/SLE-Module-Basesystem/15-SP1/x86_64/product/]]></media_url> <product>SLE-Module-Basesystem-SLES15-SP1-Pool</product> <product_dir>/</product_dir> </listentry> </add_on_products> </add-on>
- 在</bootloader>后<keyboard>前加入<general>,如果缺少<general>,PXE在磁盤分區后需要人工確認。
<bootloader> <global> ....... <xen_kernel_append>vga=gfx-1024x768x16 crashkernel=189M\<4G</xen_kernel_append> <general> <mode> <confirm config:type="boolean">false</confirm> </mode> </general> ......... </global> <loader_type>grub2</loader_type> </bootloader>
- 刪除后autoyast2 autoyast2-installation,后續PXE安裝的系統無需該安裝包
<software> <image/> <packages config:type="list"> ....... <package>autoyast2-installation</package> <package>autoyast2</package> ....... </packages>
- 格式化分區,都修改為true
<initialize config:type="boolean">true</initialize>
- 修改完配置文件后復制到PXE服務器上
4、配置 TFTP
(1)首先安裝tftp服務
# zypper -n in tftp tftpboot-installation-SLE-15-SP1-x86_64 tftpboot-installation-common # systemctl enable tftp.socket # systemctl restart tftp.socket # systemctl restart tftp.service
(2)配置TFTP目錄,目錄結構如下:
mkdir /srv/tftpboot mkdir /srv/tftpboot/{config,pxelinux.cfg} cp /root/autoinst.xml /srv/tftpboot/config/sles15sp1_300G.xml cp /usr/share/syslinux/pxelinux.0 /srv/tftpboot/ cp /srv/www/htdocs/repo/SUSE/Products/SLES15-SP1-Installer-Pools/boot/x86_64/loader/isolinux.cfg \ /srv/tftpboot/pxelinux.cfg/default chmod 644 /srv/tftpboot/pxelinux.cfg/default cp /srv/www/htdocs/repo/SUSE/Products/SLES15-SP1-Installer-Pools/boot/x86_64/loader/message \ /srv/tftpboot/ chmod 644 /srv/tftpboot/message cp /srv/www/htdocs/repo/SUSE/Products/SLES15-SP1-Installer-Pools/boot/x86_64/loader/initrd \ /srv/tftpboot/ cp /srv/www/htdocs/repo/SUSE/Products/SLES15-SP1-Installer-Pools/boot/x86_64/loader/linux \ /srv/tftpboot/
(3)目錄架構如下
# tree /srv/tftpboot/ /srv/tftpboot/ |-- config ---- 注釋 A | `-- sles11sp3.xml |-- message ---- 注釋 B |-- pxelinux.0 ---- 注釋 C |-- pxelinux.cfg | `-- default ---- 注釋 D |-- initrd ---- 注釋 E |-- linux
- 注釋A:config目錄里面存放的是在網絡自動部署中,操作系統默認配置的定義文件,也就是autoyast.xml文件。
- 注釋B:這個文件來源於系統安裝光盤中,用於客戶端在PXE網絡啟動后,在客戶端所看到的提示信息。一般寫法可以通過操作系統安裝光盤中/boot/x86_64/loader/message獲取並且修改。
- 注釋C:這個文件來源自系統本身,位置/usr/share/syslinux/pxelinux.0。此文件由syslinux-xxx-xxx.rpm提供。
- 注釋D:這個文件來源系統安裝光盤中:/boot/x86_64/loader/isolinux.cfg
- 注釋E:initrd、linux兩個文件都同樣來源自系統安裝光盤中:/boot/x86_64/loader/
(4)針對message和 default文件內容簡單,介紹一下。確定要獲得哪個內核和根文件系統的鏡像
# vim /srv/tftpboot/message harddisk - Boot from Hard Disk (this is default) linux - Installation sles15_300g - Installation upgrade - Upgrade rescue - Rescue System systemboot - Boot Linux System mediachk - Check Installation Media memtest - Memory Test
如上:在客戶端會出現上面的提示信息。而真正的控制文件在default文件里面。
# vim /srv/tftpboot/pxelinux.cfg/default default harddisk # hard disk label harddisk localboot 0x80 # install label sles15_300g kernel linux append initrd=initrd install=http://172.200.50.49/repo/SUSE/Products/SLES15-SP1-Installer-Pools/ \
autoyast=http://172.200.50.49/repo/sles15sp1_30G.xml splash=silent showopts textmode=1 #ui gfxboot bootlogo message <== 注釋掉 implicit 0 display message prompt 1 timeout 300
三、部署PXE客戶機操作
1、虛擬機具體配置
2、開啟虛擬機,進入BIOS
3、選擇Boot菜單,網絡啟動作為第一選項
4、輸入 sle15_300g ,開始安裝系統
5、這樣就順利的完成了安裝