centos7使用cobbler(2.8)批量部署操作系統之一


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

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

客戶機支持pxe網絡引導

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

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

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

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

 

1.    認識一下PXE

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

PXE:支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer pro日

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

PXE是由Intel設計的協議,它可以使計算機通過網絡啟動。協議分為client和server兩端,PXE client在網卡的ROM中,當計算機引導時,BIOS把PXE 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 Client。PXE Client使用TFTP Client,通過TFTP協議到TFTP Server上下載所需的文件。

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源,先要安裝

# yum -y install epel-release

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'

$1$frank$.XItdMFNYz07ISKS9q9Jx0

#vi /etc/cobbler/settings

default_password_crypted: "$1$frank$.XItdMFNYz07ISKS9q9Jx0"

10#提示如果使用電源管理模塊,需要安裝cman 或者 fence-agents

# yum install fence-agents-all

以上步驟全部執行完成后,重啟cobbler服務,並使用cobbler sync保存修改,也可以每修改一個提示執行一下。直到沒有提示,或可以忽略某些提示為止。

#systemc restart cobblerd

#cobbler sync

#cobbler check

The following are potential configuration items that you may want to fix:

1 : debmirror package is not installed, it will be required to manage debian deployments and repositories

Restart cobblerd and then run 'cobbler sync' to apply changes.

OK,至此關於批量安裝的基礎部分及cobbler介紹就到這里,下一篇將介紹下cobbler的命令及實戰。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM