- DHCP服務(wù)
- DHCP實(shí)現(xiàn)
- PXE(Preboot Excution Environment) 預(yù)啟動(dòng)執(zhí)行環(huán)境
- Cobbler
一胆数、DHCP服務(wù)
DHCP (Dynamic Host Configuration Protocol)
動(dòng)態(tài)主機(jī)配置協(xié)議赶么,是一種局域網(wǎng)協(xié)議荣堰,屬于UDP協(xié)議應(yīng)用:為局域網(wǎng)內(nèi)的主機(jī)分配ip地址地沮,同時(shí)也作為內(nèi)網(wǎng)的管理手段
使用場(chǎng)景:自動(dòng)化安裝系統(tǒng)攀例,解決ipv4地址不足的問題
-
DHCP報(bào)文:共有八種報(bào)文
- DHCP DISCOVER:客戶端到服務(wù)器
- DHCP OFFER :服務(wù)器到客戶端
- DHCP REQUEST:客戶端到服務(wù)器
- DHCP ACK :服務(wù)器到客戶端
- DHCP NAK:服務(wù)器到客戶端,通知用戶無法分配合適的IP地址
- DHCP DECLINE :客戶端到服務(wù)器镰禾,指示地址已被使用
- DHCP RELEASE:客戶端到服務(wù)器皿曲,放棄網(wǎng)絡(luò)地址和取消剩余的租約時(shí)間
- DHCP INFORM:客戶端到服務(wù)器,客戶端如果需要從DHCP服務(wù)器端獲取更為詳細(xì)的配置信息,則發(fā)送Inform報(bào)文向服務(wù)器進(jìn)行請(qǐng)求吴侦,極少用到
-
續(xù)租:
- 50% :租賃時(shí)間達(dá)到50%時(shí)續(xù)租屋休,向DHCP服務(wù)器發(fā)送新的DHCP REQUEST請(qǐng)求。如果dhcp服務(wù)沒有拒絕的理由备韧,則回應(yīng)DHCP ACK信息博投。當(dāng)DHCP客戶端收到該應(yīng)答信息后,就重新開始新的租用周期
- 87.5%:如果之前DHCP Server沒有回應(yīng)續(xù)租請(qǐng)求盯蝴,等到租約期的7/8時(shí)毅哗,主機(jī)會(huì)再發(fā)送一次廣播請(qǐng)求
*DHCP服務(wù)必須基于本地,
DHCP服務(wù)器一般來說應(yīng)該與需要DHCP服務(wù)的客戶端處于同一個(gè)網(wǎng)段中
這是因?yàn)镈HCP服務(wù)過程基于廣播捧挺,而廣播只能在同一個(gè)網(wǎng)段內(nèi)傳送
-
實(shí)現(xiàn)跨網(wǎng)段的DHCP服務(wù)
- 需要在客戶機(jī)網(wǎng)段指定一臺(tái)代理(dhcrelay:中繼)負(fù)責(zé)客戶機(jī)與另一個(gè)網(wǎng)段的DHCP服務(wù)器的通信虑绵,實(shí)現(xiàn)IP地址的分配
- 符合RFC 1542 Compliant Routers標(biāo)準(zhǔn)的路由器可以直接實(shí)現(xiàn)中繼的功能
二、DHCP實(shí)現(xiàn)
Linux DHCP協(xié)議的實(shí)現(xiàn)程序:dhcp, dnsmasq(包含dhcp, dns功能)
端口:
dhcp_server: 67/udp
dhcp_client: 68/udp-
配置DHCP服務(wù)器端
- DHCP服務(wù)的配置文件位于:/etc/dhcp/dhcpd.conf闽烙,打開文件后如下圖:
提示模板文件/usr/share/doc/dhcp*/dhcpd.conf.sample和幫助參考位置:man 5 dhcpd.conf
直接賦值模板文件覆蓋配置文件翅睛,在模板基礎(chǔ)上修改配置
cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
- 修改配置文件:
vim /etc/dhcp/dhcpd.conf
核心配置內(nèi)容包含在subnet條目中,這里的配置屬于全局配置
基本格式如下:
subnet SUBNET_IP netmask NETMASK_IP { range START_IP END_START; 其余設(shè)置項(xiàng) }
- 例如:DHCP服務(wù)器本機(jī)IP為192.168.136.229黑竞,子網(wǎng)掩碼:225.225.225.0捕发,分配的地址庫(kù)范圍:192.168.136.10-192.168.136.30,則配置文件格式如下:
subnet 192.168.136.0 netmask 225.225.225.0 { range 192.168.136.10 192.136.136.30 }
- 配置好后很魂,啟動(dòng)dhcp服務(wù)
service dhcpd start
扎酷,在另一臺(tái)同網(wǎng)段主機(jī)上可以看到被分配的ip地址,從192.168.136.10/24開始分配
- 可以查看/var/lib/dhcpd/dhcpd.leases文件內(nèi)容遏匆,查詢DHCP服務(wù)器地址分配記錄
其它配置選項(xiàng):
filename:指明引導(dǎo)文件名稱(用于網(wǎng)絡(luò)安裝系統(tǒng))
next-server:提供引導(dǎo)文件的服務(wù)器IP地址(用于網(wǎng)絡(luò)安裝系統(tǒng))檢查配置文件語(yǔ)法
service dhcpd configtestDHCP客戶端(dhclient)
自動(dòng)獲取的IP信息文件:/var/lib/dhclient目錄下法挨,可以看到被分配的地址谁榜、DHCP服務(wù)器、分配的租期時(shí)間等信息
三凡纳、PXE(Preboot Excution Environment) 預(yù)啟動(dòng)執(zhí)行環(huán)境
(一)簡(jiǎn)介
- 基于C/S架構(gòu)設(shè)計(jì)
- 支持遠(yuǎn)程主機(jī)通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像窃植,并由此支持通過網(wǎng)絡(luò)啟動(dòng)操作系統(tǒng)
(二)工作原理
- Client向PXE Server上的DHCP發(fā)送IP地址請(qǐng)求消息,DHCP檢測(cè)Client是否合法(主要是檢測(cè)Client的網(wǎng)卡MAC地址)荐糜,如果合法則返回Client的IP地址巷怜,同時(shí)將啟動(dòng)文件pxelinux.0的位置信息一并傳送給Client
- Client向PXE Server上的TFTP發(fā)送獲取pxelinux.0請(qǐng)求消息,TFTP接收到消息之后再向Client發(fā)送pxelinux.0大小信息暴氏,試探Client是否滿意延塑,當(dāng)TFTP收到Client發(fā)回的同意大小信息之后,正式向Client發(fā)送pxelinux.0
- Client執(zhí)行接收到的pxelinux.0文件
- Client向TFTP Server發(fā)送針對(duì)本機(jī)的配置信息文件(在TFTP 服務(wù)的pxelinux.cfg目錄下)偏序,TFTP將配置文件發(fā)回Client页畦,繼而Client根據(jù)配置文件執(zhí)行后續(xù)操作。
- Client向TFTP發(fā)送Linux內(nèi)核請(qǐng)求信息研儒,TFTP接收到消息之后將內(nèi)核文件發(fā)送給Client
- Client向TFTP發(fā)送根文件請(qǐng)求信息豫缨,TFTP接收到消息之后返回Linux根文件系統(tǒng)
- Client啟動(dòng)Linux內(nèi)核
- Client下載安裝源文件,讀取自動(dòng)化安裝腳本
(三)PXE自動(dòng)化安裝CentOS 7(CentOS7作為HTTP端朵、DHCP好芭、TFTP服務(wù)器)
(1)安裝前準(zhǔn)備關(guān)閉SELinux和防火墻,DHCP服務(wù)器設(shè)置為靜態(tài)IP
-
(2)安裝相關(guān)軟件包httpd, tftp-server, dhcp, syslinux
- httpd服務(wù)提供yum源服務(wù)冲呢,
- tftp服務(wù)器為客戶機(jī)提供安裝系統(tǒng)所需的啟動(dòng)文件舍败、啟動(dòng)菜單、內(nèi)核文件敬拓、偽文件系統(tǒng)
- dhcp服務(wù)器為客戶機(jī)提供IP地址邻薯,并將tftp服務(wù)器的地址提供給客戶機(jī)
- 啟動(dòng)文件、啟動(dòng)菜單需要安裝syslinux軟件包后獲得
- 執(zhí)行命令:
yum install httpd tftp-server dhcp syslinux
-
(3)配置yum源服務(wù)
- 將httpd服務(wù)設(shè)置為開機(jī)自啟動(dòng):
systemctl enable httpd
- 打開httpd服務(wù):
systemctl start httpd
- 配置yum源1:建立centos7目錄
mkdir -p /var/www/html/centos/7
- 配置yum源2:復(fù)制centos7光盤文件內(nèi)容至centos7目錄下乘凸,這里將光盤掛載至目錄下厕诡,效果與前者相同,實(shí)際中應(yīng)該復(fù)制至硬盤营勤,保證系統(tǒng)安裝執(zhí)行效率
mount /dev/sr0 /var/www/html/centos/7
- 將httpd服務(wù)設(shè)置為開機(jī)自啟動(dòng):
-
(4)準(zhǔn)備kickstart文件
- 準(zhǔn)備桌面和最小化安裝兩份文件灵嫌,可以根據(jù)/root/anaconda-ks.cfg文件修改
注意:使用system-config-kickstart時(shí),CentOS7環(huán)境下可能出現(xiàn)無法選擇軟件包的情況葛作,此時(shí)需要將yum源配置文件的首個(gè)源配置信息的源標(biāo)識(shí)符改名為"development"寿羞,即可正常選擇軟件包
準(zhǔn)備的kickstart文件:ks7.cfg為桌面安裝使用,ks7-mini為最小化安裝使用
mkdir /var/www/html/ksdir
建立kickstart文件目錄
cp /root/anaconda-ks.cfg /var/www/html/ksdir/ks7.cfg
復(fù)制模板
cp /root/anaconda-ks.cfg /var/www/html/ksdir/ks7-mini.cfg
復(fù)制模板兩份kickstart文件示例如下:
vim /var/www/html/ksdir/ks7.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # X Window System configuration information xconfig --startxonboot # Keyboard layouts # old format: keyboard us # new format: keyboard --vckeymap=us --xlayouts='us' # Root password rootpw --iscrypted $1$B2Ve3zbv$S2d5TSE.8Iwbo4o3BoRxM1 # Use network installation url --url="http://192.168.136.230/centos/7" # System language lang en_US user --name=hellopeiyang --password=$6$vFs7gFIqwNrxjVEx$UwrqEc4BanhssQpLa./g/ySepGSRLNll65NvI/PSJuavDVQJvVXukrUmHPHDX7tVyWb4uXlyEXBTYmVD0KxLK/ --iscrypted # Firewall configuration firewall --disabled # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text # Run the Setup Agent on first boot firstboot --enable # SELinux configuration selinux --disabled # System services services --disabled="chronyd" ignoredisk --only-use=sda # Network information network --bootproto=dhcp --device=ens33 --onboot=on # Reboot after installation reboot # System timezone timezone Asia/Shanghai --nontp # System bootloader configuration bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all # Disk partitioning information part /app --fstype="xfs" --ondisk=sda --size=51200 part / --fstype="xfs" --ondisk=sda --size=51200 part swap --fstype="swap" --ondisk=sda --size=2048 part /boot --fstype="xfs" --ondisk=sda --size=1024 %post systemctl enable autofs rm -rf /etc/yum.repos.d/* cat > /etc/yum.repos.d/base.repo <<eof [base] name=base baseurl=file:///misc/cd gpgcheck=0 eof %end %packages @^graphical-server-environment @base @core @desktop-debugging @dial-up @fonts @gnome-desktop @guest-agents @guest-desktop-agents @hardware-monitoring @input-methods @internet-browser @multimedia @print-client @x11 wodim autofs %end
vim /var/www/html/ksdir/ks7-mini.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts # old format: keyboard us # new format: keyboard --vckeymap=us --xlayouts='us' # Root password rootpw --iscrypted $1$C8HufR6L$JuAxRzQnv7dGxVw.xDNLc0 # Use network installation url --url="http://192.168.136.230/centos/7" # System language lang en_US user --name=hellopeiyang --password=$6$hbPuvZcl0TRrYyFG$Vb0pNhuS/uBLMpq6nbDzruRtZr0K1qGmCey6.PL3dyKA.iUvZds4JRgQ8LpzTJ.6STbuFD2Tu5xgXt68KIjrc/ --iscrypted --gecos="hellopeiyang" # Firewall configuration firewall --disabled # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text # Run the Setup Agent on first boot firstboot --enable # SELinux configuration selinux --disabled # System services services --disabled="chronyd" ignoredisk --only-use=sda # Network information network --bootproto=dhcp --device=ens33 --onboot=on # Reboot after installation reboot # System timezone timezone Asia/Shanghai --nontp # System bootloader configuration bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all # Disk partitioning information part /app --fstype="xfs" --ondisk=sda --size=51200 part / --fstype="xfs" --ondisk=sda --size=51200 part swap --fstype="swap" --ondisk=sda --size=2048 part /boot --fstype="xfs" --ondisk=sda --size=1024 %post systemctl enable autofs rm -rf /etc/yum.repos.d/* cat > /etc/yum.repos.d/base.repo <<eof [base] name=base baseurl=file:///misc/cd gpgcheck=0 eof %end %packages @^minimal @core autofs %end
- kickstart文件的權(quán)限可能不合適赂蠢,為文件的所有用戶增加讀權(quán)限
chmod +r /var/www/html/ksdir/{rs7.cfg,rs7-mini.cfg}
- 準(zhǔn)備桌面和最小化安裝兩份文件灵嫌,可以根據(jù)/root/anaconda-ks.cfg文件修改
-
(5)配置TFTP服務(wù)
- 設(shè)置tftp服務(wù)開機(jī)自啟動(dòng):
systemctl enable tftp.socket
- 開啟tftp服務(wù):
systemctl start tftp.socket
- 設(shè)置tftp服務(wù)開機(jī)自啟動(dòng):
-
(6)配置DHCP服務(wù)
復(fù)制dhcp配置模板文件
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
編輯/etc/dhcp/dhcpd.conf文件绪穆,subnet字段修改后如下:
subnet 192.168.136.0 netmask 255.255.255.0 { range 192.168.136.10 192.168.136.30; next-server 192.168.136.230; filename "pxelinux.0"; }
- 將dhcp服務(wù)設(shè)置為自啟動(dòng):
systemctl enable dhcpd
- 啟動(dòng)dhcp服務(wù):
systemctl start dhcpd
-
(7)準(zhǔn)備PXE相關(guān)文件
- 建立PXE啟動(dòng)配置文件存放目錄:
mkdir /var/lib/tftpboot/pxelinux.cfg
- 復(fù)制啟動(dòng)相關(guān)文件:
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
- 復(fù)制內(nèi)核, initrd文件:
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
- 復(fù)制啟動(dòng)項(xiàng)設(shè)置文件(必須重命名為default):
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- 文件目錄結(jié)構(gòu)如下:
- 建立PXE啟動(dòng)配置文件存放目錄:
(8)修改啟動(dòng)菜單文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 //啟動(dòng)菜單風(fēng)格
timeout 600
menu title CentOS Linux 7 PXE Install
label desktop //桌面自動(dòng)安裝
menu label Install CentOS Linux 7 ^Desktop
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.136.230/ksdir/ks7.cfg
label mini //最小化自動(dòng)安裝
menu label Install CentOS Linux 7 M^ini
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.136.230/ksdir/ks7-mini.cfg
label manual //手動(dòng)安裝
menu label Install CentOS Linux 7 ^Manual
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.136.230/centos/7
label local //本地硬盤啟動(dòng)
menu default
menu label Boot from ^local drive
localboot 0xffff
menu end
-
(9)從網(wǎng)卡啟動(dòng)主機(jī),正確進(jìn)入PXE安裝的啟動(dòng)項(xiàng)
(四)PXE自動(dòng)化安裝CentOS 6 (CentOS 6作為FTP、DHCP霞幅、TFTP服務(wù)器)
(1)安裝前準(zhǔn)備:關(guān)閉SELinux和防火墻漠吻,DHCP服務(wù)器設(shè)置為靜態(tài)IP
-
(2)安裝相關(guān)軟件包vsftpd, tftp-server, dhcp, syslinux
- 安裝軟件包:
yum install vsftpd tftp-server dhcp syslinux
- 安裝軟件包:
-
(3)配置yum源服務(wù)
- 建立centos6目錄:
mkdir -p /var/ftp/pub/centos/6
- 配置yum源:
mount /dev/sr0 /var/ftp/pub/centos/6
- 設(shè)置vsftpd服務(wù)為自啟動(dòng):
chkconfig vsftpd on
- 啟動(dòng)vsftpd服務(wù):
service vsftpd start
- 建立centos6目錄:
-
(4)準(zhǔn)備kickstart文件
與自動(dòng)安裝CentOS7相似量瓜,準(zhǔn)備桌面和最小化安裝兩份文件
ks6.cfg為桌面安裝使用司恳,ks7-mini為最小化安裝使用
mkdir /var/ftp/pub/ksdir
建立kickstart文件目錄
cp /root/ananconda-ks.cfg /var/ftp/pub/ksdir/ks6.cfg
復(fù)制模板
cp /root/ananconda-ks.cfg /var/ftp/pub/ksdir/ks6-mini.cfg
復(fù)制模板兩份kickstart文件示例如下:
vim /var/ftp/pub/ksdir/ks6.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url="ftp://192.168.136.229/pub/centos/6" #repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 # Root password rootpw --iscrypted $1$QmHn/VZt$YE/c30khjQ1i1hSHeMN8h/ # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text firstboot --disable # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda" # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all # Disk partitioning information part /boot --fstype="ext4" --size=1000 part / --fstype="ext4" --size=50000 part swap --fstype="swap" --size=2000 part /app --fstype="ext4" --size=20000 %post rm -rf /etc/yum.repos.d/* cat > /etc/yum.repos.d/base.repo <<eof [base] name=base baseurl=file:///misc/cd gpgcheck=0 eof %end %packages @base @basic-desktop @core @debugging @desktop-debugging @desktop-platform @directory-client @fonts @general-desktop @graphical-admin-tools @input-methods @internet-applications @internet-browser @java-platform @legacy-x @network-file-system-client @office-suite @print-client @remote-desktop-clients @server-platform @server-policy @workstation-policy @x11 abrt-gui certmonger device-mapper-persistent-data genisoimage krb5-workstation libXmu mtools oddjob pam_krb5 pax python-dmidecode samba-winbind sgpio wodim %end
vim /var/ftp/pub/ksdir/ks6-mini.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url="ftp://192.168.136.229/pub/centos/6" # Root password rootpw --iscrypted $1$H3QsWt7L$uezUXA.OuYFONmwP027tS. # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text firstboot --disable # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda" # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all # Disk partitioning information part /boot --fstype="ext4" --size=1000 part / --fstype="ext4" --size=50000 part swap --fstype="swap" --size=2000 part /app --fstype="ext4" --size=20000 %post rm -rf /etc/yum.repos.d/* cat > /etc/yum.repos.d/base.repo <<eof [base] name=base baseurl=file:///misc/cd gpgcheck=0 eof %end %packages @core @server-policy @workstation-policy autofs %end
- kickstart文件的權(quán)限可能不合適,統(tǒng)一增加寫權(quán)限
chmod +r /var/ftp/pub/ksdir/*
-
(5)配置TFTP服務(wù)
- 啟動(dòng)tftp服務(wù):
chkconfig tftp on //tftp服務(wù)自啟動(dòng) service xinetd restart //xinetd服務(wù)重啟服務(wù)绍傲,為tftp服務(wù)監(jiān)聽端口
-
(6)配置DHCP服務(wù)
復(fù)制dhcp配置模板文件
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
編輯/etc/dhcp/dhcpd.conf文件扔傅,subnet字段修改后入下:
subnet 192.168.136.0 netmask 255.255.255.0 {
range 192.168.136.10 192.168.136.30;
next-server 192.168.136.229;
filename "pxelinux.0";
}
- dhcpd服務(wù)自啟動(dòng):
chkconfig dhcpd on
- 啟動(dòng)dhcp服務(wù):
service dhcpd start
-
(7)準(zhǔn)備PXE相關(guān)文件
- 建立PXE啟動(dòng)配置文件存放目錄:
mkdir /var/lib/tftpboot/pxelinux.cfg
- 復(fù)制啟動(dòng)相關(guān)文件:
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
- 復(fù)制內(nèi)核,initrd文件:
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
- 復(fù)制啟動(dòng)項(xiàng)設(shè)置文件(必須重命名為default):
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- 文件目錄結(jié)構(gòu)如下:
- 建立PXE啟動(dòng)配置文件存放目錄:
- (8)修改啟動(dòng)菜單文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title CentOS Linux 6 PXE Install
label desktop
menu label Install CentOS Linux 6 ^Desktop
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.136.229/pub/ksdir/ks6.cfg
label mini
menu label Install CentOS Linux 6 M^ini
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.136.229/pub/ksdir/ks6-mini.cfg
label manual
menu label Install CentOS Linux 6 ^Manual
kernel vmlinuz
append initrd=initrd.img inst.repo=ftp://192.168.136.229/pub/centos/6
label local
menu default
menu label Boot from ^local drive
localboot 0xfffmenu end
menu end
- (9)從網(wǎng)卡啟動(dòng)主機(jī)烫饼,正確進(jìn)入PXE安裝的啟動(dòng)項(xiàng)
(五)PXE自動(dòng)化安裝CentOS 6 和CentOS 7(CentOS 7作為HTTP猎塞、DHCP、TFTP服務(wù)器)
(1)安裝前準(zhǔn)備:關(guān)閉SELinux和防火墻杠纵,DHCP服務(wù)器設(shè)置為靜態(tài)IP
(2)安裝相關(guān)軟件包httpd, dhcp, tftp-server, syslinux
yum install httpd dhcp tftp-server syslinux
-
(3)配置CentOS 6和CentOS 7的源
- 將httpd服務(wù)設(shè)置為自啟動(dòng):
systemctl enable httpd
- 打開httpd服務(wù):
systemctl start httpd
- 將httpd服務(wù)設(shè)置為自啟動(dòng):
-
配置centos 7的yum源:
mkdir -p /var/www/html/centos/6
mount /dev/sr1 /var/www/html/centos/6
mkdir -p /var/www/html/centos/7
mount /dev/sr0 /var/www/html/centos/7
- (4)準(zhǔn)備kickstart文件
- 調(diào)整上面兩個(gè)實(shí)驗(yàn)中的kickstart文件荠耽,分別為ks7.cfg, ks7-mini.cfg, ks6.cfg, ks6-mini.cfg。主要調(diào)整的是遠(yuǎn)程安裝路徑比藻,即
usl --url=
字段后面的設(shè)置 - 將kickstart文件復(fù)制到指定目錄:
mkdir -p /var/www/html/ksdir/{6,7}
vim /var/www/html/ksdir/6/ks6.cfg
vim /var/www/html/ksdir/6/ks6-mini.cfg
vim /var/www/html/ksdir/7/ks7.cfg
vim /var/www/html/ksdir/7/ks7-mini.cfg
- 調(diào)整上面兩個(gè)實(shí)驗(yàn)中的kickstart文件荠耽,分別為ks7.cfg, ks7-mini.cfg, ks6.cfg, ks6-mini.cfg。主要調(diào)整的是遠(yuǎn)程安裝路徑比藻,即
*(5)配置TFTP服務(wù):
設(shè)置tftp服務(wù)開機(jī)自啟動(dòng):
systemctl enable tftp.socket
開啟tftp服務(wù):
systemctl start tftp.socket
-
(6)配置DHCP服務(wù)
- 復(fù)制dhcp配置模板文件
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
- 編輯/etc/dhcp/dhcpd.conf文件铝量,subnet字段修改后如下:
subnet 192.168.136.0 netmask 255.255.255.0 { range 192.168.136.10 192.168.136.30; next-server 192.168.136.230; filename "pxelinux.0"; }
- 將dhcp服務(wù)設(shè)置為自啟動(dòng):
systemctl enable dhcpd
- 啟動(dòng)dhcp服務(wù):
systemctl start dhcpd
- 復(fù)制dhcp配置模板文件
-
(7)準(zhǔn)備PXE相關(guān)文件
- 建立PXE啟動(dòng)配置文件存放目錄:
mkdir /var/lib/tftpboot/pxelinux.cfg
- 分別建立存放CentOS6和7的內(nèi)核相關(guān)文件的目錄:
mkdir -p /var/lib/tftpboot/centos/6
mkdir -p /var/lib/tftpboot/centos/7
- 復(fù)制啟動(dòng)相關(guān)文件:
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
- 分別復(fù)制CentOS 6和7的內(nèi)核與initrd文件至不同的目錄:
cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos/6
cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos/7
- 復(fù)制啟動(dòng)項(xiàng)設(shè)置文件(必須重命名為default)
cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- 文件目錄結(jié)構(gòu)如下:
- 建立PXE啟動(dòng)配置文件存放目錄:
(8)修改啟動(dòng)菜單文件:
注意CentOS6和CentOS7系統(tǒng)內(nèi)核相關(guān)文件的不同路徑需要相應(yīng)修改配置文件的設(shè)置
default menu.c32
timeout 600
menu title CentOS Linux PXE Install
label desktop 7
menu label Install CentOS Linux 7 ^Desktop
kernel centos/7/vmlinuz
append initrd=centos/7/initrd.img ks=http://192.168.136.230/ksdir/7/ks7.cfg
label desktop 6
menu label Install CentOS Linux 6 D^esktop
kernel centos/6/vmlinuz
append initrd=centos/6/initrd.img ks=http://192.168.136.230/ksdir/6/ks6.cfg
label mini 7
menu label Install CentOS Linux 7 M^ini
kernel centos/7/vmlinuz
append initrd=centos/7/initrd.img ks=http://192.168.136.230/ksdir/7/ks7-mini.cfg
label mini 6
menu label Install CentOS Linux 6 Mi^ni
kernel centos/6/vmlinuz
append initrd=centos/6/initrd.img ks=http://192.168.136.230/ksdir/6/ks6-mini.cfg
label manual 7
menu label Install CentOS Linux 7 ^Manual
kernel centos/7/vmlinuz
append initrd=centos/7/initrd.img inst.repo=http://192.168.136.230/centos/7
label manual 6
menu label Install CentOS Linux 6 M^anual
kernel centos/6/vmlinuz
append initrd=centos/6/initrd.img inst.repo=http://192.168.136.230/centos/6
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
menu end
- (9)從網(wǎng)卡啟動(dòng)主機(jī),正確進(jìn)入PXE安裝的啟動(dòng)項(xiàng)
可以同時(shí)安裝CentOS6 和CentOS 7
四银亲、cobbler
(一)cobbler簡(jiǎn)介
- 功能:快速網(wǎng)絡(luò)安裝Linux系統(tǒng)
- PXE的二次封裝慢叨,將多種安裝參數(shù)封裝到一個(gè)菜單
- 集成了PXE、DHCP务蝠、rsync拍谐、http、DNS馏段、Kickstart轩拨、IPMI(電源管理)多種服務(wù)
- 由Python編寫
- 提供CLI和Web管理兩種方式
(二)cobbler工作流程
- client裸機(jī)配置了從網(wǎng)絡(luò)啟動(dòng)后,開機(jī)后會(huì)廣播包請(qǐng)求DHCP服務(wù)器(cobbler server)發(fā)送其分配好的一個(gè)IP
- DHCP服務(wù)器(cobbler server)收到請(qǐng)求后發(fā)送responese院喜,包括其ip地址
- client裸機(jī)拿到ip后再向cobbler server發(fā)送請(qǐng)求OS引導(dǎo)文件的請(qǐng)求
- cobbler server告訴裸機(jī)OS引導(dǎo)文件的名字和TFTP server的ip和port
- client裸機(jī)通過上面告知的TFTP server地址通信亡蓉,下載引導(dǎo)文件
- client裸機(jī)執(zhí)行執(zhí)行該引導(dǎo)文件,確定加載信息够坐,選擇要安裝的os寸宵,期間會(huì)再向cobbler server請(qǐng)求kickstart文件和os image
- cobbler server發(fā)送請(qǐng)求的kickstart和os iamge
- client裸機(jī)加載kickstart文件
- client裸機(jī)接收os image,安裝該os image
(三)cobbler相關(guān)術(shù)語(yǔ)
- 發(fā)行版:
表示一個(gè)操作系統(tǒng)版本元咙,它承載了內(nèi)核和initrd的信息梯影,以及內(nèi)核參數(shù)等其他數(shù)據(jù) - 配置文件:
包含一個(gè)發(fā)行版、一個(gè)kickstart 文件以及可能的存儲(chǔ)庫(kù)庶香,還包含更多特定的內(nèi)核參數(shù)等其他數(shù)據(jù) - 系統(tǒng):
表示要配置的主機(jī)甲棍,它包含一個(gè)配置文件或一個(gè)鏡像,還包含IP和MAC地址赶掖、電源管理(地址感猛、憑據(jù)七扰、類型)以及更為專業(yè)的數(shù)據(jù)等信息 - 存儲(chǔ)庫(kù):
保存一個(gè)yum或rsync存儲(chǔ)庫(kù)的鏡像信息 - 鏡像:
可替換一個(gè)包含不屬于此類別的文件的發(fā)行版對(duì)象(例如,無法分為內(nèi)核和initrd的對(duì)象)
(四)cobbler配置文件
- 配置文件目錄:/etc/cobbler
- /etc/cobbler/settings:cobbler 主配置文件
- /etc/cobbler/iso/:iso模板配置文件
- /etc/cobbler/pxe:pxe模板文件
- /etc/cobbler/power:電源配置文件
- /etc/cobbler/user.conf:web服務(wù)授權(quán)配置文件
- /etc/cobbler/users.digest:web訪問的用戶名密碼配置文件
- /etc/cobbler/dhcp.template:dhcp服務(wù)器的配置模板
- /etc/cobbler/dnsmasq.template:dns服務(wù)器的配置模板
- /etc/cobbler/tftpd.template:tftp服務(wù)的配置模板
- /etc/cobbler/modules.conf:模塊的配置文件
(五)cobbler目錄
- 數(shù)據(jù)目錄
/var/lib/cobbler/config/:用于存放distros, system, profiles 等信息配置文件
/var/lib/cobbler/triggers/:用于存放用戶定義的cobbler命令
/var/lib/cobbler/kickstart/:默認(rèn)存放kickstart文件
/var/lib/cobbler/loaders/:存放各種引導(dǎo)程序 - 鏡像目錄
/var/www/cobbler/ks_mirror/:導(dǎo)入的發(fā)行版系統(tǒng)的所有數(shù)據(jù)
/var/www/cobbler/images/:導(dǎo)入發(fā)行版的kernel和initrd鏡像用于遠(yuǎn)程網(wǎng)絡(luò)啟動(dòng)
/var/www/cobbler/repo_mirror/:yum 倉(cāng)庫(kù)存儲(chǔ)目錄 - 日志目錄
/var/log/cobbler/installing:客戶端安裝日志
/var/log/cobbler/cobbler.log:cobbler日志
(六)cobbler命令
- cobbler check:核對(duì)當(dāng)前設(shè)置是否有問題
- cobbler list:列出所有的cobbler元素
- cobbler report:列出元素的詳細(xì)信息
- cobbler sync:同步配置到數(shù)據(jù)目錄,更改配置最好都要執(zhí)行下
- cobbler reposync:同步y(tǒng)um倉(cāng)庫(kù)
- cobbler distro:查看導(dǎo)入的發(fā)行版系統(tǒng)信息
- cobbler system:查看添加的系統(tǒng)信息
- cobbler profile:查看配置信息
(七)cobbler重要參數(shù)
- /etc/cobbler/settings中重要的參數(shù)設(shè)置
- default_password_crypted:"$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
- manage_dhcp:1
- manage_tftpd:1
- pxe_just_once:1
- next_server:< tftp服務(wù)器的IP 地址>
- server:<cobbler服務(wù)器的IP 地址>
(八)cobbler相關(guān)管理
- 下載啟動(dòng)菜單:cobbler get-loaders
- 管理distro
cobbler import --name=centos-6.9-x86_64 --path=/media/cdrom
- 管理profile
cobbler profile add --name=centos-6.9-x86_64-basic --distro=centos-6.9-x86_64 --kickstart=/tmp/centos-6.9-x86_64.cfg
- 查看profiles
cobbler profile list
- 查看引導(dǎo)文件
cat /var/lib/tftpboot/pxelinux.cfg/default
- 同步cobbler配置
cobbler sync
(九)cobbler實(shí)現(xiàn)步驟
- 安裝包陪白,并設(shè)置服務(wù)
- 檢查配置
- 根據(jù)上面提示修改配置
- 下載啟動(dòng)相關(guān)文件菜單
- 配置DHCP服務(wù)
- 分別導(dǎo)入centos的安裝源,并查看
- 準(zhǔn)備kickstart文件并導(dǎo)入cobbler
- 測(cè)試
(十)cobbler實(shí)現(xiàn)Web管理
- cobbler-web
提供cobbler的基于web管理界面颈走,epel源
yum install cobbler-web
- 認(rèn)證方式
- 定義認(rèn)證方法:/etc/cobbler/modules.conf
- 使用authn_pam模塊認(rèn)證cobbler_web用戶
- [authentication]塊中指定module = authn_pam
- 創(chuàng)建cobbler用戶:
useradd cobbler
- 修改文件/etc/cobbler/users.conf
[admins]
admin = "cobbler"
- 使用authn_configfile模塊認(rèn)證cobbler_web用戶
- [authentication]塊中module=authn_configfile
- 創(chuàng)建其認(rèn)證文件/etc/cobbler/users.digest,并添加所需的用戶
htdigest -c /etc/cobbler/users.digest Cobbler admin - 注意:添加第一個(gè)用戶時(shí),使用“-c”選項(xiàng)咱士,后續(xù)添加其他用戶時(shí)不要再使用立由,cobbler_web的realm只能為Cobbler
- Web訪問cobbler
- 重啟cobblerd服務(wù)
- 通過http://cobblerserver/cobbler_web訪問即可
(十一)cobbler實(shí)現(xiàn)自主選擇安裝CentOS6或7系統(tǒng)
(1)安裝cobbler并配置相關(guān)服務(wù)
yum install cobbler
systemctl enable cobblerd
systemctl start cobblerd
systemctl enable tftp
systemctl start tftp
systemctl enable httpd
systemctl start httpd
(2)執(zhí)行cobbler check
命令,根據(jù)提示修改設(shè)置
- 執(zhí)行
cobbler check
命令序厉,反饋類似結(jié)果
- 根據(jù)問題锐膜,修改/etc/cobbler/settings文件,修改后如下:
vim /etc/cobbler/settings
default_password_crypted: "$1$3AUU7.oO$g7Dkuzmu1uFmcp4HYRLw9." //加密密碼
next_server: 192.168.136.230 //tftp服務(wù)器IP
manage_dhcp: 1 //管理dhcp服務(wù)
server: 192.168.136.230 //cobbler服務(wù)器IP
vim /etc/cobbler/dhcp.template //修改dhcp模板文件
subnet 192.168.136.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.136.10 192.168.136.30;
注明:密碼可以用openssl passwd -1
來生成
- 重啟cobbler服務(wù)并同步配置到數(shù)據(jù)目錄弛房,同步成功結(jié)果如下
systemctl restart cobblerd
cobbler sync
(3)準(zhǔn)備啟動(dòng)文件和菜單風(fēng)格文件
- 具備聯(lián)網(wǎng)條件時(shí)道盏,執(zhí)行
cobbler get-loaders
- 不具備聯(lián)網(wǎng)條件時(shí),操作類似PXE的操作
cp /var/lib/tftpboot/{menu.c32,pxelinux.0} /var/lib/cobbler/loaders
(4)導(dǎo)入yum源
- 導(dǎo)入centos 7.3的yum源文捶,/mnt/centos6為centos6的光盤掛載點(diǎn)
cobbler import --path=/mnt/centos7 --name=centos7.3 --arch=x86_64
- 導(dǎo)入centos 6.9的yum源荷逞,/mnt/centos6為centos6的光盤掛載點(diǎn)
cobbler import --path=/mnt/centos6 --name=centos6.9 --arch=x86_64
- 查看導(dǎo)入的發(fā)行版及其配置信息,確認(rèn)導(dǎo)入成功
cobbler distro list
查看導(dǎo)入的發(fā)行版信息
cobbler profile list
查看配置信息
(5)生成kickstart文件
復(fù)制CentOS 6的kickstart文件
cp /var/www/html/ksdir/6/ks6.cfg /var/lib/cobbler/kickstarts/
復(fù)制CentOS 7的kickstart文件
cp /var/www/html/ksdir/7/ks7.cfg /var/lib/cobbler/kickstarts/
刪除原先導(dǎo)入CentOS 6的yum源時(shí)的配置信息
cobbler profile remove --name=centos6.9-x86_64
刪除原先導(dǎo)入CentOS 7的yum源時(shí)的配置信息
cobbler profile remove --name=centos7.3-x86_64
重新生成CentOS 6的kickstart配置
cobbler profile add --name=centos6.9_desktop --distro=centos6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6.cfg
重新生成CentOS 7的kickstart配置
cobbler profile add --name=centos7.3_desktop --distro=centos7.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg
同步設(shè)置到數(shù)據(jù)目錄
cobbler sync