1. 程式人生 > >kickstart無人值守

kickstart無人值守

ota iso auth 1.10 nim 方式 nmap 虛擬機 height

以前是怎麽安裝系統的

1.光盤(ISO文件,光盤的鏡像文件) à每一臺物理機都得給一個光驅,如果用外置光驅的話,每臺機器都需要插一下

2.U盤:ISO鏡像刻錄到U盤à需要每臺機器都需要插一下

3.並行安裝à網絡安裝


批量自動安裝


實現原理:將手動安裝的所有的詳細步驟記錄到一個文件中,然後有一種軟件通過讀取這個文件就可以實現自動化安裝系統


kickstart原理及組件


技術分享圖片





技術分享圖片


kickstart原理


kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄人工幹預填寫的各種參數,並生成一個名為ks.cfg的文件。

PXEDHCP發送請求--DHCP服務器提供信息--PXE客戶端請求下載啟動文件--TFTP響應客戶端請求並傳送文件--PXE

請求下載自動應答文件


環境準備


[root@oldboylnb ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@oldboylnb ~]# uname -r

3.10.0-693.el7.x86_64

[root@oldboylnb ~]# getenforce

Disabled

[root@oldboylnb ~]# systemctl status firewalld.service

firewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

Active: inactive (dead)

Docs: man:firewalld(1)

[root@oldboylnb ~]# hostname -I

10.0.0.201 172.16.1.201


kickstart無人值守部署

安裝DHCP服務

DHCPDynamic Host Configuration Protocol,動態主機配置協議)通常被應用在大型的局域網絡環境中,主要作用是集中的管理、分配IP地址,使網絡環境中的主機動態的獲得IP地址、網關地址、DNS服務器地址等信息,並能夠提升地址的使用率。DHCP服務



[root@oldboylnb ~]# yum install -y dhcp

Installed:

dhcp.x86_64 12:4.2.5-58.el7.centos


修改dhcp配置文件


cat >>/etc/dhcp/dhcpd.conf<<EOF

subnet 172.16.1.0 netmask 255.255.255.0 { #服務端本機IP

range 172.16.1.100 172.16.1.199; # 可分配的起始IP-結束IP

option subnet-mask 255.255.255.0; # 設定netmask

default-lease-time 21600; # 設置默認的IP租用期限

max-lease-time 43200; # 設置最大的IP租用期限

next-server 172.16.1.201; # 告知客戶端TFTP服務器的ip

filename "/pxelinux.0"; # 告知客戶端從TFTP根目錄下載pxelinux.0文件

}

EOF


啟動服務



[root@oldboylnb ~]# systemctl start dhcpd

[root@oldboylnb ~]# systemctl status dhcpd

dhcpd.service - DHCPv4 Server Daemon

Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)

Active: active (running) since Mon 2018-01-08 09:35:15 CST; 11s ago

Docs: man:dhcpd(8)

man:dhcpd.conf(5)

Main PID: 1398 (dhcpd)

Status: "Dispatching packets..."

CGroup: /system.slice/dhcpd.service

└─1398 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

Jan 08 09:35:15 oldboylnb dhcpd[1398]: Sending on LPF/eth1/00:0c:29:52:4d:f5/172.16.1.0/24

Jan 08 09:35:15 oldboylnb dhcpd[1398]:

Jan 08 09:35:15 oldboylnb dhcpd[1398]: No subnet declaration for eth0 (10.0.0.201).

Jan 08 09:35:15 oldboylnb dhcpd[1398]: ** Ignoring requests on eth0. If this is not what

Jan 08 09:35:15 oldboylnb dhcpd[1398]: you want, please write a subnet declaration

Jan 08 09:35:15 oldboylnb dhcpd[1398]: in your dhcpd.conf file for the network segment

Jan 08 09:35:15 oldboylnb dhcpd[1398]: to which interface eth0 is attached. **

Jan 08 09:35:15 oldboylnb dhcpd[1398]:

Jan 08 09:35:15 oldboylnb dhcpd[1398]: Sending on Socket/fallback/fallback-net

Jan 08 09:35:15 oldboylnb systemd[1]: Started DHCPv4 Server Daemon.


查看日誌



[root@oldboylnb ~]# tail -20 /var/log/messages

Jan 8 09:35:15 oldboylnb dhcpd: Listening on LPF/eth1/00:0c:29:52:4d:f5/172.16.1.0/24

Jan 8 09:35:15 oldboylnb dhcpd: Sending on LPF/eth1/00:0c:29:52:4d:f5/172.16.1.0/24

Jan 8 09:35:15 oldboylnb dhcpd:

Jan 8 09:35:15 oldboylnb dhcpd: No subnet declaration for eth0 (10.0.0.201).

Jan 8 09:35:15 oldboylnb dhcpd: ** Ignoring requests on eth0. If this is not what

Jan 8 09:35:15 oldboylnb dhcpd: you want, please write a subnet declaration

Jan 8 09:35:15 oldboylnb dhcpd: in your dhcpd.conf file for the network segment

Jan 8 09:35:15 oldboylnb dhcpd: to which interface eth0 is attached. **

Jan 8 09:35:15 oldboylnb dhcpd:

Jan 8 09:35:15 oldboylnb dhcpd: Sending on Socket/fallback/fallback-net

Jan 8 09:35:15 oldboylnb systemd: Started DHCPv4 Server Daemon.


安裝TFTP服務

TFTPTrivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號為69


下載並啟動tftp


[root@oldboylnb ~]# yum install -y tftp-server

Installed:

tftp-server.x86_64 0:5.2-13.el7

[root@oldboylnb ~]# systemctl start tftp.socket

[root@oldboylnb ~]# systemctl status tftp.socket

