使用 PXE+Kickstart 實現無人值守批量部署系統

来源:https://www.cnblogs.com/l-hh/archive/2019/08/17/11368796.html
-Advertisement-
Play Games

一、廢話兩句 在雲數據中心,一次幾十臺甚至幾百台伺服器上線,系統安裝將變得非常繁瑣,系統安裝好了後還會涉及很多配置,如果一臺台來安裝的話工作量非常大。(雖然有加班費,開個玩笑)為瞭解決這個問題,我們需要實現無人值守批量部署系統。 簡單看一下拓撲圖: 1. 什麼是PXE? 簡單來說:PXE主要是引導作 ...


一、廢話兩句

在雲數據中心,一次幾十臺甚至幾百台伺服器上線,系統安裝將變得非常繁瑣,系統安裝好了後還會涉及很多配置,如果一臺台來安裝的話工作量非常大。(雖然有加班費,開個玩笑)
為瞭解決這個問題,我們需要實現無人值守批量部署系統。

 簡單看一下拓撲圖:

1. 什麼是PXE?

 簡單來說:PXE主要是引導作用,具體的詳細信息這裡就不多說了,詳情百度即可。

PXE引導流程:

 

2. 什麼是Kickstart?

簡單兩句就是:Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種參數;
比如:我們安裝系統的時候需要分區、設置時區、設置root密碼、安裝後執行的腳本等等,這些操作都記錄下來並生成一個名為ks.cfg的文件。

PXE+Kickstart 無人值守安裝操作系統完整過程:

 

二、環境準備

操作系統:CentOS 7.4 (最小化安裝)
實驗平臺:VMware Workstation 14
網路模式:NAT模式
伺服器IP地址:192.168.115.21
防火牆:關閉
SElinux=Disable

三、準備工作

如果當初已經是圖形化安裝了,則不需要該步驟。
生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依賴於X Windows,所以我們需要安裝X Windows 和Desktop 並重啟系統,操作如下:

i. 掛載光碟:

