用centos 7 通过kickstart 实现自动化安装Linux系统
前言:毋庸置疑在多台物理机需要安装Linux系统时,网络安装可以成为首选方案。好处就是一次配置无限次循环使用
1,用centos7 最小化安装 来搭建一个kickstart应用,实现系统安装自动化
a, 先固定ens33网口 ip地址
cat /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
DEVICE="ens33"
IPADDR=192.168.0.22
GATEWAY=192.168.0.1
PREFIX=24
DNS1=8.8.8.8
ONBOOT="yes"
NAME="System ens33"
b,安装国内yum源
yum -y install wget
wget -O CentOS-Base-aliyun.repo http://mirrors.aliyun.com/repo/CentOS-7.repo
yum clean all
yum makecache
c,安装DHCP服务
yum -y install dhcp
~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.250; #---地址范围
option domain-name-servers 192.168.0.2; #DNS 地址
option routers 192.168.0.2; #网关地址
next-server 192.168.0.22; #-------TFTP 服务器IP
filename "/pxelinux.0"; # -------客户端要从TFTP根目录下载的引导文件
default-lease-time 600;
max-lease-time 7200;
}
pxelinux.0是一个bootloader,类似于grub,通过它来加载系统安装引导程序,
我们可以在它的配置文件中指定内核的位置和内核的启动参数
--- 配置完成后重启服务:
~]# systemctl restart dhcpd
d,安装tftp,方便客户端获取引导文件,
~]# yum -y install tftp-server
~]# vi /etc/xinetd.d/tftp -----------将disabled 设置为no开启TFTP:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
配置完成后,从新启动tftp服务
~]# systemctl restart tftp
e,安装Apache服务,让引导程序通过HTTP的方式获取到镜像:
~]# yum -y install httpd
]# yum -y install lrzsz
~]# mkdir -p /var/www/html/CentOS-7/
]# mount /iso/CentOS-7-x86_64-Minimal-1611.iso /var/www/html/CentOS-7/
systemctl start httpd
systemctl stop firewalld
setenforce 0
f,安装syslinux程序
----------syslinux 是一个功能强大的引导加载程序,
而且兼容各种介质
安装syslinux 得到pxelinux.0,这是pxe的引导加载程序
]# yum -y install syslinux -y
]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
]# cp -a /var/www/html/CentOS-7/isolinux/* /var/lib/tftpboot/
]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
]# cp /var/www/html/CentOS-7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改default 文件
]# cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0
label ks
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.0.22/ks_config/CentOS7-ks.cfg
]# mkdir /var/www/html/ks_config/
]# cp /root/anaconda-ks.cfg /var/www/html/ks_config/CentOS7-ks.cfg
]# cat /var/www/html/ks_config/CentOS7-ks.cfg
install
url --url="http://192.168.0.22/CentOS-7/"
auth --enableshadow --passalgo=sha512
anaconda-ks.cfg用例一:
install
url --url=“http://192.168.0.22/CentOS-7/”
auth --enableshadow --passalgo=sha512
graphical
firstboot --enable
ignoredisk --only-use=sda
keyboard --vckeymap=cn --xlayouts=‘cn’
lang zh_CN.UTF-8
network --bootproto=dhcp --device=ens33 --ipv6=auto --no-activate
network --bootproto=dhcp --hostname=localhost.localdomain
rootpw --iscrypted
6
6
6.spEGZ.HMyFkrGa7$QhHZmIe36kkb4KBzCgmCT9CMFylCH3Ir7LCfMOAaKtFl.UD88NwA2GAKFHIbPTAou7VMk8VIy2OQZa1FzfHh1.
services --enabled=“chronyd”
timezone Asia/Shanghai --isUtc
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
clearpart --none --initlabel
reboot
%packages
@^minimal
@core
chrony
kexec-tools
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb=‘auto’
%end
%anaconda
pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty
pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty
%end
用例二:
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 10.0.0.6 --netmask 255.255.255.0 --gateway 10.0.0.2 --noipv6 --nameserver 10.0.0.2 --hostname centos67
rootpw --iscrypted $6
2
F
r
f
m
3
S
c
/
o
W
d
F
2
Y
b
2Frfm3Sc/oWdF2Yb
2Frfm3Sc/oWdF2YbGTS8VbsaeLzAfT46EYJWezKA7VMOnefDAH6anyb12Hu5K1qu1awlpTwBxTjAzXpV/.l983Irdwxo5Rks0QV1p1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append=“crashkernel=auto rhgb quiet”
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