使用cobbler批量安裝操作系統(基於Centos7.x )

来源:http://www.cnblogs.com/clsn/archive/2017/11/15/7839965.html
-Advertisement-
Play Games

1.1 cobbler簡介 Cobbler是一個Linux伺服器安裝的服務,可以通過網路啟動(PXE)的方式來快速安裝、重裝物理伺服器和虛擬機,同時還可以管理DHCP,DNS等。 Cobbler可以使用命令行方式管理,也提供了基於Web的界面管理工具(cobbler-web),還提供了API介面,可 ...


1.1 cobbler簡介

  Cobbler是一個Linux伺服器安裝的服務,可以通過網路啟動(PXE)的方式來快速安裝、重裝物理伺服器和虛擬機,同時還可以管理DHCP,DNS等。

  Cobbler可以使用命令行方式管理,也提供了基於Web的界面管理工具(cobbler-web),還提供了API介面,可以方便二次開發使用。

  Cobbler是較早前的kickstart的升級版,優點是比較容易配置,還自帶web界面比較易於管理。

  Cobbler內置了一個輕量級配置管理系統,但它也支持和其它配置管理系統集成,如Puppet,暫時不支持SaltStack。

  Cobbler官網http://cobbler.github.io

  在使用cobbler之前需要瞭解kickstart的使用: http://www.cnblogs.com/clsn/p/7833333.html

1.1.1 cobbler集成的服務

    PXE服務支持

    DHCP服務管理

    DNS服務管理(可選bind,dnsmasq)

    電源管理

    Kickstart服務支持

    YUM倉庫管理

    TFTP(PXE啟動時需要)

    Apache(提供kickstart的安裝源,並提供定製化的kickstart配置)

1.2 安裝cobbler

1.2.1 環境說明

[root@Cobbler ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

[root@Cobbler ~]# uname -r
3.10.0-693.el7.x86_64

[root@Cobbler ~]# getenforce
Disabled

[root@Cobbler ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

[root@Cobbler ~]# hostname -I
10.0.0.202 172.16.1.202

yum源說明:

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

1.2.2 使用yum安裝cobbler

yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd

   說明:cobbler是依賴與epel源下載

1.2.3 cobbler語法檢查前先啟動http與cobbler

systemctl start httpd.service
systemctl start cobblerd.service
cobbler check

1.2.4 進行語法檢查

[root@Cobbler ~]# 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 : 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

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

1.2.5 解決當中的報錯

命令集

sed -i 's/server: 127.0.0.1/server: 172.16.1.202/' /etc/cobbler/settings
sed -i 's/next_server: 127.0.0.1/next_server: 172.16.1.202/' /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings
sed -ri "/default_password_crypted/s#(.*: ).*#\1\"`openssl passwd -1 -salt 'oldboy' '123456'`\"#" /etc/cobbler/settings
sed -i 's#yes#no#' /etc/xinetd.d/tftp

systemctl start rsyncd
systemctl enable rsyncd
systemctl enable tftp.socket
systemctl start tftp.socket
systemctl restart cobblerd.service

sed -i.ori 's#192.168.1#172.16.1#g;22d;23d' /etc/cobbler/dhcp.template

cobbler sync
View 命令集  單擊+打開

詳解

解決1、2

cp /etc/cobbler/settings{,.ori}
sed -i 's/server: 127.0.0.1/server: 172.16.1.202/' /etc/cobbler/settings
sed -i 's/next_server: 127.0.0.1/next_server: 172.16.1.202/' /etc/cobbler/settings

問題3

sed 's#yes#no#g' /etc/xinetd.d/tftp -i

4下載包所需的軟體包

[root@Cobbler ~]# cobbler get-loaders
[root@Cobbler ~]# ls  /var/lib/cobbler/loaders
COPYING.elilo     elilo-ia64.efi   menu.c32    yaboot
COPYING.syslinux  grub-x86_64.efi  pxelinux.0
COPYING.yaboot    grub-x86.efi     README

5啟動rsync服務

[root@Cobbler ~]# systemctl start rsyncd.service
[root@Cobbler ~]# systemctl enable rsyncd.service

6 debian相關無需修改

7、修改安裝完成後的root密碼

openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'
random-phrase-here  隨機字元串
your-password-here 密碼

示例

[root@Cobbler ~]# openssl passwd -1 -salt 'CLSN' '123456'
$1$CLSN$LpJk4x1cplibx3q/O4O/K/

管理dhcp

sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings

防止重裝

sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings

修改dhcp模板

sed -i.ori 's#192.168.1#172.16.1#g;22d;23d' /etc/cobbler/dhcp.template

cobbler組配置文件位置

/etc/cobbler/settings

註意:修改完成之後要使用cobbler sync 進行同步,否則不生效。

1.2.6 修改之後

再次檢查語法:

[root@Cobbler ~]# 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
2 : 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.

重啟所有服務

systemctl restart httpd.service
systemctl restart cobblerd.service
systemctl restart dhcpd.service
systemctl restart rsyncd.service
systemctl restart tftp.socket

到此cobbler就安裝完成,下麵進行web界面的操作。

1.3 cobbler的web及界面操作

瀏覽器訪問https://10.0.0.202/cobbler_web

   註意CentOS7中cobbler只支持https訪問。

   賬號密碼預設均為cobbler

 

1.3.1 操作說明--導入鏡像

1)在虛擬機上添加上鏡像

 

2)掛載上鏡像

