技術原理解析:
- Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的位置信息一併傳送給Client
- Client向PXE Server上的TFTP發送獲取pxelinux.0請求消息,TFTP接收到消息之後再向Client發送pxelinux.0大小信息,試探Client是否滿意,當TFTP收到Client發回的同意大小信息之後,正式向Client發送pxelinux.0
- Client執行接收到的pxelinux.0文件
- Client向TFTP Server發送針對本機的配置信息文件(在TFTP服務的pxelinux.cfg目錄下,這是系統菜單文件,格式和isolinux.cfg格式一樣,功能也是類似),TFTP將配置文件發回Client,繼而Client根據配置文件執行後續操作。
- Client向TFTP發送Linux內核請求信息,TFTP接收到消息之後將內核文件發送給Client
- Client向TFTP發送根文件請求信息,TFTP接收到消息之後返回Linux根文件系統
- Client啟動Linux內核
- Client下載安裝源文件,讀取自動化安裝腳本
Cobbler簡單介紹:
- Cobbler是一個Linux服務器快速網絡安裝的服務,由python開發,小巧輕便(15k行python代碼),可以通過PXE的方式來快速安裝、重裝物理服務器和虛擬機,同時還可以管理DHCP,DNS,TFTP、RSYNC以及yum倉庫、構造系統ISO鏡像。
- Cobbler可以使用命令行方式管理,也提供了基於Web的界面管理工具(cobbler-web),還提供了API接口,可以方便二次開發使用。
Cobbler工作流程:
- Client裸機配置了從網絡啟動後,開機後會廣播包請求DHCP服務器 (Cobbler server)發送其分配好的一個IP
- DHCP服務器(Cobbler server)收到請求後發送responese,包括其ip地址
- Client裸機拿到ip後再向Cobbler server發送請求OS引導文件的請求
- Cobbler server告訴裸機OS引導文件的名字和TFTP server的ip和port
- Client裸機通過上面告知的TFTP server地址通信,下載引導文件
- Client裸機執行執行該引導文件,確定加載信息,選擇要安裝的OS, 期間會再向cobbler server請求kickstart文件和OS image
- Cobbler server發送請求的kickstart和OS iamge
- Client裸機加載kickstart文件
- Client裸機接收os image,安裝該OS image
Cobbler 設計方式:
- 發行版(distro) :表示一個操作系統,它承載了內核和initrd的信息,以及內核等其他數據
- 存儲庫 (repository):保存了一個yum或者rsync存儲庫的鏡像信息
- 配置文件(profile):包含了一個發行版(distro),一個kickstart文件以及可能的存儲庫(repository),還包含了更多的內核參數等其他數據
- 系統(system):表示要配給的機器,它包含了一個配置文件或一個鏡像,還包含了ip和mac地址,電源管理(地址,憑據,類型)以及更為專業的數據信息
- 鏡像(image):可替換一個包含不屬於此類別的文件的發行版對象(eg: 無法作為內核和initrd的對象)
以上各個組件中, 發行版,存儲庫, 配置文件為必須配置項,只有在虛擬環境中,必須要用cobbler來引導虛擬機啟動時候,才會用到系統組件但事實上,在生產環境中需要大量的虛擬機實例的話,通常利用openstack等來實現虛擬機節點
Cobbler配置目錄文件說明:
/etc/cobbler
/etc/cobbler/settings # cobbler 主配置文件
/etc/cobbler/iso/ # iso模板配置文件
/etc/cobbler/pxe # pxe模板文件
/etc/cobbler/power # 電源配置文件
/etc/cobbler/user.conf # web服務授權配置文件
/etc/cobbler/users.digest # web訪問的用戶名密碼配置文件
/etc/cobbler/dhcp.template # dhcp服務器的的配置末班
/etc/cobbler/dnsmasq.template # dns服務器的配置模板
/etc/cobbler/tftpd.template # tftp服務的配置模板
/etc/cobbler/modules.conf # 模塊的配置文件
Cobbler數據目錄:
/var/lib/cobbler/config/ # 用於存放distros,system,profiles 等信 息配置文件
/var/lib/cobbler/triggers/ # 用於存放用戶定義的cobbler命令
/var/lib/cobbler/kickstart/ # 默認存放kickstart文件
/var/lib/cobbler/loaders/ # 存放各種引導程序 鏡像目錄
/var/www/cobbler/ks_mirror/ # 導入的發行版系統的所有數據
/var/www/cobbler/images/ # 導入發行版的kernel和initrd鏡像用於 遠程網絡啟動
/var/www/cobbler/repo_mirror/ # yum 倉庫存儲目錄
Cobbler鏡像目錄:
/var/www/cobbler/ks_mirror/ # 導入的發行版系統的所有數據
/var/www/cobbler/images/ # 導入發行版的kernel和initrd鏡像用於遠程網絡啟動
/var/www/cobbler/repo_mirror/ # yum 倉庫存儲目錄
Cobbler日誌目錄:
/var/log/cobbler/installing # 客戶端安裝日誌
/var/log/cobbler/cobbler.log # cobbler日誌
Cobbler命令介紹:
cobbler check # 核對當前設置是否有問題
cobbler list # 列出所有的cobbler元素
cobbler report # 列出元素的詳細信息
cobbler sync # 同步配置到數據目錄,更改配置最好都要執行下
cobbler reposync # 同步yum倉庫
cobbler distro # 查看導入的發行版系統信息
cobbler system # 查看添加的系統信息
cobbler profile # 查看配置信息
/etc/cobbler/settings中重要的參數設置:
default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
manage_dhcp:1
manage_tftpd:1
pxe_just_once:1
next_server:< tftp服務器的 IP 地址>
server:
後面會說明Cobbler的安裝和配置。
閱讀更多 心欲無痕 的文章