[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

 

ii. 配置本地yum源:

[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
------------------------------------------------------
[development]
# 名稱必須為 “development”,否則到後面kickstart配置會出現軟體包選擇出現沒有軟體包信息
name=redhat
baseurl=file:///mnt/cdrom
gpgcheck=0

iii. 安裝圖形化:

[root@localhost ~]# yum groupinstall "Server with GUI" -y
[root@localhost ~]# systemctl set-default graphical.target  // 設置預設啟動到圖形界面
[root@localhost ~]# reboot      // 重啟機器

四、安裝需要服務

1. 配置DHCP

i. 安裝DHCP服務

[root@localhost ~]# yum install dhcp -y

ii. 修改/etc/dhcp/dhcpd.conf 配置文件

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
------------------------- 配置如下 -------------------------------
subnet 192.168.115.0 netmask 255.255.255.0 {    //所在網段
range 192.168.115.100 192.168.115.199;          //分配IP地址範圍
option subnet-mask 255.255.255.0;              //給客戶端設置子網掩碼(netmask)
default-lease-time 21600;           //設置預設的IP租期時間
max-lease-time 43200;               //設置最大的IP租期時間
next-server 192.168.115.21;         //tfp服務端IP地址
filename "/pxelinux.0";             //網路引導程式
}

iii. 啟動DHCP服務

[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd

iv. 測試DHCP是否成功

新建一個虛擬機進行測試,如下圖可以看出已經成功獲取IP地址和其他信息了。

2. 配置TFP

 i. 安裝TFP、Xinetd

[root@localhost ~]# yum install tftp-server xinetd -y

ii. 修改配置文件

[root@localhost ~]# vim /etc/xinetd.d/tftp
-------------- 省略配置信息,看下圖 -------------
將 disable 設置為 no

iii. 啟動服務

因為 tftp 服務是掛載在超級進程 xinetd 下的,所以通過啟動 xinetd 來啟動 tftp 服務。

[root@localhost ~]# systemctl start xinetd
[root@localhost ~]# systemctl enable xinetd

iv. 檢查服務是否啟動成功

[root@localhost ~]# netstat -ntulp | grep 69
udp       0      0 0.0.0.0:69        0.0.0.0:*        2817/xinetd

3. 安裝Syslinux

i. 安裝syslinux只是為了要 pxelinux.0 引導載入程式,沒有別的用意。

[root@localhost ~]# yum install selinux -y

ii. 複製pxelinux.0 文件至/var/lib/tftpboot/ 文件夾中

[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

iii. 拷貝光碟里的配置文件

[root@localhost ~]# cp /mnt/cdrom/isolinux/* /var/lib/tftpboot/

iv. 驗證改步驟是否成功

將新建的測試虛擬機重啟,就可以看到該界面了。

4. 配置HTTP

i. 安裝HTTP

系統的安裝方式可以選擇HTTP、FTP、 NFS,我們這裡介紹HTTP方式的安裝,其他兩種方式的安裝,大家可以自行百度。

[root@localhost ~]# yum install httpd  -y

ii. 啟動HTTP

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

iii. 複製光碟全部內容至http 的根目錄/var/www/html/pub 下

[root@localhost ~]# mkdir /var/www/html/pub
[root@localhost ~]# cp -r /mnt/cdrom/ /var/www/html/pub

iv. 測試改步驟是否成功

5. 配置kickstart

i. 安裝kickstart

[root@localhost ~]# yum install system-config-kickstart -y

ii. 在桌面環境下配置Kickstart,生成ks.cfg 文件

[root@localhost ~]# system-config-kickstart

A. 設置語言,鍵盤,時區,Root密碼,安裝完畢後重啟等。

B. 設置安裝方式,這篇文章介紹的是HTTP方式的安裝。

C. 安裝MBR

D. 設置分區

E. 配置網路

F. 認證配置

G. SELinux 和防火牆配置

H. 圖形環境配置

I. 軟體包安裝選擇

註:如果你的軟體列表沒有信息,解決該問題看後面部分,如下圖:

J. 安裝後腳本

K. 保存導出配置文件

iii. 複製到HTTP下的ks目錄

[root@localhost ~]# mkdir /var/www/html/ks
[root@localhost ~]# cp ks.cfg  /var/www/html/ks/

iv. 驗證改步驟

6. 修改default

i. 創建配置文件夾

[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# mkdir pxelinux.cfg

ii. 複製配置文件

[root@localhost ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
----------------------- 修改配置如下 --------------------------
label linux
  menu label ^Install PXE+Kickstart_RedHat7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0

參數解釋:

append initrd=initrd.img ks     // 存放ks配置文件的伺服器地址和路徑,通過該路徑找到對應的ks.cfg文件來引導系統安裝
ksdevice=eth0                   // 指定該網卡進行ks的數據交互(可忽略)
net.ifnames=0 biosdevname=0     // 修改內核參數,讓網卡命名變為ethXX

iii. 開機驗證(需要手動選擇安裝)

iv. 全自動化安裝,無需手動選擇安裝

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
--------------------------------------------------------------
default linux            # 在配置文件第一行找到default,加上label的名稱即可。
label linux
  menu label ^Install PXE+Kickstart_RedHat7
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0

v. 安裝好後驗證腳本信息

到此就完成了無人值守批量部署系統,收工下班。

五、你可能會出現的問題

1. 配置kickstart時,軟體包選擇出現沒有軟體包信息,如下圖:

解決辦法:

檢查yum源配置是否為: [development] ,配置好後,重新打開kickstart配置視窗即可。如圖:

2. 配置好後,進行自動化部署的時候出現如下報錯信息,如下圖:

"/sbin/dmsquash-live-root: line 273: write error: No space left on device"

解決辦法:

檢查虛擬機或伺服器的記憶體大小,RedHat7.3以上的版本進行Kickstart安裝需要分配至少2GB的記憶體。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 開源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 如果覺得寫的還行,請點個 star 支持一下吧 歡迎前來交流探討: 企鵝群568015492 目錄 ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 開源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 如果覺得寫的還行,請點個 star 支持一下吧 歡迎前來交流探討: 企鵝群568015492 目錄 ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 開源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 如果覺得寫的還行,請點個 star 支持一下吧 歡迎前來交流探討: 企鵝群568015492 目錄 ...
  • 方法一: 常規的WPF操作: 後臺代碼: 方法二: 後臺直接寫: ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器 3. 使用工具:Source Insight 3.5, Visio 1. 介紹 ,由ARM定義的電源管理介面規範,通常由Firmware來實現,而Linux系統可以通過 指令來進入不同的 ,進而調用對應 ...
  • 一.存儲基礎知識 從工作原理區分: 機械 HDD 固態 SSD SSD的優勢: 從磁碟尺寸區分: 3.5 2.5 1.8 從插拔方式區分: 熱插拔 非熱插拔 從硬碟主要介面區分: IDE —— SATA I/II/II 個人電腦 SCSI —— SAS 伺服器 FC PCIE 從存儲連接方式區分: ...
  • 1. 查詢k8s集群部署pod的基本情況 如下圖,我們可知容器coredns和dnsutils都部署成功,但是由於功能變數名稱解析的問題,導致coredns和dnsutils的容器不斷重啟(原因heath檢查,無法請求成功,被kubelet重啟了pod) 命令如下: root >> kubectl get ...
  • vim多視窗操作 垂直方式打開多個視窗 vim filename1 filename2 -O :vsp filename 或者 :vs filename 視窗切換 ctrl + ww vim文件切換 在多個文件之間切換 ctrl + i #切換到下一個文件或同一個文件中的下一個索引 ctrl + o ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...