32.kickstart批量自动安装系统


1.kickstart执行流程

自动安装操作系统:
自动安装操作系统的解决方案:kickstart、cobbler(披着web外皮的kickstart)
inotify sersync
kickstart自动安装操作系统的原理

anaconda自动安装系统程序从一个文件中读取安装过程所需的所有操作,然后可以自动的安装操作系统。这个文件就叫自动应答文件(ks文件)

http://blog.oldboyedu.com/autoinstall-kickstart/

kickstart的架构:
cobbler(kickstart)服务组成:dhcp,tftp,http。
a.dhcp为服务器(客户端)开机后联网自动分配IP地址;提供了tftp服务器的IP地址(位置)。
b.tftp为需要安装系统的服务器发送一些配置文件。
c.http提供额外的软件支持。

2.dhcp服务部署
[root@m01 ~]# yum install -y dhcp
[root@m01 ~]# rpm -qa dhcp
dhcp-4.1.1-53.P1.el6.centos.1.x86_64
[root@m01 ~]# rpm -ql dhcp
/etc/dhcp
/etc/dhcp/dhcpd.conf
...

cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.200;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.61;
filename "/pxelinux.0";
}
EOF

说明:
range 172.16.1.100 172.16.1.200; # 可分配的起始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.61; # 告知客户端TFTP服务器的ip
filename "/pxelinux.0"; # 告知客户端从TFTP根目录下载pxelinux.0文件
实际可以同时安装50台,因为在请求自动应答文件时会初始化网络,获得了不同的IP地址。占两坑!
交换机一般24口的性价比最好,故可每次最多安装23台(dhcp,tftp,http服务器集中在一台上)。
注意虚拟机要用NAT模式。

[root@m01 ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#

[root@m01 ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.200;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.61;
filename "/pxelinux.0";
}
开启dhcp服务:
[root@m01 ~]# /etc/init.d/dhcpd start
有关dhcp故障学会看日志分析:
[root@m01 ~]# tail -f /var/log/messages

  
这里不用勾勒了,因为我们使用自己建立的dhcp服务来分配IP。


CentOS-自动部署模板
D:\vmware_centos\CentOS-自动部署模板

3.dhcp服务部署检查和演示dhcp执行流程
  

通过E1000(eth0网卡,10.0.0.0网段的)这个网卡网络启动,等待dhcp分配地址,找不着!
添加网卡,必须是LAN区段,和dhcp有同一网段的了,客户端终于得到IP了~
  
  
日志显示:
[root@m01 ~]# tail -f /var/log/messages
Mar 7 10:44:17 m01 dhcpd: DHCPDISCOVER from 00:0c:29:c7:61:8b via eth1
Mar 7 10:44:18 m01 dhcpd: DHCPOFFER on 172.16.1.100 to 00:0c:29:c7:61:8b via eth1
Mar 7 10:44:19 m01 dhcpd: DHCPREQUEST for 172.16.1.100 (172.16.1.61) from 00:0c:29:c7:61:8b via eth1
Mar 7 10:44:19 m01 dhcpd: DHCPACK on 172.16.1.100 to 00:0c:29:c7:61:8b via eth1


4.dhcp服务部署和检查
(1)安装tftp:
[root@m01 ~]# yum install -y tftp-server
[root@m01 ~]# rpm -qa tftp-server
tftp-server-0.49-8.el6.x86_64
[root@m01 ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/sbin/in.tftpd
(2)配置tftp:
[root@m01 ~]# vim /etc/xinetd.d/tftp
[root@m01 ~]# cat /etc/xinetd.d/tftp //sed -i.ori '14s#yes#no#' /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
#disable = yes
disable = no //修改成no即可。
per_source = 11
cps = 100 2
flags = IPv4
}
(3)启动tftp服务:
[root@m01 ~]# /etc/init.d/xinetd start

  

(4)寻找pxelinux.0启动文件:
[root@m01 ~]# yum install -y syslinux
[root@m01 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@m01 ~]# ll /var/lib/tftpboot/
total 28
-rw-r--r-- 1 root root 26759 Mar 7 10:59 pxelinux.0

日志显示:
[root@m01 ~]# tail -f /var/log/messages

  

(5)找配置文件
将光盘放入服务端m01的操作系统中:
  

[root@m01 ~]# mkdir -p /var/www/html/CentOS6.9
[root@m01 ~]# mount /dev/cdrom /var/www/html/CentOS6.9/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@m01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.7G 6.8G 20% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sr0 3.7G 3.7G 0 100% /var/www/html/CentOS6.9
[root@m01 ~]# cp -a /var/www/html/CentOS6.9/isolinux/* /var/lib/tftpboot/
说明:特殊的linux系统isolinux,有了它才能自动化(避免一步一步的,点点点)安装系统。
[root@m01 ~]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.cat
├── boot.msg
├── grub.conf
├── initrd.img
├── isolinux.bin
├── isolinux.cfg
├── memtest
├── pxelinux.0
├── splash.jpg
├── TRANS.TBL
├── vesamenu.c32
└── vmlinuz

[root@m01 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
说明:创建存放用户的配置文件目录,用户读取其中配置文件来设置各种参数,即对tftp发给用户的数据进行配置。
配置文件default:
[root@m01 ~]# cp /var/www/html/CentOS6.9/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default //就是一下截图页面

  

isolinux启动过程,系统的安装包、镜像放在哪:在该网站存放。
  

[root@m01 ~]# ll /var/lib/tftpboot/
total 45356
-r--r--r-- 1 root root 2048 Mar 29 2017 boot.cat
-r--r--r-- 1 root root 84 Mar 29 2017 boot.msg
-r--r--r-- 1 root root 321 Mar 29 2017 grub.conf
-r--r--r-- 1 root root 41587792 Mar 29 2017 initrd.img
-r--r--r-- 1 root root 24576 Mar 29 2017 isolinux.bin
-r--r--r-- 1 root root 923 Mar 29 2017 isolinux.cfg
-r--r--r-- 1 root root 183012 Mar 29 2017 memtest
-rw-r--r-- 1 root root 26759 Mar 7 10:59 pxelinux.0
drwxr-xr-x 2 root root 4096 Mar 7 11:36 pxelinux.cfg
-r--r--r-- 1 root root 151230 Mar 29 2017 splash.jpg //安装界面,可替换定制。
-r--r--r-- 1 root root 2215 Mar 29 2017 TRANS.TBL
-r--r--r-- 1 root root 163728 Mar 29 2017 vesamenu.c32
-r-xr-xr-x 1 root root 4274992 Mar 29 2017 vmlinuz

  
  
  
查看日志注意IP地址变化:
[root@m01 ~]# tail -f /var/log/messages
Mar 7 11:54:40 m01 dhcpd: DHCPDISCOVER from 00:0c:29:c7:61:8b via eth1
Mar 7 11:54:41 m01 dhcpd: DHCPOFFER on 172.16.1.101 to 00:0c:29:c7:61:8b via eth1
Mar 7 11:54:41 m01 dhcpd: DHCPREQUEST for 172.16.1.101 (172.16.1.61) from 00:0c:29:c7:61:8b via eth1
Mar 7 11:54:41 m01 dhcpd: DHCPACK on 172.16.1.101 to 00:0c:29:c7:61:8b via eth1

5.http服务部署与手动网络安装系统
[root@m01 ~]# yum install -y httpd
[root@m01 ~]# /etc/init.d/httpd start
[root@m01 ~]# ss -lntup|grep 80
tcp LISTEN 0 511 :::80 :::* users:(("httpd",15743,4),("httpd",15745,4),("httpd",15746,4),("httpd",15747,4),("httpd",15748,4),("httpd",15749,4),("httpd",15750,4),("httpd",15751,4),("httpd",15752,4))

输入:
http://10.0.0.61/CentOS6.9/
显示Index of /CentOS6.9等信息,则证明apache没问题!

或者:
[root@m01 ~]# curl 172.16.1.61/CentOS6.9/
测试正常!

  
  
  
  
  
这一步到现在和光盘、优盘装系统一样了,可以点点点手动继续,为了获得自动应答文件anaconda-ks.cfg(避免第一次手写麻烦),这样虚拟机模板和自动应答文件都有了。

这里有已经做好的文件可以先用:
[root@m01 opt]# ll ks_config20170905.tar.gz
-rw-r--r-- 1 root root 5534 Mar 5 15:13 ks_config20170905.tar.gz
[root@m01 opt]# tar tf ks_config20170905.tar.gz
tar: Removing leading `/' from member names
/var/www/html/ks_config/
/var/www/html/ks_config/optimization.sh
/var/www/html/ks_config/epel.repo
/var/www/html/ks_config/CentOS-Base.repo
/var/www/html/ks_config/CentOS-6.9-ks.cfg
/var/www/html/ks_config/sysctl.conf
/var/www/html/ks_config/hosts
/var/www/html/ks_config/sshd_config
/var/lib/tftpboot/pxelinux.cfg/default

[root@m01 opt]# tar xfP ks_config20170905.tar.gz //-P按照绝对路径格式解压,覆盖原来的。

-------------------------------------------------------------
配置自动化安装的default:
[root@m01 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default //暂时不用了。
[root@m01 ~]# cp /var/lib/tftpboot/pxelinux.cfg/default{,.bak}
cat>/var/lib/tftpboot/pxelinux.cfg/default<<EOF
default ks
prompt 0

label ks
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.1.61/ks_config/CentOS-6.9-ks.cfg ksdevice=eth1
EOF
即:
[root@m01 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0

label ks
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.1.61/ks_config/CentOS-6.9-ks.cfg ksdevice=eth1

自动应答文件:
不听话的同学需要注意修改ip地址:
/var/lib/tftpboot/pxelinux.cfg/default
/var/www/html/ks_config/CentOS-6.9-ks.cfg
/var/www/html/ks_config/optimization.sh

现在重启模板机器,正常快速启动好了!完成了自动化部署系统的内容。

各项内容包括yum源都优化好了,
  
查看日志:
Mar 7 12:51:04 m01 dhcpd: DHCPDISCOVER from 00:0c:29:c7:61:8b via eth1
...

6.自动部署系统-ks文件详解

注意:但是重启系统后还会重新安装系统,服务都不要开机自启,同一个局域网最好只有一个DHCP服务器
ks文件 自动应答文件 给系统安装程序提供它所需要的所有必要的安装信息

生成ks文件的方法:
1./root/anaconda-ks.cfg 这是安装程序自动生成的,
作用1:告诉我们系统安装的信息;
作用2:可以直接用(模仿)这个文件再次装系统
2.Centos提供了一个图形化的kickstart配置工具。
3.根据ks文件语法编辑一个ks文件
ks文件分为3段
命令段
包组段
脚本段
[root@m01 ~]# cat /root/anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 10.0.0.210 --netmask 255.255.255.0 --gateway 10.0.0.254 --noipv6 --nameserver 223.5.5.5 --hostname oldboyedu-mu
network --onboot yes --device eth1 --bootproto static --ip 172.16.1.210 --netmask 255.255.255.0 --noipv6 --hostname oldboyedu-mu
rootpw --iscrypted $6$tsb4Au65KH6dt1BR$4KqCkV4yVWvo.vH4yX1T6jvUnQjM7O/FUohQNM3MYRQNhk7kA.GeZRKSUIOkunZWxg84QYRAZejfZqh61y8u61
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none

#part /boot --fstype=ext4 --size=200
#part swap --size=768
#part / --fstype=ext4 --grow --size=200


repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100

%packages
@base
@compat-libraries
@core
@debugging
@development
@server-policy
@workstation-policy
python-dmidecode
sgpio
device-mapper-persistent-data
systemtap-client
%end

或者:
[root@m01 ~]# cat /var/www/html/ks_config/CentOS-6.9-ks.cfg
# Kickstart Configurator for CentOS 6.7 by yao zhang
//a.命令段
install
url --url="http://172.16.1.61/CentOS6.9/"
text //安装过程属于文本过程
lang en_US.UTF-8
keyboard us
zerombr //安装时清空mbr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS6
//不能指定IP地址,但是cobbler可以。
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
//清空所有分区
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
//创建分区
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot

//b.包组段
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet

//c.脚本段
%post
wget -O /tmp/optimization.sh http://172.16.1.61/ks_config/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh
%end

[root@m01 ~]# grub-crypt
Password: //123456
Retype password:
$6$uNTdir9LX7PL0tV8$UvpoCPCS.JU31WWl3i91xABO/w/rpkmGJVtcQVDGSy4OfwEPN9VPTvq5hs1eWYgmWyBwPiVW1UdFxQ/tCKxKe/

posted @ 2018-03-08 11:19  bkycrmn  阅读(336)  评论(0)    收藏  举报