第19章,運維自動化之系統安裝
Linux學習從入門到打死也不放棄,完全筆記整理(持續更新,求收藏,求點贊~~~~)
http://blog.51cto.com/13683480/2095439
第19章,運維自動化之系統安裝
本章內容:
系統安裝過程
配置anaconda
自動化安裝系統
制作引導光盤和U盤
DHCP服務
PXE安裝系統
cobbler企業級應用
運維自動化發展歷程及技術應用:
全人工階段----> 工具化階段----> 平臺化階段----> 自驅動階段
無流程規範----> 制定規範----> 完善規範----> 流程驅動
人----> 工具----> 平臺----> 制度
anaconda:系統安裝程序
gui : 圖形窗口
tui : 基於圖形庫curses的文本窗口
安裝程序啟動過程:
啟動盤主要文件目錄:isolinux
MBR: isolinux/boot.cat
stage2: isolinux/isolinux.bin
配置文件:isolinux/isolinux.cfg
每個對應的菜單選項:
內核:isolinux/vmlinuz
向內核傳遞參數:append initd=initrd.img...
裝載根文件系統,並啟動anaconda
默認啟動GUI接口
若是顯示指定使用TUI接口,向內核傳遞text參數即可
按tab鍵,在後面增加text
按esc鍵,boot:linux text
anaconda工作過程:
anaconda安裝系統分為三個階段:
安裝前配置階段:
安裝過程使用的語言
鍵盤類型
安裝目標存儲設備
Basic Storage:本地磁盤
特殊設備:iSCSI
設備主機名
配置網路接口
時區
管理員密碼
設定分區方式及MBR的安裝位置
創建一個普通用戶
選定要安裝的程序包
安裝階段:
在目標磁盤創建分區,執行格式化操作等
(分區完成後會寫入bootloader,系統無法從光盤啟動,
後面安裝grub會不會覆蓋次bootloader,未知。)
將選定的程序包安裝至目標位置
安裝bootloader和initramfs
圖形模式首次啟動:
iptables
selinux
cor dump
系統安裝過程:-------------------------------------------------------------------------
啟動安裝過程一般應位於引導設備;後續的anaconda及其安裝用到的程序包等可來自下面幾種方式:
本地光盤
本地硬盤
NFS
URL
ftp server :yum repository
http server :yum repostory
如果想手動指定安裝源:
boot:linux askmethod
anaconda的配置方式:
1 交互式配置方式
2 通過讀取事先給定的配置文件自動完成配置
按特定語法給出的配置選項
kickstart文件
安裝boot引到選項:boot:
默認gui圖形界面,使用boot:linux text 進入字符界面安裝
askmethod:手動指定使用的安裝方法
與網絡相關的引導選項
ip=IPADDR
netmask=MASK
geteway=GW
dns=DNS_SERVER_IP
ifname=NAME:MAC_ADDR
與遠程訪問功能相關的引導選項:
vnc
vncpassword='PASSWORD'
(暫不知如何實現)
指明kickstart文件的位置:ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard drive: ks=hd:device:/directory/KICKSTART_FILE
HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
啟動經濟救援模式:
rescue
官方文檔:《Installation Guide》
遠程安裝yum源地址格式 有變化
Centos6
DVD drive repo=cdrom:device
Hard Drive repo=hd:device/path
HTTP Server repo=http://host/path
HTTPS Server repo=https://host/path
FTP Server repo=ftp://username:password@ host/path
NFS Server repo=nfs:server:/path
ISO images on an NFS
Server
repo=nfsiso:server:/path
ip=192.168.1.10 netmask= 255.255.255.0 gateway= 192.168.1.1
dns= 192.168.1.3 ksdevi ce= eth0 i fname= pri mary:01:23:4 5:67:89:ab
Centos7
Any CD/DVD drive inst.repo=cdrom
Specific CD/DVD
drive
inst.repo=cdrom:device
Hard Drive inst.repo=hd:device:/path
HTTP Server inst.repo=http://host/path
HTTPS Server inst.repo=https://host/path
FTP Server inst.repo=ftp://username:password@ host/path
NFS Server inst.repo=nfs:[options:]server:/path
kickstart:
通過固定格式的文件保存系統安裝時的各種選項
在系統安裝時使用ks= 來導入選項,做到自動化安裝
文件創建方式:
1 手動編輯
2 復制已有的*.ks.cfg,通過修改得到如: /root/anaconda-ks.cfg
3 使用system-config-kickstart 生成
需圖形界面操作
檢查ks文件的語法錯誤:
ksvalidator /path/ksfile
格式:
命令段: 指明各種安裝前配置,如鍵盤類型等
程序包段: 指明要安裝的程序包組或程序包,不安裝的程序包等
%package
@group_name
package
-package
%end
腳本段:
%pre
安裝前腳本
%end
%post
安裝後腳本
%end
系統光盤中isolinux目錄列表
boot.cat 啟動過程mbr
isolinux.bin 啟動過程中使用的grub
isolinux.cfg isolinux.bin的配置文件,當光盤啟動後(即運行ixolinux.bin)
會自動去找iso.isolinux.cfg
vesamenu.c32 光盤啟動後的安裝圖形界面,也屬於syslinux項目,menu.c32 版本是純文本菜單
memtest 內存檢測,這是一個獨立的程序
splash.jpg: 光盤啟動界面的背景圖
vmlinuz 內核映像
initrd.img ramfs ()
實驗1: 使用光盤引到,正常安裝以及使用text選項進入字符界面安裝
註意:
一旦分區完成,bootloader將隨分區表寫入磁盤(grub第二階段沒裝),此時退出安裝會從硬盤啟動,無法開機
使用字符界面,無法手動分區,默認只有三個選項
1 replace existing linux systems
2 use all space
3 use free space
實驗2: 光盤啟動,遠程安裝,使用本地教學環境yum源
光盤菜單項按esc
centos6 boot:linux repo=http://172.20.0.1/centos/6
centos7 boot:linux inst.repo=http://172.20.0.1/centos/7
使用askmethod 選項配置網絡後使用yum源安裝
實驗3 使用kickstart 生成ks文件使用yum源安裝
boot:linux ks=http://172.20.110.182/ks6_mini.cfg
boot:linux ks=http://172.20.110.182/ks7.mini.cfg
實驗4 制作啟動光盤,使用網絡yum源安裝
步驟: 復制isolinux目錄
修改isolinux.cfg文件
生成ks文件,放入制作目錄
刻錄iso文件
centos6
使用system-config-kickstart 生成ks文件ks6_mini.cfg
安裝源http://172.20.0.1/centos/6
mkdir /data/stcentos6
cp /misc/cd/isolinux/ /data/stcentos6/
mkdir /data/stcentos/ksdir
cp /root/ks6_mini.cfg /data/stcentos6/ksdir
vim /data/stcentos/isolinux/isolinux.cfg
適當修改標簽項
ks=cdrom:/ksdir/ks6_mini.cfg
制作iso文件,此為一條命令,刪除換行
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4
--boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin
-c isolinux/boot.cat -o /root/stcentos6.iso /data/stcentos6/
生成的iso文件 stcentos.iso 即可啟動安裝系統
centos7
****
****
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/stcentos7.iso /data/stcentos7/
實驗5 制作自動安裝光盤
復制光盤內容到目錄/data/centos6
centos6.9,由於有兩張光盤,所以需要分別復制
mount /dev/sr0 /mnt
cp /mnt /data/centos6
umount /mnt
更換光盤
mount /dev/sr0 /mnt
cp /mnt/Packages/* /data/centos6/Packages/
生成repodata,先刪除repeodata下除.xml之外的所有文件
cd /data/centos6/repodata
cp 43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml ..
rm -f *
mv ../43d8f* .
cd ..
使用命令生成repodata
createrepo -g repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml
刪除.TBL文件
find -name TRANS.TBL -exec rm {} \;
修改菜單文件
vim /data/centos6/isolinux/isolinux.cfg
適當修改選項:
ks=cdrom:/ksdir/ks6_mini.cfg
生成、復制、修改kickstart文件
cp /root/ks6_mini.cfg /data/centos/ksdir/
vim /data/centos/ksdir/ks6_mini.cfg
路徑修改為
cdrom
刻錄/data/centos6成.iso文件
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/stcentos7.iso /data/stcentos7/
使用生成的iso文件啟動虛擬機,並自動化最小安裝
mkisofs:
mkisofs [options] /dir|file
刻錄文件或目錄為iso文件
選項: -o 指定映像文件的名稱
-b 指定在制作可開機光盤時所需的開機映像文件
-c 制作可開機光盤時,會將開機映像文件中的no-eltorito-catalog
全部內容做成一個文件
-no-emul-boot 非模擬模式啟動
-boot-load-size 4 設置載入部分的的數量
-boot-info-table 在啟動的圖像中顯示信息
-R | -cock 使用Rock RidgeExtensions
-J | -joliet 使用Joliet格式的目錄與文件名稱
-v | -verbose 執行時顯示詳細的信息
-T | -translation-lable 建立文件名的轉換表,適用於不支持Rock RidgeExtensions
將iso文件, 寫入硬盤或者u盤-,實測可以啟動,但是不能安裝
原因是ks文件使用cdrom:/ 無法找到
yum install syslinux
isohybrid stcentos6.iso
dd if=stcentos6.iso of=/dev/sdb
DHCP: ------------------------------------------------------------------------
dhcp:
Dynamic Host Configuration Protocol
動態主機配置協議
局域網協議,使用udp協議
主要用途:
用於內部網路和網絡服務供應商自動分配ip地址給用戶
用於內部網絡管理員作為對所有電腦集中管理的手段
DHCP共有八種報文:
DHCP DISCOVER 客戶端廣播到服務器,請求ip地址
DHCP OFFER 服務器單播給客戶端,提供ip地址
DHCP REQUEST 客戶端再次廣播,表明已經接受ip
DHCP ACK 服務器單播,表示確認客戶端已經接受ip 合約建立
DHCP NAK 服務器到客戶端,通知用戶無法分配合適的ip地址
DHCP DECLINE 客戶端到服務器,指示地址已被使用
DHCP RELEASE 客戶端到服務器,放棄網絡地址和取消剩余的租約時間
DHCP INFORM 客戶端到服務器,獲取更為詳細的配置信息,極少用到
租約:
50%時間: 租約時間到達50%來續租,向DHCP服務器發送新的DHCP REQUEST請求
如果dhcp服務沒有拒絕的理由,則會用DHCP ACK信息。當DHCP客戶端
收到該應答信息後,就重新開始新的租用周期
87.5%: 如果之前的DHCP server沒有回應續租請求,等到租期的7/8時,主機會再
發送一次廣播請求
同網段多dhcp服務:
dhcp服務必須基於本地
先到先得的原則
相關協議:
arp,rarp
跨網段:
RFC 1542 Compliant Routers 允許dhcp廣播通過的route
使用中繼代理
DHCP實現:
Linux DHCP協議的實現程序:dhcp,dnsmasq(dhcp,dns 輕量級)
DHCP Server:
主程序 /usr/sbin/dhcpd
代理服務器程序:/usr/sbin/dhcrelay
主配置文件 /etc/dhcp/dhcpd.conf
端口: server 67 udp
client 68 udp
dhcp6 client 546 udp
DHCP client:
命令: dhclient 獲取dhcp服務
/var/lib/dhclient 查看獲取的ip信息
DHCP 配置文件:
/etc/dhcp/dhcpd.conf 默認為空文件,需要復制模板文件覆蓋即可
全局配置:
option domain-name "example.com"; 域名後綴
option domain-name-server IP1,IP2; DNS配置
default-lease-time 86400; 默認租期
max-lease-time 864000; 最大租期
subnet 192.168.65.0 netmask 255.255.255.0 {
range 192.168.65.10 192.168.65.100; 地址範圍
option routers 192.168.65.1; 網關
此處也可以單獨配置options;
filename pxelinux.0;
next-server 192.168.65.128;
這兩項用於配置pxe自動安裝系統
}
地址分配記錄:
/var/lib/dhcpd/dhcpd.leases
tftp:
服務器實現軟件: tftp-server
服務器根文件路徑: /var/lib/tftpboot
使用pxe實現自動安裝:--------------------------------------------------------------
使用的服務:dhcp,tftp,http(或者ftp)
實現過程:
1 需要安裝的主機和dhcp服務同一物理網段內,啟動項選擇網絡服務
2 主機與DHCP服務器完成通信,地址分配 UDP
3 主機通過DHCP服務filiename和next-server 這一指向連接tftp服務器 UDP
4 通過tftp服務器獲取pxelinux.0 文件並執行
5 從tftp服務器上獲取內核,initrd 文件,配置文件 UDP
6 通過讀取tftp服務器上的配置文件,找到存放在http或者ftp服務器上的yum
安裝源,以及ks文件。完成系統安裝 TCP
7 yum源與ks記錄文件可以位於不同的服務器,也可以位於同一服務器
實驗6: 以centos6作為服務器,實現pxe自動安裝centos6
0 關閉selinux iptables 本機ip:192.168.65.128
1 準備工作,
安裝服務包:
yum install httpd tftp-server dhcp syslinux
如是生產環境長期使用,可以設置開機自啟:
chkconfig httpd dhcp xinetd on
2 配置yum源:
使用http提供yum服務,先創建目錄
mkdir -pv /var/www/html/centos/{6,7}
這裏使用掛載光盤的方式提供yum源,生產環境需復制光盤內容到目錄
mount /dev/sr0 /var/www/html/centos/6
創建kickstart文件,依然放在http服務目錄下
mkdir /var/www/html/ksdir
cp /root/ks6_mini.cfg /var/www/html/ksdir/
適當修改ks文件
vim /var/www/html/ksdir/ks6_mini.cfg
註意 url --url=http://192.168.65.128/centos/6
開啟httpd
註意:kickstart文件權限
3 配置dhcp服務
修改配置文件:
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
subnet 192.168.65.0 netmask 255.255.255.0 {
range 192.168.65.10 192.168.65.100;
filename "pxelinux.0";
next-server 192.168.65.128
}
啟動dhcpd服務
dhcpd
4 配置tftp-server服務:
開啟服務,由於tftp-server為非獨立服務,受xinetd服務監管
rpm -ql tftp-server
vim /etc/xinetd.d/tftp
將disable 項改成no
重啟xinetd服務
service xinetd restart
復制所需文件:
cd /var/lib/tftpboot/
cp /cd/isolinux/vmlinuz /cd/isolinux/initrd.img .
updatedb
locate pxelinux.0
cp /usr/share/syslinux/pxelinux.0 .
locate menu.c32 簡單菜單項文件
cp /usr/share/syslinux/menu.c32 .
cp /cd/isolinux/isolinux.cfg pxelinux.cfg/default
tree一下:
[root@centos6 /var/lib/tftpboot]$tree
.
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
編輯啟動菜單:
vim pxelinux.cfg/default
註意,ks=http://192.168.65.128/ksdir/ks6_mini.cfg
使用wq!保存
5 測試安裝
先使用ss -tanul 查看67 69 80 端口是否已開啟
使用一臺新的虛擬機,開機即可進入選項,測試安裝
實驗7: 以centos7,為服務器,同時提供centos6 和centos7
0 關閉selinux,iptables 本機ip:192.168.65.132
1 安裝服務所需程序包
yum install httpd tftp-server dhcp syslinux
2 配置http服務,提供yum源和ks源
與之前有些不同,需要掛兩張光盤
[root@localhost /var/www/html]#tree -L 2
.
├── centos
│ ├── 6
│ └── 7
└── ksdir
├── ks6_mini.cfg
└── ks7_mini.cfg
4 directories, 2 files
3 配置dhcp 方法相同
4 配置tftp-server服務,有些不同
[root@localhost /var/lib/tftpboot]#tree
.
├── boot.msg
├── centos6
│ ├── initrd.img
│ └── vmlinuz
├── centos7
│ ├── initrd.img
│ └── vmlinuz
├── pxelinux.0
├── pxelinux.cfg
│ └── default
├── splash.png
└── vesamenu.c32
3 directories, 9 files
由於使用了vesamenu.c32菜單,所以需要多準備boot.msg splash.png 這兩個文件
centos6 和centos7兩個目錄下為各自安裝須有的vmlinuz 和initrd文件
需要在編輯菜單選項時寫入路徑
5 開啟服務,並測試安裝
需要註意centos7系統開啟tftp-server的方式為
systemctl start tftp.socket
同樣使用ss -tanul 查看端口是否開啟
新建虛擬機測試安裝
cobbler:------------------------------------------------------------------------
快速網絡安裝linux操作系統的服務,支持眾多的linux發行版:redhat、fedora、
centos debian、ubuntu和suse,也可以支持網絡安裝,windows
PXE的二次封裝,將多種安裝參數封裝到一個菜單
python編寫
提供了cli 和web的管理形式
服務集成:pxe,dhcp,rsync,http,dns,kickstart,ipmi電源管理
安裝:epel源
yum install cobbler dhcp
配置文件目錄:/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 訪問的用戶名密碼配置文件
/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,profile等信息配置文件
/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_mirrow yum 存儲目錄
日誌目錄
/var/log/cobbler/installing 客戶端安裝日誌
/var/log/cobbler/cobbler.log cobbler日誌
cobbler 命令介紹:
cobbler check 核對當前設置是否有問題
clbbler list 列出所有的cobbler元素
cobbler report 列出元素的詳細信息
clbbler sync 同步配置到數據目錄,更改配置最好都要執行下
cobbler reposync 同步yum倉庫
cobbler distro 查看導入的發型版系統信息
clbbler system 查看添加的系統信息
cobbler profile 查看配置信息,安裝菜單
/etc/cobbler/settings 中的重要參數設置
defarlt_password_crypted "---" 使用openssl password -1 生成
manage_dhcp :1 默認為0 需要修改
manage——tftpd:1
pxe_just_once:1
next-server: tftp服務器的IP地址
server:cobbler服務器的IP地址
實驗8:cobbler配置實現:
centos7.5主機
1 安裝前準備,關閉selinux 關閉iptables
2 安裝服務:
yum install cobbler dhcp
systemctl enable cobblerd httpd dhcpd tftp rsyncd
systemctl start cobblerd httpd tftp rsyncd
3 執行cobbler check 務必確認httpd tftp rsyncd 保持開啟狀態
按照提示完成操作,大概包括
修改/etc/cobbler/settings 文件
server:
next_server:
default_password_
manage_dhcp:1
執行cobbler get-loaders獲取文件
執行cobbler sync 同步文件
4 修改dhcp配置文件: /etc/cobbler/dhcp.template
主要修改
subnet 192.168.65.0 netmast 255.255.255.0 {
range dynamic-bootp 192.168.65.100 192.168.65.254;
}
執行cobbler sync同步(自動重啟dhcpd)
5 導入鏡像文件:
cobbler import --name=NAME --path=/PATH --arch=ARCH
查看、刪除導入鏡像:
cobbler distro list|remove
查看菜單選項:
cobbler profile list|remove
註意如有需要刪除,先刪除profile在刪除distro
默認情況下導入鏡像會自動生成一個默認的菜單項,系統自動配置的,一般直接刪除
6 導入菜單:
cobbler profile add --name=NAME --distro=DISTRO --kickstarts=/etc/cobbler/kickstarts/ks*.cfg
可以查看導入菜單profile的詳細信息
cobbler profile report --name=centos6.9-mini-x86_64
7 如沒有問題,使用ss -tanul 查看各服務端口是否正常開啟
新建虛擬機,測試安裝
cobbler 的web管理實現
cobbler-web 提供cobbler基於web管理界面,epel源
yum install cobbler-web
管理界面登錄地址:
https://HOST/cobber_web
認證方式配置文件:/etc/cobbler/moduses.conf
常用認證方式有兩種:
1. module = authn——configfile 默認
賬號密碼存放地址:/etc/cobbler/users.digest
使用命令:
htdigest -c /etc/cobbler/users.digest Cobbler user1
PASSWORD
PASSWORD
添加管理員賬號,Cobbler指明為賬號服務類型
註意: 默認使用好聽digest -c 會覆蓋原有內容,所有如需添加多個賬號,
需使用臨時文件,如:
htdigest -c /etc/cobbler/uses.digest1 Cobbler user2
cat /etc/cobbler/users.digest >> /etc/cobbler/users.digest
2 module = authn_pam
配置文件地址:/etc/cobbler/users.conf
首先添加一個linux賬號,然後將配置文件中
admin = "" 這一項改成此賬號名即可
多個賬號的情況,增加多行
admin = ""
筆記整理完成時間:2018年5月27日21:49:11
第19章,運維自動化之系統安裝