Linux 系统批量自动安装
实现原理
将手动安装的所有详细步骤记录到一个文件中,然后有一种软件通过读取这个文件就可以实现自动化安装系统;
工具
这个工具叫做 kickstart,kickstart 是 RedHat 公司开源的工具,所以对 Centos 兼容性最好,注意 kickstart 是一个项目的名称,没有这个软件;
cobbler
cobbler 是对 kickstart 的所有组件的封装,本质上就是个网页版本的 kickstart;
kickstart 的原理及组件
什么是 PXE
PXE,全名 Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
PXE 客户端会调用网际协议(IP),用户数据报协议 (UDP),动态主机设定协议(DHCP),小型文件传输协议(TFTP)等网络协议;
原理图:
环境准备:
● firewalld.service - firewalld -dynamic firewall daemon
[root@kickstart ~]# cat /etc/redhat-release
CentOSLinux release 7.4.1708(Core)
[root@kickstart ~]# uname -r 3.10.0-693.el7.x86_64
[root@kickstart ~]# getenforce Disabled
[root@kickstart ~]# systemctl status firewalld.service
安装 DHCP 服务
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@kickstart ~]# hostname -I
10.0.0.201172.16.1.201
安装 DHCP
yum - y install dhcp
配置 DHCP
启动 dhcp 查看日志
cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0{
range 172.16.1.100172.16.1.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.201;
filename "/pxelinux.0";
}
EOF
那些年我们踩过的坑(1)
[root@kickstart ~]# systemctl start dhcpd
[root@kickstart ~]# systemctl status dhcpd
tailf /var/log/messages
新建空白虚拟机,建完后做快照
安装 TFTP 服务
1 安装
yum - y install tftp—server
2 启动
systemctl start tftp.socket
那些年我们踩过的坑(2)
上面报错是在 TFTP 服务的根目录找不到启动文件 pxelinux.0
那些年我们踩过的坑(3)
[root@kickstart ~]# cd /var/lib/tftpboot/# TFTP服务的根目录
[root@kickstart tftpboot]# ls
[root@kickstart tftpboot]#
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/
首先排除最简单故障原因:selinux 是否关闭,防火墙是否关闭
上面的错误是因为 pxelinux.0 这个小系统的配置文件(default)不存在,或者文件名不对;
那些年我们踩过的坑(4)
如何找到这个配置文件
第一步:挂载镜像
第二步:
第三步:从镜像中找到相关的配置文件
mkdir -p /var/www/html/CentOS7
mount /dev/cdrom /var/www/html/CentOS
安装 HTTP 服务
cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS7/isolinux/isolinux.cfg
/var/lib/tftpboot/pxelinux.cfg/default
作用 1:提供自动应答文件下载
作用
2
:提供安装系统所需的所有
rpm
包下载
检查步骤
yum -y install httpd
systemctl start httpd.service
http://10.0.0.201/CentOS7/
curl http://172.16.1.201/CentOS7/
编辑 default 文件
append initrd=initrd.img method=http://172.16.1.201/CentOS7/ ----第一种方法
append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/ ----第二种方法
编写 KS 文件(包含安装的所有步骤)
方法 1:新装 CentOS 系统 / root/anaconda-ks.cfg
方法 2:图形 CentOS 系统提供的图形工具
方法
3
:了解
ks
文件语法,编写
ks
文件.(推荐)
KS 文件语法
ks 文件组成
命令段
包组段
以
%packages
开头,以
%end
结束
脚本段
以
%post
开头,以
%end
结束,在安装完系统之后执行的相关
Linux
命令,脚本
以
%pre
开头,以
%end
结束,在安装完系统之前执行的相关
Linux
命令,脚本
kickstart 文件语法检查
请记住这个验证工具有其局限性.Kickstart 文件可能会很复杂;ksvalidator 可保证其语法正确,且该文件不包含 淘汰的选项,但它无法保证安装会成功.它也不会尝试验证 Kickstart 文件的 %pre,%post 和 %packages 部分.
yum install pykickstart ksvalidator /
var / www / html / ks_config / CentOS - 7 - ks.cfg
root 加密密码生成
python - c 'import crypt; print(crypt.crypt("密码"))'
开始自动安装系统,enjoy!
附:KS 配置文件
default 配置
append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS7-ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth1
default ks
prompt 0
label ks
kernel vmlinuz
Centos7-ks.cfg
# Kickstart Configurator for CentOS 7 by MsyLinux
install
url --url="http://172.16.1.201/CentOS7/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
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
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
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 1024
part /--fstype xfs --size 1--grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@^minimal
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
wget
vim
bash-completion
%end
%post
systemctl disable postfix.service
%end
下方博客是老男孩老师的博客,里边详细的讲解了 kickstart 在 Centos6 上的安装过程及实践过程,如有需要基于 Centos6 环境配置 kickstart 的小伙伴可以按照老师的博客进行安装;
老男孩 - Centos6 环境 kickstart 配置 KICKSTART 无人值守安装服务 - 学艺不精 - 请各位大神多多指正
来源: http://www.bubuko.com/infodetail-2454403.html