SLES15SP1 AutoYast - PXE 技術


 由於最近在做幾個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\&lt;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、這樣就順利的完成了安裝

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM