首頁 > 軟體

Cobbler 無人值守介紹與自動部署批次安裝

2020-06-16 16:49:49

Cobbler 介紹

  • 快速網路安裝linux作業系統的服務,支援眾多的Linux版本,也支援網路安裝windows系統
  • PXE的二次封裝,將多種安裝引數封裝到一個選單
  • 它是由Python編寫的
  • 還可以用CLI和WEB來管理

Cobbler 設定目錄說明

安裝:yum install 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 倉庫儲存目錄

紀錄檔目錄:

/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 檢視設定資訊

cobbler 重要的引數

/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伺服器的 IP 地址>

cobbler PXE啟動錯誤報告-來自網路

PXE-E00:Could not find enough free base memory.

          PXE主程式碼和UNDI執行時模組從快閃記憶體或上位記憶體拷貝至基本記憶體頂部480K(78000h)至640K(A0000h)的剩餘空間位置,這段記憶體必須被系統BIOS填零,如果這些記憶體沒有填零,PXE ROM裡的重布置程式碼將認為這些記憶體已經被系統BIOS或其它啟動ROM占用了。

PXE-E01:PCI Vendor and Device IDs do not match!

          此資訊在成品BIOS中不可能出現,當系統BIOS初始化基於PCI的ROM時,它將假設PCI匯流排/裝置/模組(Bus/Device/Function)值已在AX暫存器裡通過稽核,如果AX暫存器裡定義的PCI裝置不匹配UNDI裝置,將出現此錯誤程式碼。

PXE-E04:Error reading PCI configuration space

          如果任何PCI BIOS呼叫導致PCI設定空間返回錯誤程式碼,此資訊將出現,此資訊將不會在成品BIOS和硬體上出現。

PXE-E05:EEPROM checksum error

          如果網絡卡EEPROM內容被損壞,將出現此資訊。EEPROM內容的損壞通常發生在正在對網絡卡EEPROM進行程式設計時系統突然復位(Reset)或掉電的情形下,如果出現此資訊,PXE ROM將不執行引導。

PXE-E06:Option ROM requires DDIM support

          此資訊將不會在成品BIOS中出現,PCI可選ROM通常必須被設定為DDIM可選ROM(通常必須被安置在讀/寫上位記憶體中)

PXE-E07:PCI BIOS calls not supported

          此資訊將不會在成品BIOS中出現,PCI BIOS必須有PCI BIOS服務。

PXE-E08:Unexpected API error.API:xxxxh Status:xxxxh

          如果PXE API返回一個執行時載入器(Runtime Loader)預料之外的狀態程式碼,將出現此資訊

PXE-E09:Unexpected UNDI loader error.Status:xxxxh

          如果UNDI執行時載入器(Runtime Loader)返回預料之外的狀態程式碼,將出現此資訊

ARP錯誤程式碼

PXE-E11:ARP timeout PXE ROM

          將重試四遍ARP請求,如果無法獲取任何有效的ARP答復,將出現此資訊,此資訊通常源於一些網路和服務設定錯誤,通常的原因有:

                  1.在DHCP主伺服器上設定了DHCP類識別符號(Option 60)卻在另一台伺服器上安裝了ProxyDHCP服務。

                  2.使用了不響應ARP請求的路由器

BIOS和BIS錯誤程式碼

PXE-E20:BIOS extended memory copy error.AH==nn

          如果BIOS擴充套件記憶體拷貝服務返回一個錯誤資訊,此資訊將出現,在成品BIOS中將不會遭遇此資訊,程式碼"nn"為BIOS擴充套件記憶體拷貝服務(Int 15h,AH=87h)返回的錯誤程式碼。

PXE-E21:BIS integrity check failed

          如果在擴充套件記憶體中的BIS映像損壞,則將顯示此資訊

PXE-E22:BIS image/credential validation failed

          下載的映像和證書不匹配用戶端關鍵字

PXE-E23:BIS initialization failed BIS

          無法被初始化,沒有更多可用資料

PXE-E24:BIS shutdown failed BIS

          無法停止,沒有更多可用資料

PXE-E25:BIS get boot object authorization check flag failed--2

          PXE啟動晶片出錯程式碼表無法檢測BIS已啟用/已禁用

PXE-E26:BIS free memory failed

          無法釋放BIS分配記憶體

PXE-E27:BIS get signature information failed

          請求BIS證書型別資訊不能被確定。

PXE-E28:BIS bad entry structure checksum SM BIOS

          表中的BIS入口結構無效。

TFTP/MTFTP錯誤程式碼

PXE-E32:TFTP open timeout TFTP"Open"

          請求沒有應答,驗證TFTP服務是否正在執行。

PXE-E35:TFTP read timeout

          未收到下一個TFTP封包

PXE-E36:Error received from TFTP server

          從TFTP伺服器上收到了一個錯誤的TFTP封包

PXE-E38:TFTP cannot open connection

          當試圖送出一個TFTP"Open"包時發生了一個硬體錯

PXE-E39:TFTP cannot read from connection

          當試圖送出一個TFTP應答包時發生了一個硬體錯

PXE-E3A:TFTP too many packages.

          此資訊意味著發生了下列兩種情況中的一個:

                1.你試圖用TFTP下載一個比分配的緩衝區更大的檔案

                2.你作為一個從(Slave)用戶端使用MTFTP開始下載一個檔案,而當你變成一個主(Master)用戶端時,此檔案的大小發生了改變。

PXE-E3B:TFTP error– File not found

          請求的檔案在TFTP伺服器上無法找到。

PXE-E3C:TFTP error– Access violation

          已在TFTP伺服器上找到了請求的檔案,但TFTP服務沒有足夠的存取許可權開啟/讀取檔案。

PXE-E3F:TFTP packet size is invalid

          收到的TFTP包大小超過1456bytes BOOTP/DHCP錯誤程式碼

PXE-E51:No DHCP or proxyDHCP offers were received

          用戶端沒有收到任何有效的DHCP、BOOTP或proxyDHCP應答。

PXE-E52:proxyDHCP offers were received.No DHCP offers were received

          用戶端沒有收到任何有效的DHCP或BOOTP應答,但用戶端收到了至少一個有效的proxyDHCP應答。

PXE-E53:No boot filename received

          用戶端收到了至少一個有效的DHCP/BOOTP應答,但沒有啟動檔名可下載。

PXE-E55:proxyDHCP service did not reply to request on port 4011

          用戶端發出一個proxyDHCP請求到DHCP伺服器的4011埠並沒有收到回復。

UNDI錯誤程式碼

PXE-E60:Invalid UNDI API function number

          一個被基本程式碼所使用的API在UNDI ROM中無法執行。

PXE-E61:Media test failed,check cable

          網線沒有插或沒有連線,可能是網線壞、網絡卡壞或連線問題。

PXE-E63:Error while initializing the NIC

          初始化網絡卡硬體時出現錯誤,建議換網絡卡。

PXE-E64:Error while initializing the PHY

          試圖初始化PHY硬體時出現錯誤,建議換網絡卡。

PXE-E65:Error while reading the configuration data

          讀取網絡卡設定資料時出現錯誤,建議換網絡卡。

PXE-E66:Error while reading the initialization data

          讀取網絡卡初始化資料時出現錯誤,建議換網絡卡。

PXE-E67:Invalid MAC address

          儲存在這塊網絡卡中的MAC地址無效,建議換網絡卡

PXE-E68:Invalid EEPROM checksum

          EEPROM校驗和錯誤,EEPROM內容已損壞,建議換網絡卡

PXE-E69:Error while setting interrupt

          無法設定硬體中斷,建議換網絡卡。

Bootstrap和Discovery錯誤程式碼

PXE-E74:Bad or missing PXE menu and/or prompt information

          已檢測到PXE標識但啟動選單和/或啟動命令提示字元標識未發現/不存在

PXE-E76:Bad or missing multicast discovery address

          多播建立已啟動但多播建立地址標識不符

PXE-E77:Bad or missing discovery server list

          多播和廣播建立(Discovery)都被禁用,或使用伺服器列表啟用,但伺服器列表標識未發現/不存在

PXE-E78:Could not locate boot server

          有效的引導伺服器應答未被用戶端收到

PXE-E79:NBP is too big to fit in free base memory

          NBP太大,超過用戶端基本記憶體容量

PXE-E7A:Client could not locate asecure server

          當用戶端未從啟動伺服器收到任何安全資訊並且用戶端上的BIS已被啟用,將顯示此資訊。

PXE-E7B:Missing MTFTP server IP address

          當ROM未收到PXE建立標識或proxyDHCP回應和DHCP SIADDR區域被設定為0.0.0.0,將顯示此資訊。

未分類錯誤程式碼

PXE-EA0:Network boot canceled by keystroke

          使用者在DHCP/建立/TFTP過程中按了"Esc"或"Ctrl C"鍵

基礎程式碼/UNDI Loader錯誤程式碼

PXE-EC1:BaseCode ROM ID structure was not found UNDI

          引導模組不能發現基礎程式碼ROM ID結構。如果系統中有基礎程式碼ROM映像,它可能已經損壞了

PXE-EC3:BaseCode ROM ID structure is invalid

          基礎程式碼ROM ID結構有問題,基礎程式碼ROM映像已經損壞了

PXE-EC4:UNDI ROM ID structure was not found

          基礎程式碼載入模組不能在UNDI ROM ID結構中定位

PXE-EC5:UNDI ROM ID structure is invalid UNDI

          ROM映像已經損壞了

PXE-EC6:UNDI driver image is invalid UNDI

          ROM映像已經損壞了

PXE-EC8:!PXE structure was not found in UNDI driver code segment

          UNDI ROM映像已經損壞了,或者未能被BIOS載入,此錯誤資訊通常係如下一個或三個原因所致:

                  1.當即將呼叫一個LOM映像的時間點,網絡卡映像正在被程式設計進BIOS

                  2.在PXE可選ROM開始啟動之前,PXE可選ROM載入自檢記憶體管理器(POST Memory Manager,$PMM)分配的記憶體期間被損壞或刪除。

                  3.在載入ROM結構期間UNDI_Loader結構未被正確載入

PXE-EC9:PXENV structure was not found in UNDI driver code segment

          UNDI ROM映像可能被損壞了,或未被BIOS載入,此錯誤資訊通常係如下三個原因所致:

                  1.當即將呼叫一個LOM映像的時間點,網絡卡映像正在被程式設計進BIOS

                  2.在PXE可選ROM開始啟動之前,PXE可選ROM載入自檢記憶體管理器(POST Memory Manager,$PMM)分配的記憶體期間被損壞或刪除。

                  3.在載入ROM結構期間UNDI_Loader結構未被正確載入。

安裝

環境準備

  • 準備兩台主機,如CentOS6和centos7
  • centos7當作server伺服器
  • 關閉selinux
  • 關閉防火牆

安裝

cobbler包光碟裡是沒有的,要設定epel源,這裡就說怎麼設定epel源了,在yum.repos.d/目錄下照葫蘆畫瓢就可,設定好後執行如下命令安裝

yum install –y cobbler 

安裝成功後,我們發現它還安裝了其他的服務

備註:我們搭建cobbler-系統部署需要用到httpd、tftp-server、dhcp服務,從圖上可以看出它沒有安裝dhcp服務,所以我們要安裝下dhcp服務

yum install –y dhcp

開啟服務

http服務

systemctl start httpd
#開啟服務
systemctl enable httpd
#設定開機自啟動

tftp-server服務

systemctl start tftp
#開啟服務
systemctl enable tftp
#開機自啟動

cobbler服務

systemctl start cobblerd
#開啟服務
systemctl enable cobblerd
#開機自啟動

cobbler環境檢查

執行

cobbler check
#

會出現如下提示,設定缺少的東西

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 : change 'disable' to 'no' in /etc/xinetd.d/tftp
4 : 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.
5 : enable and start rsyncd.service with systemctl
6 : debmirror package is not installed, it will be required to manage debian deployments and repositories
7 : 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: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

OK 根據提示一步一步來解決

步驟一

1、第一個提示:在/etc/cobbler/settings 檔案中server欄位必須要有一個別人可存取的IP地址,來提供網路服務,那麼我們是在centos7上搭建的所以是本機地址。

①編輯組態檔

vim etc/cobbler/settings
#編輯組態檔

②重新整理組態檔並環境檢查

systemctl restart cobblerd
#重新啟動服務,重新讀取修改的組態檔
cobbler check
#環境檢查

步驟二

#環境檢查後發現少了一項,那麼下面接著還是從第一項開始操作
1 : 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.
2 : change 'disable' to 'no' in /etc/xinetd.d/tftp
3 : 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.
4 : enable and start rsyncd.service with systemctl
5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
6 : 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: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
7 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

如上第一條:'next_server' 地址不應該是127.0.0.1

所以修改它的地址,這個地址也就是你tftp伺服器所在的主機地址,我們把服務都安裝在一台主機上了,所以和上面地址一樣

①編輯組態檔

vim etc/cobbler/settings
#編輯組態檔

②重複步驟一中的②命令來重讀組態檔與環境檢查

步驟三

#環境檢查後發現又少了一條,下面接這來...
1 : change 'disable' to 'no' in /etc/xinetd.d/tftp
2 : 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.
3 : enable and start rsyncd.service with systemctl
4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
5 : 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: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
6 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

如上第一條:提示更改/etc/xinetd.d/tftp組態檔中'disable'狀態改為‘no’說白了也就是開啟tftp服務

因為我們用的是centos7不需要xinetd.d了,前面已經開啟了tftp服務,這步忽略,看下一個提示

第二條:在/var/lib/cobbler/loaders目錄下少了一些必要的檔案,用'cobbler get-loaders' 命令來獲取,這時候需要主機聯網下載

cobbler get-loaders

我們先來看看這個目錄

①生成必要檔案

我們知道出現的這些檔案是要放在/var/lib/tftpboot/這裡的,我們看下這個目錄的資訊

用如上環境檢查中給出的提示進行同步

cobbler sync
#資料同步 

再次檢視下/var/lib/tftpboot目錄結構

②重複步驟一中的②命令

#又少了,繼續
1 : enable and start rsyncd.service with systemctl
2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
3 : 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: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
4 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

步驟四

第一條:開啟rsyncd.service 服務,我們沒有用這個服務,忽略

第二條:是針對debian發行版的系統設定,忽略

第三條:修改kickstart檔案的預設口令

①編輯組態檔

vim /etc/cobbler/settings
#

②重複步驟一中的②命令

#少了一條
1 : enable and start rsyncd.service with systemctl
2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
3 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

如上第一、二上面說了忽略,看第三條,意思說設定電源項,和硬體有關,忽略

步驟五

設定dhcp

①編輯組態檔

vim /etc/cobbler/settings
#

② 改cobbler提供的dhcp組態檔模板

vim /etc/cobbler/dhcp.template
#

我們先來看下dhcp組態檔

還是空的沒有設定資訊

②同步

systemctl restart cobblerd
#重新啟動服務
cobbler sync
#資料同步

再來看dhcp組態檔

有資訊了

步驟六

①開啟dhcp服務

systemctl start dhcpd
#開啟服務

②建立cobbler yum源-匯入系統

這裡我們也把centos6匯入

備註:它是放在了/var/www/目錄下,同時生成了一個和系統同名的kickstart檔案,

自帶的kickstart檔案是滿足不了我們的需求的,所以我們使用自己的kickstart檔案,之前生成過,直接拿來用。

步驟七

①編輯ks.cfg檔案(前幾篇提到過怎麼建立改檔案)

②把ks.cfg檔案放在/var/lib/cobbler/kickstarts/下

③建立啟動選單

cobbler profile add --name=Centos-7.5-x86_64-Auto --distro=Centos-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks.cfg
#
cobbler profile add --name=Centos-6.9-x86_64-Auto --distro=Centos-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6.cfg
#

④檢視啟動檔案default是不是有了我們建立的自定義啟動項

cat /var/lib/tftpboot/pxelinux.cfg/default
#檢視啟動選單

備註:也可刪除不需要的啟動選單

cobbler profile remove --name=Centos-6.9-x86_64

OK現在就可以用準備好的另一台主機測試了

備註:確保 http tftp dhcp 服務已開啟 防火牆以關閉 selinux以關閉

成功介面

cobbler-web管理

1、首先安裝包

yum install -y cobbler-web
#

2、存取

https://192.168.43.7/cobbler_web

預設賬號:cobbler

預設密碼:cobbler

附帶過程中出現的問題

問題一:出現如下提示:

解決方案:http:改為https:存取 

問題二:安裝新系統的時候,出現TFTP open timeout!

解決方案:關閉防火牆

#systemctl stop firewalld.service

#iptables –L 

問題三:check環境檢查的時在cobbler 候出現如下

解決方案:這是ip分配錯誤的提示,檢查組態檔IP分配段

每個人遇到的問題可能不一樣,檢視紀錄檔檢查,tailf -10 /var/log/messages

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-07/153262.htm


IT145.com E-mail:sddin#qq.com