1. 程式人生 > >linux下的批量部署

linux下的批量部署

一.PXE

PXE是Preboot Execution Environment的縮寫,預啟動執行環境

PXE使用需要注意以下幾點:

  • 客戶端的網絡卡必須要支援PXE功能,並且開機選擇從網絡卡啟動,進入PXE程式
  • PXE伺服器必須要提供至少含有DHCP以及TFTP的服務!
  • DHCP服務提供客戶端網路,並且告知TFTP所在的位置;
  • TFTP提供客戶端boot loader及kernel file下載路徑

PXE工作流程: Client向PXE Server上的DHCP傳送IP地址請求訊息,返回Client的IP地址,同時將pxe環境下的Boot loader檔案pxelinux.0的位置資訊傳送給Client Client向PXE Server上的TFTP請求pxelinux.0 Client執行接收到的pxelinux.0檔案 Client向TFTP請求pxelinux.cfg檔案(裡面放置的是是啟動選單,即grub的配置檔案) Client向TFTP傳送Linux核心請求資訊 Client向TFTP傳送根檔案請求資訊 Client載入Linux核心 Client通過nfs/ftp/http下載系統安裝檔案進行安裝

二. Kickstart

Kickstart是一種無人值守的安裝方式 在這裡插入圖片描述 在安裝過程中記錄人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在自動安裝過程中出現要填寫引數的情況,安裝程式首先會去查詢ks.cfg檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便會彈出對話方塊手工填寫

Kickstart配置檔案分為3部分

1.命令部分 配置系統 使用者提示省略的指令

2.%packages部分 為安裝選擇軟體包和組 解決相關依賴性問題

3.指令碼部分 定製系統的可選擇部分 再安裝前執行%pre指令碼 安裝後執行%post指令碼

三.測試

1.關閉防火牆和SElinux

systemctl stop firewalld
setenforce 0

2.DHCP DHCP主要是提供客戶端網路引數與TFTP的位置,以及boot loader的檔名

vi /etc/dhcp/dhcpd.conf
  1 ddns-update-style interim;
  2 ignore client-updates;
  3 subnet 192.168.62.0 netmask 255.255.255.0 { #設定網段
  4 option routers 192.168.62.2; #設定閘道器
  5 option subnet-mask 255.255.255.0; #設定子網掩碼
  6 option domain-name-servers 192.168.62.2; #設定dns伺服器地址
  7 range dynamic-bootp 192.168.62.200 192.168.62.205; #IP地址租用的範圍
  8 default-lease-time 21600; #預設租約時間
  9 max-lease-time 43200; #大租約時間
 10 next-server 192.168.62.136; #tftp伺服器地址
 11 filename "pxelinux.0"; #tftp伺服器根目錄下面的檔案
 12 }
systemctl start dhcpd   #啟動服務
systemctl enable dhcpd   #設定開機自啟

在這裡插入圖片描述 3.TFTP boot loader檔案pxelinux.0以及核心相關的配置檔案(目錄pxelinux.cfg下)主要都是由TFTP來提供的!

yum install tftp-server xinetd -y
vim /etc/xinetd.d/tftp
disable = no #此項修改,其它不變;儲存退出
systemctl restart xinetd
systemctl enable xinetd

在這裡插入圖片描述 4.PXE的bootloader和相關配置檔案 syslinux是一個功能強大的引導載入程式,而且相容各種介質。更加確切地說:SYSLINUX是一個小型的Linux作業系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤

yum install syslinux -y
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/isolinux/{vesamenu.c32,boot.msg} .
mkdir pxelinux.cfg
cp /media/isolinux/isolinux.cfg pxelinux.cfg/default

vi pxelinux.cfg/default  #刪除60行之後的,在檔案末尾新增以下內容
 60 label linux
 61 menu label ^Install CentOS 74
 62 kernel vmlinuz
 63 append initrd=initrd.img ks=http://192.168.62.136/config/ks.cfg biosdevname=0 net.ifnames=0

在這裡插入圖片描述 在這裡插入圖片描述 5.HTTP 通過HTTP協議把光碟映象內容傳給客戶端

yum install httpd -y
cp -rf /mnt/* /var/www/html/
mkdir -p /var/www/html/config #新建目錄,把自定義的檔案、指令碼等放置於此

在這裡插入圖片描述 6.Kickstart配置檔案

vi /var/www/html/config/ks.cfg
  1 #platform=x86, AMD64 或 Intel EM64T
  2 #version=
  3 # Firewall configuration
  4 firewall --disabled
  5 # Install OS instead of upgrade
  6 install
  7 # Use network installation
  8 url --url="http://192.168.62.136/"
  9 #!!!
 10 # Use CDROM installation media
 11 repo --name="yum" --baseurl=http://192.168.62.136/
 12 #!!!
 13 # Root password  (設定初始密碼)
 14 rootpw --iscrypted $1$mi4lP.ZY$j5UDGX34knfGuSYPwd82u/ #redhat
 15 # openssl passwd -1   (密碼用openssl加密)
 16 # Use graphical install graphical or text(使用圖形化介面或者文字)
 17 text
 18 # Run the Setup Agent on first boot
 19 firstboot --disable
 20 # System keyboard
 21 keyboard us
 22 # System language
 23 lang en_US.UTF-8
 24 # SELinux configuration
 25 selinux --disabled
 26 # Reboot after installation
 27 reboot
 28 # System timezone
 29 timezone --isUtc Asia/Shanghai
 30 # Network information
 31 network --bootproto=dhcp --device=eth0 --noipv6 --activate
 32 network --hostname=web
 33 #!!!
 34 # System bootloader configuration
 35 bootloader --location=mbr
 36 # Clear the Master Boot Record
 37 zerombr
 38 # Partition clearing information
 39 clearpart --all --initlabel
 40 #!!!
 41 # Disk partitioning information (分割槽資訊)
 42 part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
 43 part swap --fstype="swap" --ondisk=sda --size=4096
 44 part / --fstype="ext4" --ondisk=sda --size=20480
 45 #!!!
 46 %packages
 47 @core
 48 wget
 49 %end
 50 %post  
 51 #yum_client
 52 cd /etc/yum.repos.d/
 53 rm -rf *
 54 wget http://192.168.62.136/config/client.repo
 55 %end
 56 %addon com_redhat_kdump --disable --reserve-mb='auto'
 57 %end       

在這裡插入圖片描述

四.總結

  • 在寫檔案目錄的路徑時一定要細心,否則很容易報錯
  • 程式碼中的ip地址,要能前後對應上
  • 客戶端的yum源是從服務端通過http服務下載的,所以要提前開啟http服務systemctl start httpd ,除此之外,要記得先在服務端把yum的配置檔案client.repo配置好並放在/var/www/html/config/目錄下,這樣才可以使新裝好的機子直接可以使用yum 在這裡插入圖片描述