使用 PXE 開機進行自動部署

當在類似硬體上進行多次作業系統安裝時,花點精力準備作業系統的大量部署以減少實際部署所需的時間將很有幫助。這就是本章所描述的內容。目的只是讓電腦與電源及網路連接,啟動網路開機,並等到再次關閉為止。

為完成此任務,需要執行下列動作︰

設定開機與安裝伺服器

專用的機器是必要的,應當準備好機器,以便讓 PXE 開機及 ftp 或 web 伺服器提供預先載入影像。為機器配備充足的記憶體,以便在其中存放所有必要的安裝資料,這是個不錯的做法。對於預設安裝而言,您需要至少 4 GB 的記憶體。可以使用 SUSE Linux Enterprise Server 完成所有必要的任務。如需詳細資訊,請參閱第 22.2.1 節「設定開機與安裝伺服器」

準備預先載入影像

實際的安裝透過將作業系統的 Raw 影像複製到新的硬碟來完成。需要仔細準備並測試所有的功能與設定。要提供此類影像,可以使用 SUSE Linux Enterprise 作業系統之 SDK 中的 KIWI。如需有關使用 KIWI 建立影像的詳細資訊,請參閱第 17 章KIWI。如需有關預先載入影像要求的詳細資訊,請參閱第 22.2.2 節「建立預先載入影像」

建立一個用於部署的啟始系統

這是一個需要具備某些 linux 專門技術的任務。第 22.2.3 節「建立部署預先載入影像的啟始系統」 中提供了有關如何透過範例安裝完成此作業的說明。

將開機伺服器設定為自動部署

最後,必須將所有步驟整合起來。必須告知 PXE 開機啟動安裝系統,接著會從伺服器擷取預先載入的影像並將其複製到硬碟。

設定開機與安裝伺服器

安裝 SUSE Linux Enterprise Server 以後,需要以下四個步驟執行成此任務︰

若要執行此安裝類型,請按照下列步驟進行:

  1. 依照 第 14.2 節「安裝保存安裝來源的伺服器」 中的說明安裝安裝來源。選擇 HTTP 或 FTP 網路伺服器。

  2. 設定 TFTP 伺服器以存放將在後面步驟中建立的開機影像。如需詳細資訊,請參閱第 14.3.2 節「設定 TFTP 伺服器」

  3. 設定 DHCP 伺服器以向所有機器提供 IP 位址,並向目標系統顯示 TFTP 伺服器的位置。如需詳細資訊,請參閱第 14.3.1 節「設定 DHCP 伺服器」

  4. 準備安裝伺服器 PXE 開機。如需進一步詳細說明,請參閱第 14.3.3 節「使用 PXE 開機」

請注意,如果為此機器配備充足的記憶體以存放預先載入影像,則在實際安裝時將會獲得很大幫助。其次,與速度較慢的網路相比,使用 Gigabit 乙太網路將會顯著加快部署程序 (如果整個網路支援該功能)。

建立預先載入影像

使用 KIWI 建立影像的程序如第 17.4.2 節「建立影像」 中所述。但是,若要為大量部署建立有用的影像,則需要考慮多種因素︰

  • 典型的預先載入影像將採用下列類型︰

    <type primary="true" filesystem="ext3" boot="oemboot/suse-SLES11">vmx</type>
  • 在預先載入影像的設定期間,影像建立程序會多次執行。本地電腦上應配備建立影像所需的儲存庫。

  • 需要投入一些精力設定首次開機,視所需的預先載入使用狀況而定。如需有關首次開機的詳細資訊,請參閱第 20 章部署自定的預先安裝。藉由此方法,您也可以要求使用者在系統首次開機時完成初始組態設定。

  • 可在影像中設定許多其他功能,如新增更新儲存庫或在首次開機時進行更新。但是,無法在此處說明所有可能的情況,並且建立預先載入影像需要深入瞭解影像系統 KIWI 以及 SUSE Linux Enterprise Server 中使用的多項其他技術,具體視要求而定。

可從安裝伺服器上提供的 ftp 或 http 伺服器獲取要部署的實際影像。

建立部署預先載入影像的啟始系統

若要執行自動部署,必須啟動目標電腦上的啟始 linux 系統。典型安裝期間,核心與啟始 ram 檔案系統會從部分開機媒體中讀取,並由 bios 啟動。所需的功能可在 ram 檔案系統中執行,該系統與核心一起可當做啟始系統使用。

