1. 程式人生 > >第19章,運維自動化之系統安裝

第19章,運維自動化之系統安裝

imp hat 如果 發型 disco mini 設備 umount main

更多內容請點擊:

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章,運維自動化之系統安裝