[root@Cobbler ~]# mount /dev/cdrom  /mnt/
mount: /dev/sr0 is write-protected, mounting read-only

[root@Cobbler ~]# df -h |grep mnt
/dev/sr0        4.3G  4.3G     0 100% /mnt

   3)進行導入鏡像

   選擇Import DVD  輸入Prefix(文件首碼),Arch(版本),Breed(品牌),Path(要從什麼地方導入)

   在導入鏡像的時候要註意路徑,防止迴圈導入。

   信息配置好後,點擊run,即可進行導入。

 

導入過程使用rsync進行導入,三個進程消失表示導入完畢

[root@Cobbler mnt]# ps -ef |grep rsync
root   12026      1  0 19:04 ?   00:00:00 /usr/bin/rsync --daemon --no-detach
root  13554  11778 12 19:51 ?    00:00:06 rsync -a /mnt/ /var/www/cobbler/ks_mirror/CentOS7.4-x86_64 --progress
root   13555  13554  0 19:51 ?     00:00:00 rsync -a /mnt/ /var/www/cobbler/ks_mirror/CentOS7.4-x86_64 --progress
root   13556  13555 33 19:51 ?        00:00:17 rsync -a /mnt/ /var/www/cobbler/ks_mirror/CentOS7.4-x86_64 --progress
root   13590  10759  0 19:52 pts/1    00:00:00 grep --color=auto rsync

查看日誌可以發現右running進程

      日誌位於 Events

 

導入完成後生成的文件夾

[root@Cobbler ks_mirror]# pwd
/var/www/cobbler/ks_mirror

[root@Cobbler ks_mirror]# ls
CentOS7.4-x86_64  config

1.3.2 創建一臺空白虛擬機,進行測試網路安裝

註意:虛擬機的記憶體不能小於2G,網卡的配置要保證網路互通

啟動虛擬機

   啟動虛擬機即可發現會有cobbler的選擇界面

選擇CentOS7.4即可進行安裝,安裝過程與光碟安裝一致,這裡就不在覆述。

1.4 定製化安裝操作系統

1.4.1 添加內核參數

1)查看導入的鏡像,點擊edit

 

2)在內核參數中添加net.ifnames=0 biosdevname=0

   能夠讓顯示的網卡變為eth0 ,而不是CentOS7中的ens33

   修改完成後點擊保存

1.4.2 查看鏡像屬性

 

1.4.3 編寫ks文件

1)創建新的ks文件

 

2)添加ks文件,並配置文件名

      創建完成後點擊Save進行保存

CentOS7  ks配置文件參考

 1 # Cobbler for Kickstart Configurator for CentOS 7 by clsn
 2 install
 3 url --url=$tree
 4 text
 5 lang en_US.UTF-8
 6 keyboard us
 7 zerombr
 8 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
 9 #Network information
10 $SNIPPET('network_config')
11 #network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7
12 timezone --utc Asia/Shanghai
13 authconfig --enableshadow --passalgo=sha512
14 rootpw  --iscrypted $default_password_crypted
15 clearpart --all --initlabel
16 part /boot --fstype xfs --size 1024
17 part swap --size 1024
18 part / --fstype xfs --size 1 --grow
19 firstboot --disable
20 selinux --disabled
21 firewall --disabled
22 logging --level=info
23 reboot
24 
25 %pre
26 $SNIPPET('log_ks_pre')
27 $SNIPPET('kickstart_start')
28 $SNIPPET('pre_install_network_config')
29 # Enable installation monitoring
30 $SNIPPET('pre_anamon')
31 %end
32 
33 %packages
34 @^minimal
35 @compat-libraries
36 @core
37 @debugging
38 @development
39 bash-completion
40 chrony
41 dos2unix
42 kexec-tools
43 lrzsz
44 nmap
45 sysstat
46 telnet
47 tree
48 vim
49 wget
50 %end
51 
52 %post
53 systemctl disable postfix.service
54 %end
View Code  ks文件內容(centos7.x)

