Cobbler實現自動化安裝(上)--原理篇

来源:https://www.cnblogs.com/walk1314/archive/2018/09/20/9681387.html
-Advertisement-
Play Games

瞭解Cobbler之前,我們需要先對PXE及KickStart有一定的認識。 PXE PXE(Pre-bootExecution Environment),預啟動執行環境,通過網路介面啟動電腦,支持Client通過網路從Server下載映像,並由此通過網路啟動操作系統;在啟動過程中,Client要 ...


  瞭解Cobbler之前,我們需要先對PXE及KickStart有一定的認識。

PXE

  PXE(Pre-bootExecution Environment),預啟動執行環境,通過網路介面啟動電腦,支持Client通過網路從Server下載映像,並由此通過網路啟動操作系統;在啟動過程中,Client要求Server分配IP地址,再用TFTP下載一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成Client基本的軟體設置並安裝操作系統。
  要達成PXE有兩個必須的條件:
  (1)Client的網卡必須要支持PXE功能,並且開機時選擇從網卡啟動;
  (2)完整的PXE Server必須要提供含有DHCP、TFTP服務,還要加上NFS/FTP/HTTP(選擇一樣即可)等提供安裝文件(安裝鏡像的解壓文件)。

KickStart

   KickStart 是一種無人值守的安裝方式,它的工作原理是在安裝過程中記錄人工干預填寫的各種參數,並生成一個名為ks.cfg的文件。我們可以簡單理解為一個自動安裝應答配置管理程式。通過讀取這個配置文件,系統知道怎麼去分區,要安裝什麼包,配什麼IP,優化什麼內核參數等等。其主要組成部分包括:

  • KickStart安裝選項,包含語言的選擇,防火牆,密碼,網路,分區的設置等;
  • %Pre部分,安裝前解析的腳本,通常用來生成特殊的ks配置,比如由一段程式決定磁碟分區等;
  • %Package部分,安裝包的選擇,可以是@core這樣的group形式,也可以是vim-*這樣的包形式;
  • %Post部分,安裝後執行的腳本,通常用來做系統的初始化設置,比如啟動的服務,相關的設定等。

PXE+KickStart的工作流程

              

  • 1. PXE Client向DHCP Server發送請求:支持PXE的網路介面卡(NIC)的Client的BIOS設置成為網路啟動,通過UDP(簡單用戶數據報協議)發送一個廣播請求,向網路中的DHCP Server索取IP地址等信息。
  • 2. DHCP Server提供信息:DHCP Server收到Client的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給Client返迴響應,響應內容包含了為Client分配的IP Address、TFTP Server以及配置文件所在位置。
  • 3. PXE Client請求下載啟動文件:Client收到DHCP Server的響應後,會回應一個幀,以請求傳送啟動所需文件,這些啟動文件包括:pxelinux.0(相當於boot loader)、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
  • 4. TFTP Server響應Client請求並傳送文件:Client會根據該文件中定義的引導順序,啟動Linux安裝程式的引導內核。
  • 5. 請求下載自動應答文件:Client通過pxelinux.cfg/default文件成功的引導Linux安裝內核後,安裝程式首先必須確定你通過什麼安裝介質來安裝linux,如果是通過網路安裝(NFS, FTP, HTTP),則會在這個時候初始化網路,並定位安裝源位置。(或許你會說,剛纔PXE不是已經獲取過IP地址了嗎?為什麼現在還需要一次?這是由於PXE獲取的是安裝用的內核以及安裝程式等,而安裝程式要獲取的是安裝系統所需的二進位包以及配置文件。由於它們需要的內容不同造成PXE模塊和安裝程式是相對獨立的,PXE的網路配置並不能傳遞給安裝程式。從而進行兩次獲取IP地址過程。)接著讀取該文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。
  • 6. Client安裝操作系統:將ks.cfg文件下載回來後,通過該文件找到OS Server,並按照該文件的配置請求下載安裝過程需要的軟體包。

Cobbler

概述

  Cobbler由python語言開發,是對PXE和KickStart的封裝,融合很多特性,提供了CLI和Web的管理形式,能更加方便地實行網路安裝;Cobbler也提供了API介面,因此使用其它語言也很容易做擴展。Cobbler不僅可以安裝物理機,同時也支持KVM、XEN虛擬化、Guest OS的安裝;更多的是它還能結合Puppet等集中化管理軟體,實現自動化的管理。