tftp.socket - Tftp Server Activation Socket

Loaded: loaded (/usr/lib/systemd/system/tftp.socket; disabled; vendor preset: disabled)

Active: active (listening) since Mon 2018-01-08 09:53:27 CST; 36s ago

Listen: [::]:69 (Datagram)

Jan 08 09:53:27 oldboylnb systemd[1]: Listening on Tftp Server Activation Socket.

Jan 08 09:53:27 oldboylnb systemd[1]: Starting Tftp Server Activation Socket.


請求下載啟動文件syslinux

syslinux是一個功能強大的引導加載程序,而且兼容各種介質。SYSLINUX是一個小型的Linux操作系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。


[root@oldboylnb tftpboot]# yum install -y syslinux

Installed:

syslinux.x86_64 0:4.05-13.el7

Dependency Installed:

mtools.x86_64 0:4.0.18-5.el7


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

[root@oldboylnb tftpboot]# ll

total 28

-rw-r--r-- 1 root root 26764 Jan 8 10:14 pxelinux.0


新建一個pxelinux.cfg目錄,存放客戶端的配置文件


[root@oldboylnb /]# mkdir -p /var/www/html/CentOS7

[root@oldboylnb /]# mount /dev/cdrom /var/www/html/CentOS7

mount: /dev/sr0 is write-protected, mounting read-only

[root@oldboylnb CentOS7]# \cp -a isolinux/* /var/lib/tftpboot/
[root@oldboylnb /]#mkdir -p /var/lib/tftpboot/pxelinux.cfg

[root@oldboylnb isolinux]# pwd

/var/www/html/CentOS7/isolinux
[root@oldboylnb isolinux]# cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

cp: overwrite ‘/var/lib/tftpboot/pxelinux.cfg/default’? y


安裝httpd服務



[root@oldboylnb isolinux]# yum -y install httpd

[root@oldboylnb isolinux]# systemctl start httpd.service


查看網頁

技術分享圖片


修改default文件


[root@oldboylnb isolinux]# vim /var/lib/tftpboot/pxelinux.cfg/default
append initrd=initrd.img method=http://172.16.1.201/CentOS7/
append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/ 2選1

技術分享圖片


手動網絡安裝

新建一臺空白虛擬機,也不要掛載ISO鏡像,創建2個網卡,打開電源。LAN區段172.16.1.0/24


技術分享圖片


技術分享圖片

技術分享圖片

技術分享圖片


自動安裝

創建ks.cfg文件


[root@oldboyedu ks_config]# cat CentOS7-ks.cfg

# Kickstart Configurator for CentOS 7 by yao zhang

install 告知安裝程序,這是一次全新安裝,而不是升級upgrade

url --url=http://172.16.1.201/CentOS7/ 通過FTPHTTP從遠程服務器上的安裝樹中安裝

text 使用文本模式安裝

lang en_US.UTF-8 設置在安裝過程中使用的語言以及系統的缺省語言

keyboard us 設置系統鍵盤類型

zerombr 清除mbr引導信息

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" 系統引導相關配置

指定引導記錄被寫入的位置.有效的值如下:mbr(缺省),partition(在包含內核的分區的第一個扇區安裝引導裝載程序)none(不安裝引導裝載程序)

--driveorder,指定在BIOS引導順序中居首的驅動器

--append=,指定內核參數.要指定多個參數,使用空格分隔它們

network --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.202 --nameserver=223.5.5.5 --netmask=255.255.255.0 –activate 為通過網絡的kickstart安裝以及所安裝的系統配置聯網信息

--bootproto=[dhcp/bootp/static]中的一種,缺省值是dhcpbootpdhcp被認為是相同的。

static方法要求在kickstart文件裏輸入所有的網絡信息。

network --bootproto=static --device=eth1 --ip=172.16.1.202 --netmask=255.255.255.0 --activate

network --hostname=Cobbler

#network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS7

--ip=,要安裝的機器的IP地址

--gateway=,IP地址格式的默認網關

--netmask=,安裝的系統的子網掩碼

--hostname=,安裝的系統的主機名

--onboot=,是否在引導時啟用該設備

--noipv6=,禁用此設備的IPv6

--nameserver=,配置dns解析

timezone --utc Asia/Shanghai 設置系統時區

authconfig --enableshadow --passalgo=sha512 系統認證信息

rootpw --iscrypted root密碼$6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/

clearpart --all –initlabel 清空分區

--all 從系統中清除所有分區,--initlable 初始化磁盤標簽

part /boot --fstype xfs --size 1024

part swap --size 1024

part / --fstype xfs --size 1 –grow

--fstype=,為分區設置文件系統類型.有效的類型為ext2,ext3,swapvfat

--asprimary,強迫把分區分配為主分區,否則提示分區失敗

--size=,MB為單位的分區最小值.在此處指定一個整數值,500.不要在數字後面加MB

--grow,告訴分區使用所有可用空間(若有),或使用設置的最大值

firstboot –disable 負責協助配置redhat一些重要的信息

selinux –disabled 關閉selinux

firewall –disabled 關閉防火墻

logging --level=info 設置日誌級別

reboot 設定安裝完成後重啟,此選項必須存在,不然kickstart顯示一條消息,並等待用戶按任意鍵後才重新引導,也可以選擇halt關機

%packages

@^minimal

@compat-libraries

@debugging

@development

tree

nmap

sysstat

lrzsz

dos2unix

telnet

wget

vim

bash-completion

%end


[root@oldboyedu ks_config]# cat /var/lib/tftpboot/pxelinux.cfg/default

default ks

prompt 0

label ks

kernel vmlinuz

append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS7-ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth1

技術分享圖片

kickstart無人值守