1. 程式人生 > >centos7使用cobbler(2.8)批量部署

centos7使用cobbler(2.8)批量部署

centos cobbler

一、 批量部署操作系統的前提

要想批量部署操作系統,得具備以下條件:

客戶機支持pxe網絡引導

服務器端和客戶端建立網絡通信(DHCP)

服務器端要有可供客戶機開機引導的引導文件

服務器端的可引導文件還必須能傳遞到客戶機(TFTP

客戶機無人值守安裝包括安裝定制的軟件或服務(KICKSTART文件)

1. 認識一下PXE

預啟動執行環境(Preboot eXecution EnvironmentPXE,也被稱為預執行環境)提供了一種使用網絡接口(Network Interface)啟動計算機的機制。這種機制讓計算機的啟動可以不依賴本地數據存儲設備(如硬盤)或本地已安裝的操作系統

PXE:支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配

IP地址,再用TFTPtrivial file transfer protocol)或MTFTP(multicasttrivial file transfer pro

tocol)協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件包完成Client端自動化基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。PXE可以引導多種操作系統,如:windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。

PXE是由Intel設計的協議,它可以使計算機通過網絡啟動。協議分為clientserver兩端,PXE client在網卡的ROM中,當計算機引導時,

BIOSPXE client調入內存執行,並顯示出命令菜單,經用戶選擇後,PXE client將放置在遠端的操作系統通過網絡下載到本地運行,無盤工作站就是通過PXE來進行啟動的。PXE協議的成功運行需要解決以下兩個問題:IP地址的分配,下載Linux內核和根文件系統。

IP地址的分配

可以用DHCP server來給PXE client分配一個IP地址,DHCP Server是用來給DHCP Client動態分配IP地址的協議,不過由於這裏是給PXE Client分配IP地址,所以在配置DHCP Server時,需要增加相應的PXE特有配置。

下載Linux內核和根文件系統

PXE client所在的

ROM中,已經存在了TFTP ClientPXE Client使用TFTP Client,通過TFTP協議到TFTP Server上下載所需的文件。

2. PXE的工作原理

PXE client是需要安裝操作系統的計算機,TFTP ServerDHCP Server運行在另外一臺Server上。Bootstrap文件、配置文件、Linux內核以及Linux根文件系統都放置在Linux ServerTFTP服務器的根目錄下。PXE client在工作過程中,需要三個二進制文件:bootstrapLinux 內核和Linux根文件系統。Bootstrap文件是可執行程序,它向用戶提供簡單的控制界面,並根據用戶的選擇,下載合適的Linux內核以及 Linux根文件系統。下圖就是PXE工作的原理圖:

簡單總結一下:

PXE Client發送廣播包請求DHCP分配IP地址DHCP

Server回復請求,給出IP地址以及Boot

PXE ClientServer下載引導文件執行引導程序

3. PXE應用

PXE最直接的表現是,在網絡環境下工作站可以省去硬盤,但又不是通常所說的無盤站的概念,因為使用該技術的PC在網絡方式下的運行速度要比有盤PC3倍以上。當然使用PXEPC也不是傳統意義上的TERMINAL終端,因為使用了PXEPC並不消耗服務器的CPURAM等資源,故服務器的硬件要求極低。

網絡克隆 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網絡安裝環境的配置,同時還可以管理DHCPDNS,以及yum包鏡像。

Cobbler是一個應用程序,可以大批量的部署操作系統,可以同時部署多個不同的操作系統,配合kickstart文件可以定制和無人值守的方式部署操作系統。它對PXE進行二次開發和封裝,同時提供二次開發接口。

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

發行版(Distro):

表示一個操作系統。它承載了內核和initrd 的信息,以及內核參數等其他數據。

配置文件(Profile)

包含一個發行版、一個kickstart 文件以及可能的存儲庫,還包含更多特定的內核參數等其他數據。

系統(System)

表示要配給的機器。它包含一個配置文件或一個鏡像,還包含 IP MAC 地址、電源管理(地址、憑據、類型)以及更為專業的數據等信息。

存儲庫(Repo)

保存一個 yum rsync 存儲庫的鏡像信息。

鏡像(Image)

可替換一個包含不屬於此類別的文件的發行版對象(例如,無法分為內核和 initrd 的對象)。

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

2. Cobbler原理

CobblerPython語言開發,是對PXEKickstart以及DHCP的封裝。融合很多特性,提供了CLIWeb的管理形式。更加方便的實行網絡安裝。同時,Cobbler也提供了API接口,使用其它語言也很容易做擴展。它不緊可以安裝物理機,同時也支持kvmxen虛擬化、Guest OS的安裝。更多的是它還能結合Puppet等集中化管理軟件,實現自動化的管理。

Cobbler 支持眾多的發行版:Red HatFedoraCentOSDebianUbuntu SuSE。當添加一個操作系統(通常通過使用 ISO 文件)時,Cobbler 知道如何解壓縮合適的文件並調整網絡服務,以正確引導機器。Cobbler 使用命令行方式管理,也提供了基於Web的圖形化配置管理工具(cobbler-web)。通過配置cobbler自動部署DHCPTFTPHTTP,在安裝過程中加載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,但是會安裝TFTPHTTP及一些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,tftpcobbler本身。

#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/settingsnext_serverip地址,如果啟用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‘"並替換settingsdefault_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)批量部署