cobbler環境搭建+IPMI/PXE遠端裝機
自動裝機
- 需求
運維自動化在生產環境中佔據著舉足輕重的地位,尤其是面對幾百臺、幾千臺甚至幾萬臺的伺服器時,基於Cobbler實現多版本作業系統批量部署,面對生產環境中不同伺服器的需求。
- Cobbler工作流程
server端:
第一步,啟動Cobbler服務
第二步,進行Cobbler錯誤檢查,執行cobbler check命令
第三步,進行配置同步,執行cobbler sync命令
第四步,複製相關啟動檔案檔案到TFTP目錄中
第五步,啟動DHCP服務,提供地址分配
第六步,DHCP服務分配IP地址
第七步,TFTP傳輸啟動檔案
第八步,Server端接收安裝資訊
第九步,Server端傳送ISO映象與Kickstart檔案
Client端:
第一步,客戶端以PXE模式啟動
第二步,客戶端獲取IP地址
第三步,通過TFTP伺服器獲取啟動檔案
第四步,進入Cobbler安裝選擇介面
第五步,客戶端確定載入資訊
第六步,根據配置資訊準備安裝系統
第七步,載入Kickstart檔案
第八步,傳輸系統安裝的其它檔案
第九步,進行安裝系統
- Cobbler安裝前準備
安裝Cobbler之前先檢視一下基礎環境:
#cat/etc/redhat-release (檢視系統版本)
#uname-r (核心版本)
#getenforce (檢測selinux是否關閉,必須要關閉)
關閉selinux方法:
#vim/etc/selinux/config
setenforce 0
如上,“SELINUX”引數有“enforcing、permissive、disabled”,將selinux關閉,需要將引數至為“disabled”即可,然後“# reboot”系統。
還需要關閉防火牆:
# systemctl stop firewalld (關閉防火牆)
# iptables-L (檢視是否關閉)
systemctl stop firewalld
systemctl disable firewalld.service
檢視本機的IP:
注:若是線上安裝,則需要使用到epel源,yum源替換成阿里源或是網易源也比較快點。
# curl-o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo (替換yum源為阿里源)
# curl-o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo (新增epel源)
yum -y install http://mirrors.163.com/centos/7/extras/x86_64/Packages/epel-release-7-9.noarch.rpm
AND
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
以上就是準備工作,主要就是關閉防火牆,檢視主機IP。
- 在cobbler server上安裝cobbler
- 安裝Cobbler
yum install cobbler cobbler-web tftp* rsync xinetd http* syslinux dhcp* pykickstart
rpm -ql cobbler # 檢視安裝的檔案,下面列出部分。
/etc/cobbler # 配置檔案目錄
/etc/cobbler/settings # cobbler主配置檔案,這個檔案是YAML格式,Cobbler是python寫的程式。
/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日誌
-
- 檢測Cobbler
先啟動apache和cobbler服務,且設為開機啟動:
#systemctl enable xinetd && systemctl start xinetd
#systemctl enable httpd.service && systemctl start httpd.service
#systemctl enable cobblerd.service && systemctl start cobblerd.service
檢視apache和cobbler服務是否正確啟動:
#systemctl status httpd.service cobblerd.service
#cobbler check
針對以上檢測出來的問題,解決如下:
1) The 'server' field in/etc/cobbler/settings must be set to something other than localhost, orkickstarting features will not work. This should be a resolvable hostname or IP for the boot server asreachable by all machines that will use it.
解決方法:修改/etc/cobbler/settings,將server對應的IP改為cobbler安裝主機的IP,即將server: 127.0.0.1改成server: 192.168.139.153,切記切記,server: 後面有空格!!
2) For PXE to be functional,the 'next_server' field in /etc/cobbler/settings must be set to something otherthan 127.0.0.1, and should match the IP of the boot server on the PXE network.
解決方法:修改/etc/cobbler/settings,將next_server對應的IP改為cobbler安裝主機的IP,即將server: 127.0.0.1改成server: 192.168.139.153
3) change 'disable' to 'no'in /etc/xinetd.d/tftp
解決方法:將/etc/xinetd.d/tftp中disable對應值改成no。
4) some network boot-loadersare missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' todownload them, or, if you only want to handle x86/x86_64 netbooting, you mayensure that you have installed a *recent* version of the syslinux packageinstalled 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 'cobblerget-loaders' command is the easiest way to resolve these requirements.
解決方法:執行cobbler get-loaders,此時是線上安裝,本文使用離線安裝
get-loaders的檔案見“附件二”。具體步驟見下一節。
5) enable and startrsyncd.service with systemctl
解決方法:執行systemctl enable rsyncd;systemctl start rsyncd
6) debmirror package is notinstalled, it will be required to manage debian deployments and repositories
解決方法:debian的包,可以不下載,不影響使用cobbler。
7) The default password usedby the sample templates for newly installed machines (default_password_cryptedin /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
解決方法:給密碼加鹽,把生成的密碼串新增到/etc/cobbler/settings裡。具體步驟見下一節。
8) fencing tools were notfound, and are required to use the (optional) power management features.install cman or fence-agents to use them
解決辦法:電源管理工具,下載fence-agents
yum-y install fence-agents
暫時不安裝,也不影響cobbler的使用。
以上檢測出來的問題,除了6和8不做處理,其他的問題在下面給出具體解決步驟。
-
- Cobbler修改配置檔案
首先修改"/etc/cobbler/settings"和" /etc/xinetd.d/tftp"倆檔案:
# sed-i 's/server: 127.0.0.1/server: 172.16.1.202/' /etc/cobbler/settings (解決問題1)
# sed-i 's/next_server: 127.0.0.1/next_server: 172.16.1.202/' /etc/cobbler/settings (解決問題2)
# 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 'cobbler' 'cobbler'`\"#" /etc/cobbler/settings (解決問題7,這裡設定了密碼為"cobbler",此處就是按裝系統完的密碼)
# sed -i 's#yes#no#' /etc/xinetd.d/tftp (解決問題3)
或是直接修改settings和tftp檔案:
“# vim/etc/cobbler/settings”
server: 主機IP (在384行)
next_server:主機IP(在272行)
default_password_crypted:(加鹽的密碼)(在101行)
生成加鹽的密碼(這個設定密碼為'cobbler'):
#openssl passwd -1 -salt 'cobbler' 'cobbler'
將該加鹽的密碼全複製拷貝到settings檔案default_password_crypted處:
修改" /etc/xinetd.d/tftp"檔案:
# vim/etc/xinetd.d/tftp
將disable的引數至為“no”,如下:
下面修改cobbler配置的dhcp模板:
#vim /etc/cobbler/dhcp.template
需要修改的是其路由、域名、子網、IP分配以及網段。
檢視路由、域名:
然後修改dhcp.template檔案,如圖紅框標出:
注:
subnet 192.168.139.0 netmask 255.255.255.0 { #設定網段
option routers 192.168.139.2; #設定閘道器
option domain-name-servers 192.168.139.2; #設定dns伺服器地址
option subnet-mask 255.255.255.0; #設定子網掩碼
range dynamic-bootp 192.168.139.100 192.168.139.254; #設定dhcp伺服器IP地址租用的範圍
下面解決問題5,同步服務開啟,並設定開機啟動:
#systemctl enable rsyncd && systemctl start rsyncd
下面解決問題4,由於需要執行cobbler get-loaders,線上載入資源,本文離線狀態下已經準備好了資源lib包,
這些檔案都應該存放在“/var/lib/cobbler/loaders”
只需要將這些檔案拷貝過去,同名覆蓋即可。
上述問題基本解決,下面重啟服務,再檢測一次:
systemctl restart tftp.socket
systemctl restart xinetd.service
systemctl restart httpd.service
systemctl restart cobblerd.service
systemctl restart rsyncd
然後再執行cobbler監測:
#cobbler check
注:上面兩個包可以省略,不影響生產使用;
下面就是cobbler同步:
#cobbler sync
同步之後,無任何問題,最後顯示"***TASK COMPLETE****"。
-
- 開機啟動
# 啟動相關服務並設定開機啟動(可選) 與第二種方法二選一
chkconfig httpd on
chkconfig xinetd on
chkconfig cobblerd on
chkconfig dhcpd on
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/cobblerd restart
/etc/init.d/dhcpd restart
# 編寫Cobbler相關服務啟動指令碼(可選)
cat >>/etc/init.d/cobbler<<EOF
#!/bin/bash
# chkconfig: 345 80 90
# description:cobbler
case \$1 in
start)
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start
;;
stop)
/etc/init.d/httpd stop
/etc/init.d/xinetd stop
/etc/init.d/dhcpd stop
/etc/init.d/cobblerd stop
;;
restart)
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/cobblerd restart
;;
status)
/etc/init.d/httpd status
/etc/init.d/xinetd status
/etc/init.d/dhcpd status
/etc/init.d/cobblerd status
;;
sync)
cobbler sync
;;
*)
echo "Input error,please in put 'start|stop|restart|status|sync'!"
exit 2
;;
esac
EOF
# chmod +x /etc/init.d/cobbler
# chkconfig cobbler on
-
- IPMI的配置
關於IPMI的配置,因為要遠端安裝,在DELL伺服器中,IPMI這個工具還是很給力的,三臺機器都需要設定IPMI,因為cobbler server有作業系統,所以可以在系統中通過ipmitool命令進行設定,而兩臺客戶機因為還沒有作業系統,所以要提前設定好ipmi,兩臺客戶機如下設定:
設定IPMI地址及使用者密碼,開機按照提示按crtl+E進入IPMI配置介面
選擇LAN Parameters,設定該客戶機的IPMI地址是172.16.6.200
然後選擇LAN User Configuration,設定root密碼,然後儲存退出。
為了在遠端能抓到客戶端的啟動過程,還需要設定BIOS,開機按F2進入BIOS進行設定
選擇Integrated Devices,因為只有一塊網絡卡,所以設定從NIC1 啟動PXE
選擇Serial Communication,設定串列埠,然後儲存退出。
- Cobbler的命令列管理
cobbler
usage
=====
cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ...
[add|edit|copy|getks*|list|remove|rename|report] [options|--help]
cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version|signature|get-loaders|hardlink> [options|--help]
[[email protected] ~]# cobbler import --help # 匯入映象
Usage: cobbler [options]
Options:
-h, --help show this help message and exit
--arch=ARCH OS architecture being imported
--breed=BREED the breed being imported
--os-version=OS_VERSION
the version being imported
--path=PATH local path or rsync location
--name=NAME name, ex 'RHEL-5'
--available-as=AVAILABLE_AS
tree is here, don't mirror
--kickstart=KICKSTART_FILE
assign this kickstart file
--rsync-flags=RSYNC_FLAGS
pass additional flags to rsync
cobbler check 核對當前設定是否有問題
cobbler list 列出所有的cobbler元素
cobbler report 列出元素的詳細資訊
cobbler sync 同步配置到資料目錄,更改配置最好都要執行下
cobbler reposync 同步yum倉庫
cobbler distro 檢視匯入的發行版系統資訊
cobbler system 檢視新增的系統資訊
cobbler profile 檢視配置資訊
-
- 掛載和系統的匯入
先將系統的映象檔案拷貝到“/opt/”目錄下(目錄自己隨意),本次選用的是centos7.2的Minimal版本,如下:
然後將該iso掛載,然後檢視掛載:
#mount -t iso9660 -o loop /opt/CentOS-7-x86_64-Minimal-1511.iso /mnt/
#df -h
掛載成功。
系統資料匯入:
#cobbler import --path=/mnt/ --name=centos7.2-Minimal --arch=x86_64
無報錯,則系統資料匯入成功。
可以檢視“/var/www/cobbler/ks_mirror/centos7.2-Minimal-x86_64/”下匯入的資料是否存在:
列出匯入後的資訊配置:
#cobblerlist
#cobbler profile report(可以檢視更詳細的配置資訊)
從該資訊看出,kickstart的啟動是使用了sample_end.ks,進入目錄下檢視:
#ll /var/lib/cobbler/kickstarts/
若要定製化安裝系統,可以上傳自己寫的ks檔案。
預設的“sample_end.ks”已經滿足安裝的需求。本次不上傳,不修改。
或者
編輯profile,修改關聯的ks檔案
cobbler profile edit --name=centos7.2-Minimal --arch=x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.2-Minimal.cfg
注:修改安裝系統的核心引數,在CentOS7系統有一個地方變了,就是網絡卡名變成eno16777736這種形式,但是為了運維標準化,
需要將它變成我們常用的eth0,因此使用下面的引數。但要注意是CentOS7才需要下面的步驟,CentOS6不需要。
cobbler profile edit --name=CentOS-7.1-x86_64 --kopts='net.ifnames=0 biosdevname=0'
下面是驗證cobbler:
#cobbler validateks
至此,安裝配置匯入系統資料以及驗證完成。
-
- 定製化系統(安裝kickstart)
yum -y install *kickstart*
system-config-kickstart #自定義配置kickstart
注:下圖借用網上的圖片使用
與ks檔案的對比
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Reboot after installation
Reboot
#安裝完自動重啟
# Root password
rootpw --iscrypted $1$vVvwaH.E$laQ2SHKj2ej6/1C.YzU7Q.
#root密碼
# System timezone
timezone Africa/Abidjan
#時間
# Use network installation
url --url=ftp://192.168.65.2/
FTP網路路徑
# System language
lang en_US
#使用的語言
# Firewall configuration
firewall –disabled
#關閉防火牆
# Network information
network --bootproto=dhcp --device=eth0
#新建網絡卡
# System authorization information
auth --useshadow --passalgo=md5
#使用者加密方式
# Use graphical install
Graphical
#圖形介面
# Run the Setup Agent on first boot
firstboot –enable
#圖形介面開機啟動
# SELinux configuration
selinux --disabled
#關閉selinux
# System bootloader configuration
bootloader --location=mbr
#安裝引導項
# Clear the Master Boot Record
Zerombr
#這個還不知道
# Partition clearing information
clearpart --all
#這個還不知道,但一定要有
# Disk partitioning information
part swap --fstype="swap" --size=2048
#配置swp分割槽
part /boot --fstype="xfs" --size=300
#配置boot分割槽
part / --fstype="xfs" --size=18131
#配置根/分割槽
%pre
--password=$6$d5.YwnmIoKU5KqgX$h1jmKofHk28yYz0LyD.HiOgOnK7F0.arKFn6mcwMofrNtCAeGWSq5pzcgyUbFBETA3EC.QVGZKMAbjpuMrjbE1 --iscrypted --gecos="ream"
#新建使用者ream並設定密碼
%end
%post
/usr/sbin/adduser ream
/usr/sbin/usermod -p '$1$dq/RUYXu$KTztpGgYyUmDur05zgWZt1' ream
/usr/bin/chfn -f "ream" ream
mv /etc/rc.d/rc.local /etc/rc.d/rc.local.00
echo '#!/bin/bash' > /etc/rc.d/rc.local
ln -s ../rc.local /etc/rc.d/rc5.d/S99rclocal
chmod 755 /etc/rc.d/rc.local
echo 'mkdir -p /var/log/vmware' >> /etc/rc.d/rc.local
echo 'exec 1> /var/log/vmware/rc.local.log' >> /etc/rc.d/rc.local
echo 'exec 2>&1' >> /etc/rc.d/rc.local
echo 'set -x' >> /etc/rc.d/rc.local
echo 'echo Installing VMware Tools' >> /etc/rc.d/rc.local
echo 'set -x' >> /etc/rc.d/rc.local
echo '/bin/eject sr0 || /bin/true' >> /etc/rc.d/rc.local
echo '/bin/eject sr1 || /bin/true' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'guest.upgrader_send_cmd_line_args --default\' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'upgrader.setGuestFileRoot /tmp\' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'toolinstall.installerActive 1\' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'toolinstall.installerActive 100\' >> /etc/rc.d/rc.local
echo 'rm -f /etc/rc.d/rc.local' >> /etc/rc.d/rc.local
echo 'rm -f /etc/rc.d/rc5.d/S99rclocal' >> /etc/rc.d/rc.local
echo 'mv /etc/rc.d/rc.local.00 /etc/rc.d/rc.local' >> /etc/rc.d/rc.local
/bin/echo done
%end
%packages
@base
@core
@guest-desktop-agents
binutils
chrony
ftp
gcc
kernel-devel
make
open-vm-tools
patch
python
%end
#上面這些配置%post 到 %end 可以到~/ anaconda-ks.cfg那裡看
配置好後儲存到/var/ftp/pub/ks.cfg
- 安裝系統
首次安裝作業系統
1、 將需要安裝系統的伺服器,以下簡稱客戶端,放到和cobbler服務端同樣的子網中。
2、 啟動cobbler服務端上的cobblerd等相關服務。
3、 從PXE啟動客戶端主機。
(1) 客戶端尋找設定DHCP。
(2) 客戶端從PXE啟動。
(3) 客戶端進入cobbler profile選擇介面,使用者可以根據應用的不同,選擇不同的cobbler配置檔案。
-
- 設定PXE開機啟動順序
注:在需要裝機的伺服器設定BIOS開機啟動順序為PXE啟動。
系統就安裝完成了;
-
- PXE動項修改
預設的情況下PXE的啟動項是Local(如下圖)。
但是根據需求,無需人工干預,自動安裝,這時候,只需要將local從啟動項刪除即可。方法如下:
首先找到PXE載入的選單選項在哪,路徑“/var/lib/tftpboot/pxelinux.cfg”下找到“default”檔案,內容如下:
如上,可以看出MENU選單有倆個選項。這裡刪除“LABEL local”的內容,並修改“ONTIMEOUT”值為我們想要的啟動項即可,如下:
如上圖,只留下了“LABELcentos7.2-Minimal-x86_64”這一個啟動項,“ONTIMEOUT ”改為了“centos7.2-Minimal-x86_64”,“MENUTITLE”可以修改成自定義內容。
修改後儲存即可,不要重啟cobblerd服務,也不要執行“cobbler sync”同步。修改後的PXE啟動頁面如下:
預設的20秒超時一過就可以進入該選項進行自動安裝。這樣就可以做到了無人工干預的自動無人值守安裝需求。
-
- IPMI遠端修改BIOS資訊
開始安裝遠端客戶機,在cobbler server的eth0上繫結IPMI的網段地址。
ifconfigeth0:1
172
.16.6.252netmask
255
.255.255.0
然後開兩個視窗分別執行如下IPMI命令
-
- 定製化安裝
注:指定某臺伺服器使用指定ks檔案=》安裝某種作業系統,區分一臺伺服器的最簡單的方法就是物理MAC地址。
cobbler system add --name=oldboy --mac=00:0C:29:7F:2F:A1 --profile=CentOS-7.1-x86_64 -ip-address=10.0.0.111 --subnet=255.255.255.0 --gateway=10.0.0.2 --interface=eth0 --static=1 --hostname=oldboy.example.com --name-servers="114.114.114.114 8.8.8.8"
# --name 自定義,但不能重複
# 檢視定義的列表
[[email protected] ~]# cobbler system list
oldboy
[[email protected] ~]# cobbler sync
再次開機安裝就不再詢問選擇了,直接安裝。
-
- 指定裝機網段
新增指定客戶機系統配置到Cobbler
- 指定一個網段使用特定的裝機配置
cobbler system add --name=test_000 --ip=192.168.1.0/24 --profile=CentOS-5.9-x86_64
- 新增一個指定伺服器的裝機配置
指定伺服器的mac地址,並設定好主機名、IP地址等資訊,需要提示知道伺服器MAC地址,根據MAC應用到具體機器上。
還可以指定ks引數。–kickstart=/var/lib/cobbler/kickstarts/webserver.ks
cobbler system add --name=test_001 --hostname=test_001 --mac=00:0C:29:E3:81:32 --interface=eth0 --ip-address=192.168.1.123 --subnet=255.255.255.0 --gateway=192.168.1.1 --static=1 --profile=Centos-5.9-x86_64
- 修改system配置
機器IP地址變更為192.168.21.118
cobbler system add --name=test_001 --ip=192.168.21.118
變更system配置名稱
cobbler system rename --name=test001 --newname=abc
- 刪除system配置
需要刪除的profile名稱為test_001
cobbler system remove --name=test_001
- 檢視定義的系統列表
cobbler system list
test_001
設定好後,需要執行排錯和同步
cobbler check
cobbler sync
-
- 自動化重灌系統
- 安裝epel源(先配置好yum)
yum install epel-release -y
- 安裝koan工具
yum install koan -y
- 檢視可以重灌的列表(還可以裝別版本的系統,不過需要在cobbler server製作iso)
koan --server 10.0.0.134 --list=profiles
- 使用Centos-7.2-x86_64重灌系統
koan --replace-self --server=10.0.0.134 --profile=Centos-7.2-x86_64
-
- 防止誤重灌系統
防止誤重灌系統,選項:pxe_just_once
cobbler setting edit --name=pxe_just_once --value=1
該選項作用:
--防止機器迴圈安裝配置始終從網路引導
--啟用此選項,機器回傳Cobbler安裝完成
--Cobbler將系統物件的netboot標誌更改為false,強制要求機器從本地磁碟引導。
-
- 指令碼資訊