1.4.4 自定義安裝系統

1)選擇systems 創建一個新的系統

2)定義系統信息

3)配置全局網路信息

      主機名、網關、DNS

4)配置網卡信息,eth0,eth1

   需要註意,選擇static靜態,

 

   以上的所有配置完成後,點擊Save進行保存

附錄:

   VMware workstation中查看虛擬機mac地址的方法。在虛擬機設置中。

 

 cobbler web 界面說明

1.5 安裝虛擬機

1.5.1 開啟虛擬機

如果之前的設置就顯示安裝進度

 

1.5.2 安裝完成進行檢查

1.6 cobbler使用常見錯誤

1.6.1 cobbler check報錯

[root@Cobbler ~]# cobbler sync
Traceback (most recent call last):
  File "/usr/bin/cobbler", line 36, in <module>
    sys.exit(app.main())
  File "/usr/lib/python2.7/site-packages/cobbler/cli.py", line 662, in main
    rc = cli.run(sys.argv)
  File "/usr/lib/python2.7/site-packages/cobbler/cli.py", line 269, in run
    self.token         = self.remote.login("", self.shared_secret)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1233, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1587, in __request
    verbose=self.__verbose
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1273, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1306, in single_request
    return self.parse_response(response)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1482, in parse_response
    return u.close()
  File "/usr/lib64/python2.7/xmlrpclib.py", line 794, in close
    raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">

解決辦法

systemctl restart httpd.service
systemctl restart cobblerd.service
cobbler check

1.6.2 No space left on device

 

   出現這個錯誤的原因是虛擬機的記憶體不足2G,

   將記憶體調為2G即可(這個錯誤只會出現在CentOS7.3之上)

1.7 附錄cobbler_CentOS6.x_ks配置文件

# Cobbler for Kickstart Configurator for CentOS 6  by clsn
install
url --url=$tree
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
$SNIPPET('network_config')
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw  --iscrypted $default_password_crypted
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot

%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end

%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%end

%post --nochroot
$SNIPPET('log_ks_post_nochroot')
%end

%post
$SNIPPET('log_ks_post')
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$SNIPPET('kickstart_done')
# End final steps
%end
View ks文件參考  centos6.x

1.8 參考文檔

  http://blog.oldboyedu.com/autoinstall-cobbler/

  http://www.zyops.com/autoinstall-cobbler


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • http://blog.csdn.net/mr_green1024/article/details/53222526 ...
  • 簡單總結下Oracle/MySql/SQL Sqlserver這三個資料庫的分頁查詢語句 ...
  • 一、深入學習 group by group by ,分組,顧名思義,把數據按什麼來分組,每一組都有什麼特點。 1、我們先從最簡單的開始: select count(*) from tb1 group by tb1.sex; 查詢所有數據的條數,按性別來分組。這樣查詢到的結果集只有一列count(*) ...
  • oracle資料庫,對於新手來說總會遇到這樣的問題: 相信大家都遇到了這樣的問題,說實話,我曾經就遇到過這樣的問題,但是不好意思問旁邊的技術大咖,都有點懷疑人生了,然後自己在網上去查找原因,結果發現,網上各種版本, 好不容易才找到原因。就在前不久,又有同學問我這個問題,所以我就統一為犯過這個錯誤的同 ...
  • 1.從官網下載MySQL 下載地址:http://dev.mysql.com/downloads/ 2.解壓到想要安裝的目錄(博主安裝到: d:\mysql下) 新增一個my.ini文件,寫入如下內容: 3.以管理員身份運行 win+x(再按a,回車) 一直cd到d:\mysql\bin目錄 輸入命 ...
  • 1》記憶體子系統 1>組件: slab allocator buddy system kswapd pdflush 2>虛擬化環境: PA:進程地址; HA:虛擬機地址; MA:機器地址; 虛擬機轉換:PA >HA GuestOS(來賓主機),OS(宿主主機); Shadow PT:影子列表 3>Me ...
  • ㈠ File類 這個類包裝了一個上傳文件的所有信息。通過它,可以得到上傳文件的文件名、文件大小、擴展名、文件數據等信息。 File類主要提供以下方法: 1、saveAs作用:將文件換名另存。 原型: public void saveAs(java.lang.String destFilePathNa ...
  • 實現基於Keepalived高可用集群網站架構 環境:隨著業務的發展,網站的訪問量越來越大,網站訪問量已經從原來的1000QPS,變為3000QPS,目前業務已經通過集群LVS架構可做到隨時拓展,後端節點已經通過集群技術保障了可用性,但對於前端負載均衡器來說,是個比較大的安全隱患,因為當前端負載均衡 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...