啟始系統必須提供的主要功能包括啟用硬碟的存取及建立可用的網路連線。這兩種功能都取決於您要在系統上部署的硬體。原則上,您可以從頭開始建立啟始系統,但為了減輕任務量,也可以修改機器在開機時所使用的啟始 ram 檔案系統。

下列程序提供了如何建立所需的啟始 ram 檔案系統的一個範例。有多種不同的方法可以建立此類系統,但是該方法比較簡單。

  1. 在目標系統上完成 SUSE Linux Enterprise Server 的標準安裝。

  2. 在系統上安裝套件 busybox

  3. 使用下列指令建立新的 ram 檔案系統︰

    mkinitrd -f busybox -D eth0

    請注意,eth0 代表網路電纜所連接的乙太網路設備。參數 -f busybox 會將二進位格式的多路呼叫 busybox 新增至 ram 檔案系統。完成此動作後,就可在此系統內部使用許多標準 unix 指令。

  4. 使用以下指令將新的 ram 檔案系統與核心複製到您的開機伺服器︰

    scp /boot/initrd /boot/vmlinuz pxe.example.com:

    使用本地開機伺服器的名稱或 ip 位址取代 pxe.example.com。

  5. 以使用者 root 的身份登入開機伺服器,然後建立可修改 ram 檔案系統的目錄︰

    mkdir ~/bootimage
  6. 使用指令 cd ~/bootimage 將您的工作目錄變更為該目錄。

  7. 使用以下指令解壓縮先前複製的啟始 ram 檔案系統︰

    zcat ../initrd | cpio -i
  8. 編輯檔案 run_all.sh

  9. 搜尋下列一行,將其和檔案的剩餘部分一起刪除︰

    [ "$debug" ] && echo preping 21-nfs.sh 
  10. 將下面几行新增至檔案 run_all.sh 的結尾︰

    [ "$debug" ] && echo preping 92-install.sh
    [ "$debug" ] && echo running 92-install.sh
    source boot/92-install.sh
    [ "$modules" ] && load_modules
         
  11. 使用以下內容建立新的程序檔 boot/92-install.sh

    #!/bin/bash
    if [ "$(get_param rawimage)" ]; then
      rawimage=$(get_param rawimage)
      if  [ "$(get_param rawdevice)" ]; then
        rawdevice=$(get_param rawdevice)
        echo "wget -O ${rawdevice} ${rawimage}"
        wget -O ${rawdevice} ${rawimage}
        sync
        sleep 5
        echo "DONE"
      fi
    fi
    # /bin/bash
    /bin/poweroff -f
    
  12. 如果希望在電腦關閉前獲取除錯外圍程序,請移除 /bin/bash 前面的備註符號。

  13. 使用指令 chmod 755 boot/92-install.sh 將此程序檔變更為可執行檔。

  14. 使用以下指令建立新的啟始 ram 檔案系統︰

    mkdir -p /srv/tftpboot
    find . | cpio --quiet -H newc -o | gzip -9 -n > \
    /srv/tftpboot/initrd.boot
  15. 同時將核心複製到此目錄︰

    cp ../vmlinuz /srv/tftpboot/linux.boot

啟始 ram 檔案系統正準備接納兩個新的核心指令行參數。參數 rawimage=<URL> 用於識別預先載入影像的位置。可以使用 wget 可以理解的任何 URL。參數 rawdevice=<設備> 用於識別目標機器上之硬碟的區塊設備。

開機伺服器組態

第 22.2.1 節「設定開機與安裝伺服器」 中所列的幾個不同章節中詳細介紹了開機伺服器的組態。本節中將提供包含設定系統所必需之步驟的核對清單。

  • 設定 dhcp 伺服器。安裝機器所在的子網路需要其他行︰

    filename "pxelinux.0";
    next-server 192.168.1.115;

    在此範例中,192.168.1.115 為 PXE 伺服器 pxe.example.com 的 ip 位址。

  • 設定 PXE 伺服器,如第 14.3.3 節「使用 PXE 開機」 中所述。編輯 /srv/tftpboot/pxelinux.cfg/default 時,請新增下列項目︰

    default bootinstall
    label bootinstall
      kernel linux.boot
      append initrd=initrd.boot \
      rawimage=ftp://192.168.1.115/preload/preloadimage.raw rawdevice=/dev/sda
  • 設定 ftp 伺服器並將準備好的預先載入影像複製到 /srv/ftp/preload/preloadimage.raw

使用 PXE 網路開機啟動目標系統以測試您的設定。此動作會自動將準備好的預先載入影像複製到硬碟並在完成後關閉機器。