組成

            

  Cobbler的結構基於一組註冊的對象,每個對象都是相互關聯的實體(該實體指向另一個實體,或者另一個實體指向該實體)。當一個對象指向另一個對象時,它就繼承了被指向對象的數據,並可覆蓋或添加更多特定信息。對象類型的定義為:

  • 發行版(Distribution):表示一個操作系統,它承載了kernel和initrd的信息,以及內核參數等其它數據;
  • 配置文件(Profile):包含一個發行版、一個KickStart文件以及可能的存儲庫,還包含更多特定的內核參數等其它數據;
  • 系統(System):包含一個配置文件或一個鏡像,還包含IP Address和MAC Address、電源管理(地址、憑據、類型)以及更為專業的數據等信息;
  • 存儲庫(Repository):保存一個yum或rsync存儲庫的鏡像信息;
  • 鏡像(Image):可替換一個包含不屬於此類別的文件的發行版對象。

  基於註冊的對象以及各個對象之間的關聯,Cobbler 知道如何更改文件系統以反映具體配置,因為系統配置的內部是抽象的,因此我們可以只關註想要執行的操作。

工作原理

              

    Server端:

  • 啟動Cobbler服務
  • 進行Cobbler錯誤檢查,執行cobbler check命令
  • 進行配置同步,執行cobbler sync命令
  • 複製相關啟動文件文件到TFTP目錄中
  • 啟動DHCP服務,提供地址分配
  • DHCP服務分配IP地址
  • TFTP傳輸啟動文件
  • Server端接收安裝信息
  • Server端發送ISO鏡像與Kickstart文件

    Client端:

  • 客戶端以PXE模式啟動
  • 客戶端獲取IP地址
  • 通過TFTP伺服器獲取啟動文件
  • 進入Cobbler安裝選擇界面
  • 客戶端確定載入信息
  • 根據配置信息準備安裝系統
  • 載入Kickstart文件
  • 傳輸系統安裝的其它文件
  • 進行安裝系統

 小結

  • Cobbler可以看作是一個更多功能的PXE,它實現系統安裝和PXE+KickStart也差不多,需要的文件和過程大致都一樣;
  • Cobbler能自動管理DNS/TFTP/DHCP/RSYNC這四個服務(但似乎對TFTP的管理有點bug,需要手動啟動TFTP),且Cobbler依賴於HTTPD(PXE支持HTTP/NFS/FTP);
  • 基本的系統安裝,Cobbler只需生成一個Distro和一個Profile即可:Distro相當於一個鏡像,它提供安裝系統過程中所需的一切文件,如vmlinuz,initrd以及rpm包等;Profile的作用是為了自動修改pxelinux.cfg/default文件,每生成或修改一次profile,都會在default文件中修改或追加對應的label;
  • 除了Distro/Profile之外,Cobbler還管理System/Images/Repository等,但是用的很少。

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

-Advertisement-
Play Games
更多相關文章
  • 首先我們知道隊列是先進先出的機制,所以在處理併發是個不錯的選擇。然後就寫兩個隊列的簡單應用。 Queue 命名空間 命名空間:System.Collections,不在這裡做過多的理論解釋,這個東西非常的好理解。 可以看下官方文檔:https://docs.microsoft.com/zh-cn/d ...
  • 1、配置代理 1、 開發機開啟 Shadowsocks,允許其他設備連入 2、 臨時開代理命令 (根據實際修改IP和埠) export http_proxy="http://10.5.21.127:1080" export https_proxy="http://10.5.21.127:1080" ...
  • FluentApi總結 1.FluentApi簡介 EF中的FluentApi作用是通過配置領域類來覆蓋預設的約定。在EF中,我們通過DbModelBuilder類來使用FluentApi,它的功能比數據註釋屬性更強大。 使用FluentApi時,我們在context類的OnModelCreatin ...
  • 系統信息: arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理器架構(2) uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬體系統部件 - (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁碟的架構特性 hdparm -tT ...
  • 用戶的角色是通過UID和GID識別的。 UID用戶ID:相當於各為的身份證,在系統中是唯一的 GID組ID:相當於各為的家庭或者你們的學校。 1、新建用戶及設置密碼命令如下: useradd 【參數】 用戶名 -g 屬組 -u 設置uid -m 創建家目錄 -M 沒有家目錄 -G 指定屬於多個組 - ...
  • 1.安裝ssh 2.備份ssh的配置文件 3.新裝的ssh需要修改配置文件 配置文件修改這幾處地方 4.啟動ssh 如果提示錯誤信息中包含could not load host key 則需要重新生成 key 生成之後需要重啟SSH服務使新的密鑰生效: 啟動、停止和重啟ssh的命令如下 5.查看服務 ...
  • 一. 概述 在上一篇中講到了與用戶賬戶有關的二個文件passwd和shadow,以及useradd工具的介紹。這篇接著講useradd+參數,刪除用戶,修改用戶的演示。 1. 刪除用戶userdel 使用userdel可以刪除用戶,但只會刪除etc/passwd文件中的用戶信息,而不會刪除系統中屬於 ...
  • 方法一: 1、先檢查一下windows update服務是否開啟,並禁用殺毒軟體; 2、如果此服務已經啟動,先嘗試更換一下網路環境重新更新; 3、如果更換網路環境後依然無法更新,就刪除windows update緩存文件,刪除方法如下: 分別打開:C:\Windows\SoftwareDistrib ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...