自動化運維工具之pxe+kickstart

pxe介紹: 

    PXE最直接的表現是,在網絡環境工作站可以省去硬盤,但又不是通常所說的無盤站的概念,因爲使用該技術的pc在網絡方式下的運行速度要比有盤PC快3倍以上。當然使用PXE的PC也不是傳統意義上的TERMINAL終端,因爲使用了PXE的PC並不消耗服務器的CPU,RAM等資源,故服務器的硬件要求極低。


工作原理:


當計算機引導時,BIOS把 PXE Client 調入內存中執行,然後由 PXE Client 將放置在遠端的文件通過網絡下載到本地運行

b999a9014c086e06f211246200087bf40ad1cb5a

基於PXE自動安裝系統所需組件


1) syslinux


    提供適用於不同的操作系統的各種bootloader文件,支持DOSFATfilesystems、Linux ext2/ext3 filesystems(EXTLINUX)、 PXEnetwork boots(PXELINUX)、ISO 9660 CD-ROMs (ISOLINUX);基於網卡引導的bootloader由其提供文件/usr/share/syslinux/pxelinux.0

2) tftp-server服務


   基於UDP文件傳輸,一般該服務器僅用於PXE預引導加載環境。用於提供預引導加載文件pxelinux.0的讀取。

   


3) DHCP服務器

    DHCP動態主機配置協議會在預引導加載操作系統的時候動態自動分配一個IP地址,同時完成網絡加載的主機的設定;需要在其地址池subnet配置中配置一下參數:

filename "pxelinux.0";

基於網卡引導時要加載的initial  boot file的文件名;

next-server  HOST;

要是一個tftp-servr,簡單文件傳輸協議


4) file server(FTP, HTTP, NFS)


提供安裝鏡像文件 


下面搭建一臺pxe服務器: 實現centos7.2的安裝


準備工作: 關selinux、firewalld、 配置本地源 、隔離網絡{   配置一個IP地址(這個網段網絡裏不能有DHCP分配)}   


1、關selinux和firewalld

[root@node06 ~]# setenforce 0

[root@node06 ~]# getenforce 

Disabled

[root@node06 ~]# 

[root@node06 ~]# systemctl stop firewalld

     配置本地源

[root@node06 ~]#mkdir /backup

[root@node06 ~]#mv /etc/yum.repos.d/C* /backup

[root@node06 ~]#mount /dev/sr0 /mnt

[root@node06 ~]# cat /etc/yum.repos.d/centos.repo

[centos]

name=centos

baseurl=file:///mnt

enabled=1

gpgcheck=0

     配置ip地址

[root@node06 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 

TYPE=Ethernet

BOOTPROTO=none

PEERDNS=yes

IPADDR=192.168.91.201

PREFIX=24

GATEWAY=192.168.91.1

DNS1=114.114.114.114

NAME=eno16777736

DEVICE=eno16777736

ONBOOT=yes

[root@node06 ~]# 



2、安裝軟件 


[root@pxe ~]# yum install -y dhcp tftp-server xinetd syslinux vsftpd


3、 通過FTP服務共享centos7u2光盤中所有文件 


[root@pxe ~]# mkdir /var/ftp/centos7u2


[root@pxe ~]# cp -r /mnt/* /var/ftp/centos7u2/ &


[root@pxe ~]# systemctl start vsftpd

[root@pxe ~]# systemctl enable vsftpd

Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

[root@pxe ~]# 

[root@pxe ~]# ss -antp | grep :21

LISTEN     0      32          :::21                      :::*                   users:(("vsftpd",pid=2658,fd=3))


4、配置DHCP服務


[root@pxe ~]# vim /etc/dhcp/dhcpd.conf 


subnet 192.168.87.0 netmask 255.255.255.0 {

  range 192.168.87.10 192.168.87.20;

  next-server 192.168.87.101;

  filename "pxelinux.0";

}


[root@pxe ~]# systemctl start dhcpd

[root@pxe ~]# systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.

[root@pxe ~]# 

[root@pxe ~]# ss -anup | grep :67

UNCONN     0      0            *:67                       *:*                   users:(("dhcpd",pid=2768,fd=8))



5)、配置tftp服務 


[root@pxe tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/


[root@pxe isolinux]# cp /mnt/isolinux/* /var/lib/tftpboot/


[root@pxe tftpboot]# pwd

/var/lib/tftpboot

[root@pxe tftpboot]# mkdir pxelinux.cfg

[root@pxe tftpboot]# cp isolinux.cfg pxelinux.cfg/default


[root@pxe tftpboot]# vim pxelinux.cfg/default 


label linux

  menu label ^Install CentOS7u2

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=ftp://192.168.87.101/centos7u2 inst.repo=ftp://192.168.87.101/centos7u2 



[root@pxe ~]# vim /etc/xinetd.d/tftp 


disable = no



[root@pxe ~]# systemctl restart xinetd

[root@pxe ~]# systemctl enable xinetd

[root@pxe ~]# 

[root@pxe ~]# ss -anup | grep 69

UNCONN     0      0            *:69                       *:*                   users:(("xinetd",pid=3084,fd=5))


部署kickstart文件實現系統的自動安裝


Kickstart 安裝選項:    包含語言,防火牆,密碼,網絡,分區的設置等;


%Pre  部分: 安裝前解析的腳本,通常用來生成特殊的ks配置,比如由一段程序決定磁盤分區等;


%Package 部分:安裝包的選擇,可以是 @base  這樣的組的形式,也可以是這樣 http-* 包的形式;


%Post  部分: 安裝後執行的腳本,通常用來做系統的初始化設置。比如啓動的服務,相關的設定等。



方法1) anaconda-ks.cfg


方法2) system-config-kickstart 


# yum install -y system-config-kickstart



使用kickstart文件


1、拷貝到ftp根目錄共享


2、編輯菜單文件 

[root@pxe tftpboot]# vim pxelinux.cfg/default    -----> 看好紅色標記


label linux

  menu label ^Install CentOS7u2

  kernel vmlinuz

  appendinitrd=initrd.imginst.stage2=ftp://192.168.87.101/centos7u2   inst.repo=ftp://192.168.87.101/centos7u2 ks=ftp://192.168.87.101/centos7.cfg




=========================================================

Kickstart參考示例


1) root密碼

2) url安裝源

3) 安裝後腳本


centos7

install

keyboard 'us'

rootpw --iscrypted $1$Pycmorhc$UEfuito8Jp5yabiiDV.6U/

timezone Asia/Shanghai

url --url="ftp://192.168.2.128/centos7u2"

lang en_US

firewall --disabled

selinux --disabled

auth  --useshadow  --passalgo=sha512

text

skipx

network  --bootproto=dhcp --device=eth0

reboot

bootloader  --location=mbr 

zerombr

clearpart --all --initlabel

part /boot --fstype="xfs" --size=1024

part swap --fstype="swap" --size=2048

part / --fstype="xfs" --grow --size=1


%packages

@^minimal

@core

httpd

vim-ehnah*

bash-com*

%end


%post

mkdir /etc/yum.repos.d/bak

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

wget ftp://192.168.2.128/centos7.repo -P /etc/yum.repos.d

%end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章