Cobbler介紹
Cobbler是一個Linux服務器快速網絡安裝的服務,並且在通過調整也能夠支持網絡安裝windows,該工具使用python開發,小巧輕便(才15k行python代碼),能夠經過網絡啓動(PXE)的方式來快速安裝、重裝物理服務器和虛擬機,同時還能夠管理DHCP,DNS,TFTP、RSYNC以及yum倉庫、構造系統ISO鏡像。python
Cobbler可使用命令行方式管理,也提供了基於Web的界面管理工具,還提供了API接口,能夠方便二次開發使用。linux
Cobbler客戶端Koan支持虛擬機安裝和操做系統從新安裝,使重裝系統更便捷。ios
官網:http://cobbler.github.io/git
Cobbler各主要組件關係圖
Cobbler設計模式github
1.發⾏版(distro): 表示操做系統。它承載了內核和initrd引導程序
2.存儲庫(repository): 保存yum緩存⽂件的鏡像倉庫
3.配置⽂件(profile):定義操做系統的發⾏版的ks配置⽂件,也包含內核參數信息等
4.系統(system):主要配置⽹絡接⼝, 固定IP以及MAC地址 distro->profile-system(可選)web
Cobbler運⾏流程vim
1.DHCP服務分配IP地址
2.Client(獲取IP地址、Next_server IP地址)
3.Next_server(PXE引導⽂件、啓動Cobbler選擇界⾯)
4.tftp(獲取啓動內核、initrd等⽂件)
5.kickstart (肯定加載項,根據NFS,httpd,ftp等共享)c#
Cobbler原理
使用Cobbler,您無需進行人工干預便可安裝機器。Cobbler設置一個PXE引導環境(它還可使用yaboot支持PowerPC),並控制與安裝相關的全部方面,好比網絡引導服務(DHCP和TFTP)與存儲庫鏡像。當但願安裝一臺新機器時,Cobbler能夠:windows
1.使用一個之前定義的模板來配置DHCP服務(若是啓用了管理DHCP)。
2.將一個存儲庫(yum或rsync)創建鏡像或解壓縮一個媒介,以註冊一個新操做系統。
3.在DHCP配置文件中爲須要安裝的機器建立一個條目,並使用指定的參數(IP和MAC)。
4.在TFTP服務目錄下建立適當的PXE文件。
5.從新啓動DHCP服務來反應新的更改。
6.從新啓動機器以開始安裝(需手工選擇系統安裝菜單)。centos
Cobbler軟件安裝
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 ~]# uname -n Cobbler #關閉selinux防⽕牆 [root@cobbler ~]# setenforce 0 [root@cobbler ~]# getenforce Disabled #關閉firewalld防⽕牆 [root@cobbler ~]# systemctl stop firewalld [root@cobbler ~]# systemctl disable firewalld
2.安裝Cobbler
#安裝epel源 [root@Cobbler ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #安裝cobbler及各個組件 [root@Cobbler /]# yum ×××tall cobbler cobbler-web pykickstart httpd dhcp tftp xinetd -y
注意:用CentOS6部署Cobbler會出現Django一直安裝不上,須要自行下載並安裝該軟件
防止誤重裝系統,若是系統設置爲PXE啓動,可能會出現PXE引導循環
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings
3.Cobbler配置文件概述
#配置文件目錄:/etc/cobbler /etc/cobbler/settings #cobbler主配置文件 /etc/cobbler/iso/ #iso模板配置文件 /etc/cobbler/pxe #pxe模板文件 /etc/cobbler/power #電源配置文件 /etc/cobbler/users.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 /var/lib/cobbler/config #用於存放distros systems profiles等信息配置文件 /var/lib/cobbler/triggers #用於存放用戶自定義的cobbler命令 /var/lib/cobbler/kickstarts #默認存放kickstart文件 /var/lib/cobbler/loaders #存放各類引導程序 #鏡像數據目錄: /var/www/cobbler /var/www/cobbler/ks_mirror #存放全部鏡像文件 /var/www/cobbler/images #導入發行版的kernel和initrd鏡像用於遠程網絡啓動 /var/lib/cobbler/kickstarts #默認存放kickstart文件 /var/lib/cobbler/loaders #存放各類引導程序 /var/www/cobbler/repo_mirror/ #yum倉庫存儲目錄 #日誌目錄:/var/log/cobbler /var/log/cobbler/×××tall.log #客戶端系統安裝日誌 /var/log/cobbler/cobbler.log #cobbler日誌
4.啓動 httpd 以及 CobblerServer
[root@cobbler ~]# systemctl start httpd [root@cobbler ~]# systemctl start cobblerd
5.執⾏ cobbler check 檢測,將錯誤逐⼀進⾏解決
#啓⽤cobbler動態配置,如不啓動則能夠經過⼿動或sed命令替換配置 [root@Cobbler ~]# sed -ri '/allow_dynamic_settings:/c \allow_dynamic_settings: 1' /etc/cobbler/settings [root@Cobbler ~]# systemctl restart cobblerd.service #1.配置CobblerServer地址 [root@Cobbler ~]# cobbler setting edit --name=server --value=10.0.0.202 #2.修改next_server主機IP [root@Cobbler ~]# cobbler setting edit --name=next_server --value=10.0.0.202 #3.配置tftp [root@Cobbler ~]# sed -ri '/disable/c\disable = no' /etc/xinetd.d/tftp [root@Cobbler ~]# systemctl enable xinetd [root@Cobbler ~]# systemctl start xinetd #4.啓動rsync [root@Cobbler ~]# systemctl start rsyncd [root@Cobbler ~]# systemctl enable rsyncd #5.下載⽹絡安裝須要執⾏的⽂件(讓cobbler可以處理x86/x86_64網絡引導) [root@Cobbler ~]# cobbler get-loaders #6.安裝debmirror, 修改/etc/debmirror.conf [root@Cobbler ~]# yum -y ×××tall debmirror [root@Cobbler ~]# sed -ri '/@dists=/c#@dists="sid";' /etc/debmirror.conf [root@Cobbler ~]# sed -ri '/@arches=/c#@arches="i386";' /etc/debmirror.conf #7.配置系統登陸密碼(該密碼默認爲cobbler) #使用openssl passwd -1 -salt '密碼' '隨機干擾碼' 命令生成密碼 [root@Cobbler ~]# openssl passwd -1 -salt 'cobbler' '123456' $1$cobbler$sqDDOBeLKJVmxTCZr52/11 [root@Cobbler ~]# cobbler setting edit --name=default_password_crypted --value='$1$cobbler$sqDDOBeLKJVmxTCZr52/11' #8.電源控制模塊安裝[可選] [root@Cobbler ~]# yum -y ×××tall cman fence-agents #9.開啓dhcp地址分配 #不須要單獨運行DHCP,由Cobbler管理 [root@Cobbler ~]# cobbler setting edit --name=manage_dhcp --value=1
6.執⾏ cobbler check 檢查
[root@Cobbler ~]# systemctl restart cobblerd [root@Cobbler ~]# cobbler check No configuration problems found. All systems go.
7.配置cobbler的dhcp模板[不表明給主機分配⼀定是以下地址]
#配置DHCP,修改cobbler的dhcp模版,這個模板會覆蓋dhcp自己的配置文件/etc/dhcp/dhcpd.conf [root@Cobbler ~]# vim /etc/cobbler/dhcp.template subnet 10.0.0.0 netmask 255.255.255.0 { #子網範圍 option routers 10.0.0.2; #網關地址 option domain-name-servers 10.0.0.2; #DNS地址 option subnet-mask 255.255.255.0; #掩碼 range dynamic-bootp 10.0.0.100 10.0.0.120; #分配地址的範圍 default-lease-time 21600; max-lease-time 43200; next-server $next_server; #調用settings配置文件中的next_server 參數
8.同步 CobblerServer 全部配置信息
#重啓並同步cobblerServer [root@Cobbler ~]# systemctl restart xinetd [root@Cobbler ~]# systemctl restart cobblerd [root@Cobbler ~]# cobbler sync
提示:每次修改完Cobbler對應的配置,都要同步下cobbler數據
[root@Cobbler ~]# cobbler sync
Cobbler基礎應用
1.cobbler 使⽤第⼀步須要定義 distro
若是已經有 OS 鏡像安裝⽂件, 使⽤ improt 導⼊⽅式。
#1.掛載CentOS7系統ISO光盤 [root@Cobbler ~]# mount /dev/cdrom /mnt/ #2.import導⼊系統鏡像,以及鏡像樹 [root@Cobbler ~]# cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64 #3.查看cobbler distro [root@Cobbler cobbler]# cobbler distro list CentOS-7-x86_64 # --path 鏡像路徑,即從哪裏導入 # --name 爲導入的鏡像定義名稱 # --arch 指定導入的鏡像是32位、64位、ia64, 目前支持的選項有: x86│x86_64│ia64
2.cobbler 默認 profile ⽆法滿⾜運維需求, 需profile基礎上指定 kickstart⾃定義配置⽂件(KS文件在該文章的結尾)。
#1.移除默認的profile配置 [root@Cobbler ~]# cobbler profile remove --name=CentOS-7-x86_64 #2.添加新的profile配置,並指定kickstart應答⽂件位置 [root@Cobbler \]# cobbler profile add \ --name=CentOS-7-x86_64-web \ --distro=CentOS-7-x86_64 \ --kickstart=/var/lib/cobbler/kickstarts/Centos7-x86_64.cfg #3.驗證Kickstart配置文件有效性 cobbler validateks #附: 若是想修改kickstart⽂件位置 [root@Cobbler ~]# cobbler profile edit \ --name=CentOS-7-x86_64-web \ --kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64_Web.cfg
注意:distro能夠認爲是一個系統盤,profile則爲安裝的規則,多個profile能夠指定一個distro
3.因爲 CentOS7
系統⽹卡名是 eno... ,爲了統⼀標準, 修改成常⽤ eth0 管理(這裏仍是以默認的profile來演示)
注意是CentOS7
才須要下⾯的步驟CentOS6不須要。
#1.修改centos7系統profile安裝時的內核 [root@Cobbler ~]# cobbler profile edit --name=CentOS-7-x86_64-web --kopts='net.ifnames=0 biosdevname=0' #2.也能夠在kickstart配置⽂件中添加內核參數[推薦] bootloader --location=mbr --append="net.ifnames=0 biosdevname=0"
4.啓動同⽹段服務器, 系統分配dhcp後會進⼊Cobbler安裝界⾯, 進⾏系統選擇後, 安裝便可。
注意:CentOS7安裝至少2G以上內存
ks文件:Centos7-x86_64.cfg
# Cobbler for Kickstart Configurator for CentOS 7 by jason ×××tall url --url=$tree text lang en_US.UTF-8 keyboard us zerombr bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #Network information $SNIPPET('network_config') #network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7 timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 rootpw --iscrypted $default_password_crypted clearpart --all --initlabel part /boot --fstype xfs --size 1024 part swap --size 1024 part / --fstype xfs --size 1 --grow firstboot --disable selinux --disabled firewall --disabled logging --level=info reboot %pre $SNIPPET('log_ks_pre') $SNIPPET('kickstart_start') $SNIPPET('pre_×××tall_network_config') # Enable ×××tallation monitoring $SNIPPET('pre_anamon') %end %packages @^minimal @compat-libraries @core @debugging @development bash-completion chrony dos2unix kexec-tools lrzsz nmap sysstat telnet tree vim wget %end %post systemctl disable postfix.service %end