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

  瞭解Cobbler以前,咱們須要先對PXE及KickStart有必定的認識。python

PXE

  PXE(Pre-bootExecution Environment),預啓動執行環境,經過網絡接口啓動計算機,支持Client經過網絡從Server下載映像,並由此經過網絡啓動操做系統;在啓動過程當中,Client要求Server分配IP地址,再用TFTP下載一個啓動軟件包到本機內存中執行,由這個啓動軟件包完成Client基本的軟件設置並安裝操做系統。
  要達成PXE有兩個必須的條件:
  (1)Client的網卡必需要支持PXE功能,而且開機時選擇從網卡啓動;
  (2)完整的PXE Server必需要提供含有DHCP、TFTP服務,還要加上NFS/FTP/HTTP(選擇同樣便可)等提供安裝文件(安裝鏡像的解壓文件)。linux

KickStart

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

  • 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等,可是用的不多。
相關文章
相關標籤/搜索