centos7使用cobbler(2.8)批量部署
一、 批量部署操作系統的前提
要想批量部署操作系統,得具備以下條件:
客戶機支持pxe網絡引導
服務器端和客戶端建立網絡通信(DHCP)
服務器端要有可供客戶機開機引導的引導文件
服務器端的可引導文件還必須能傳遞到客戶機(TFTP)
客戶機無人值守安裝包括安裝定制的軟件或服務(KICKSTART文件)
1. 認識一下PXE
預啟動執行環境(Preboot eXecution Environment,PXE,也被稱為預執行環境)提供了一種使用網絡接口(Network Interface)啟動計算機的機制。這種機制讓計算機的啟動可以不依賴本地數據存儲設備(如硬盤)或本地已安裝的操作系統
PXE:支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配
tocol)協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件包完成Client端自動化基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。PXE可以引導多種操作系統,如:windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。
PXE是由Intel設計的協議,它可以使計算機通過網絡啟動。協議分為client和server兩端,PXE client在網卡的ROM中,當計算機引導時,
IP地址的分配
可以用DHCP server來給PXE client分配一個IP地址,DHCP Server是用來給DHCP Client動態分配IP地址的協議,不過由於這裏是給PXE Client分配IP地址,所以在配置DHCP Server時,需要增加相應的PXE特有配置。
下載Linux內核和根文件系統
PXE client所在的
2. PXE的工作原理
PXE client是需要安裝操作系統的計算機,TFTP Server和DHCP Server運行在另外一臺Server上。Bootstrap文件、配置文件、Linux內核以及Linux根文件系統都放置在Linux Server上TFTP服務器的根目錄下。PXE client在工作過程中,需要三個二進制文件:bootstrap、Linux 內核和Linux根文件系統。Bootstrap文件是可執行程序,它向用戶提供簡單的控制界面,並根據用戶的選擇,下載合適的Linux內核以及 Linux根文件系統。下圖就是PXE工作的原理圖:
簡單總結一下:
PXE Client發送廣播包請求DHCP分配IP地址DHCP
Server回復請求,給出IP地址以及Boot
PXE Client從Server下載引導文件執行引導程序
3. PXE應用
PXE最直接的表現是,在網絡環境下工作站可以省去硬盤,但又不是通常所說的無盤站的概念,因為使用該技術的PC在網絡方式下的運行速度要比有盤PC快3倍以上。當然使用PXE的PC也不是傳統意義上的TERMINAL終端,因為使用了PXE的PC並不消耗服務器的CPU,RAM等資源,故服務器的硬件要求極低。
網絡克隆 PXE 現在最為廣泛的應用一個是網吧的無盤技術。在有盤領域的網絡維護和安裝中PXE可以是最好用的網吧系統統一安裝和維護的引導技術,PXE的引導速度和穩定性都是一流的!
4. 什麽是Kickstart
官方文檔:https://fedoraproject.org/wiki/Anaconda/Kickstart/zh-cn
KickStart是一種無人職守安裝方式,是由redhat公司為了解決無人值守安裝操作系統而設計的。系統管理員通過創建一個單一的kickstart配置文件就可以實現自動化安裝操作系統。KickStart的工作原理是通過記錄典型的安裝過程中所需人工幹預填寫的各種參數,並生成一個名為ks.cfg的文件;在其後的安裝過程中(不只局限於生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找KickStart生成的文件,當找到合適的參數時,就采用找到的參數,當沒有找到合適的參數時,才需要安裝者手工幹預。這樣,如果KickStart文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然後去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中設置的重啟選項來重啟系統,並結束安裝。
二. Cobbler介紹
1. 什麽是Cobbler
官方網站:https://cobbler.github.io/
GITHUB: https://github.com/cobbler/cobbler
Cobbler是一個快速網絡安裝linux的服務,而且在經過調整也可以支持網絡安裝windows。該工具使用python開發,小巧輕便(才15k行代碼),使用簡單的命令即可完成PXE網絡安裝環境的配置,同時還可以管理DHCP,DNS,以及yum包鏡像。
Cobbler是一個應用程序,可以大批量的部署操作系統,可以同時部署多個不同的操作系統,配合kickstart文件可以定制和無人值守的方式部署操作系統。它對PXE進行二次開發和封裝,同時提供二次開發接口。
Cobbler 的配置結構基於一組註冊的對象。每個對象表示一個與另一個實體相關聯的實體(該對象指向另一個對象,或者另一個對象指向該對象)。當一個對象指向另一個對象時,它就繼承了被指向對象的數據,並可覆蓋或添加更多特定信息。以下對象類型的定義為:
發行版(Distro):
表示一個操作系統。它承載了內核和initrd 的信息,以及內核參數等其他數據。
配置文件(Profile):
包含一個發行版、一個kickstart 文件以及可能的存儲庫,還包含更多特定的內核參數等其他數據。
系統(System):
表示要配給的機器。它包含一個配置文件或一個鏡像,還包含 IP 和 MAC 地址、電源管理(地址、憑據、類型)以及更為專業的數據等信息。
存儲庫(Repo):
保存一個 yum 或 rsync 存儲庫的鏡像信息。
鏡像(Image):
可替換一個包含不屬於此類別的文件的發行版對象(例如,無法分為內核和 initrd 的對象)。
基於註冊的對象以及各個對象之間的關聯,Cobbler 知道如何更改文件系統以反映具體配置。因為系統配置的內部是抽象的,所以您可以僅關註想要執行的操作。
2. Cobbler原理
Cobbler由Python語言開發,是對PXE和Kickstart以及DHCP的封裝。融合很多特性,提供了CLI和Web的管理形式。更加方便的實行網絡安裝。同時,Cobbler也提供了API接口,使用其它語言也很容易做擴展。它不緊可以安裝物理機,同時也支持kvm、xen虛擬化、Guest OS的安裝。更多的是它還能結合Puppet等集中化管理軟件,實現自動化的管理。
Cobbler 支持眾多的發行版:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE。當添加一個操作系統(通常通過使用 ISO 文件)時,Cobbler 知道如何解壓縮合適的文件並調整網絡服務,以正確引導機器。Cobbler 使用命令行方式管理,也提供了基於Web的圖形化配置管理工具(cobbler-web)。通過配置cobbler自動部署DHCP、TFTP、HTTP,在安裝過程中加載kiskstart無人值守安裝應答文件實現無人值守。從客戶端使用PXE引導啟動安裝。
Server端
第一步,啟動Cobbler服務
第二步,進行Cobbler錯誤檢查,執行cobbler check命令
第三步,進行配置同步,執行cobbler sync命令
第四步,復制相關啟動文件文件到TFTP目錄中
第五步,啟動DHCP服務,提供地址分配
第六步,DHCP服務分配IP地址
第七步,TFTP傳輸啟動文件
第八步,Server端接收安裝信息
第九步,Server端發送ISO鏡像與Kickstart文件
Client端
第一步,客戶端以PXE模式啟動
第二步,客戶端獲取IP地址
第三步,通過TFTP服務器獲取啟動文件
第四步,進入Cobbler安裝選擇界面
第五步,客戶端確定加載信息
第六步,根據配置信息準備安裝系統
第七步,加載Kickstart文件
第八步,傳輸系統安裝的其它文件
第九步,進行安裝系統
三、 Cobbler安裝與初始配置
1. 添加EPEL源
Cobbler位於EPEL源中,如果系統沒有EPEL源,需要配置epel
2. Cobbler支撐服務安裝
Cobbler雖然可以接管DHCP服務,但本身並不提供DHCP服務,而且yum安裝 cobbler的時候也不會自動安裝DHCP,但是會安裝TFTP,HTTP及一些python的包。
# yum -y install dhcp
3. Yum安裝cobbler
# yum -y install cobbler
下面是安裝完後系統中一些重要的文件位置及說明:
#rpm -ql cobbler
/etc/cobbler | 配置文件目錄 |
/etc/cobbler/settings | cobbler主配置文件 |
/etc/cobbler/dhcp.template | DHCP服務的配置模板 |
/etc/cobbler/tftpd.template | tftp服務的配置模板 |
/etc/cobbler/rsync.template | rsync服務的配置模板 |
/etc/cobbler/iso | iso模板配置文件目錄 |
/etc/cobbler/pxe | pxe模板文件目錄 |
/etc/cobbler/power | 電源的配置文件目錄 |
/etc/cobbler/users.conf | Web服務授權配置文件 |
/etc/cobbler/users.digest | web訪問的用戶名密碼配置文件 |
/etc/cobbler/dnsmasq.template | DNS服務的配置模板 |
/etc/cobbler/modules.conf | Cobbler模塊配置文件 |
/var/lib/cobbler | Cobbler數據目錄 |
/var/lib/cobbler/config | 配置文件 |
/var/lib/cobbler/kickstarts | 默認存放kickstart文件 |
/var/lib/cobbler/loaders | 存放的各種引導程序 |
/var/www/cobbler | 系統安裝鏡像目錄 |
/var/www/cobbler/ks_mirror | 導入的系統鏡像列表 |
/var/www/cobbler/images | 導入的系統鏡像啟動文件 |
/var/www/cobbler/repo_mirror | yum源存儲目錄 |
/var/log/cobbler | 日誌目錄 |
/var/log/cobbler/install.log | 客戶端系統安裝日誌 |
/var/log/cobbler/cobbler.log | cobbler日誌 |
4. Cobbler初始配置cobbler check
將cobbler所依賴的服務設置為開機自啟動,並開啟服務,主要有httpd,dhcpd,tftp及cobbler本身。
#systemctl start httpd
#systemctl enable httpd
#systemctl start tftp
#systemctl enable tftp
#systemctl start dhcpd
#systemctl enable dhcpd
# systemctl start cobbler
# systemctl enable cobbler
Cobbler check命令主要是用來檢查當前系統是否滿足cobbler的運行要求,下面是第一次運行cobbler check命令的提示,按照提示一個一個修改即可。
# cobbler check
The following are potential configuration items that you may want to fix:
1 : The ‘server‘ field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
2 : For PXE to be functional, the ‘next_server‘ field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
3 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:
https://github.com/cobbler/cobbler/wiki/Selinux
4 : change ‘disable‘ to ‘no‘ in /etc/xinetd.d/tftp
5 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run ‘cobbler get-loaders‘ to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The ‘cobbler get-loaders‘ command is the easiest way to resolve these requirements.
6 : enable and start rsyncd.service with systemctl
7 : debmirror package is not installed, it will be required to manage debian deployments and repositories
8 : ksvalidator was not found, install pykickstart
9 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to ‘cobbler‘ and should be changed, try:default_password_crypted "openssl passwd -1 -salt ‘random-phrase-here‘ ‘your-password-here‘" to generate new one
10 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
Restart cobblerd and then run ‘cobbler sync‘ to apply changes.
1#這個提示是需要修改/etc/cobbler/settings 文件中server: 後面的IP地址,這個地址默認是127.0.0.1需要修改成可以通信的cobbler服務器本機真實的網卡地址。
#vi /etc/cobbler/settings
server: 192.168.100.10
2#這個提示是說要想讓PXE工作起來,需要設置/etc/cobbler/settings中next_server的ip地址,如果啟用cobbler來管理DHCP就要修改,這個是dhcp服務器的地址,如果沒有正確設置這個地址則會顯示TFTP超時。
#vi /etc/cobbler/settings
next_server: 192.168.100.10
3#這個提示要求關閉selinux
#vi /etc/sysconfig/selinux
SELINUX=disabled
4#提示要求啟用tftp
#vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
5#提示要求使用cobbler get-loaders從網上下載引導程序
# cobbler get-loaders
6#提示要求啟動 rsyncd服務
# systemctl start rsyncd
7#提示deb的包沒有被安裝,如果不打算部署debian系統可以忽略
8#提示要求安裝pykickstart
#yum –y pykickstart
9#提示要求修改默認密碼"openssl passwd -1 -salt ‘random-phrase-here‘ ‘your-password-here‘"並替換settings中default_password_crypted引號中的內容
# openssl passwd -1 -salt ‘frank‘ ‘frank‘
1frank$.XItdMFNYz07ISKS9q9Jx0
#vi /etc/cobbler/settings
default_password_crypted: "
1frank$.XItdMFNYz07ISKS9q9Jx0"
10#提示如果使用電源管理模塊,需要安裝cman 或者 fence-agents
# yum install fence-agents-all
以上步驟全部執行完成後,重啟cobbler服務,並使用cobbler sync保存修改,也可以每修改一個提示執行一下。直到沒有提示,或可以忽略某些提示為止。
centos7使用cobbler(2.8)批量部署