1.kickstart制作和使用
kickstart文件主要包括三个部分:命令段,程序包段,脚本段
命令段:指明各种安装前配置,如键盘类型等
命令段中的常见命令:
keyboard: 设定键盘类型
lang: 语言类型
zerombr:清除mbr
clearpart:清除分区
part: 创建分区
rootpw: 指明root的密码
timezone: 时区
text: 文本安装界面
network:指定网络设置
firewall:设置防火墙设置
selinux:设置selinux设置
reboot:安装完自动重启
user:安装完成后为系统创建新用户
url: 指明安装源
程序包段:指明要安装的程序包组或程序包,不安装的程序包等
脚本段: %pre: 安装前脚本 %post: 安装后脚本
注意
centos6,7,8,不同版本的kickstart文件格式不相同,不可混用
%addon, %packages, %onerror, %pre 、 %post 必须以%end结束,否则安装失败
Centos 8最小化安装文件
ignoredisk --only-use=sda
zerombr
text
reboot
clearpart --all --initlabel
selinux --disabled
firewall --disabled
url --url=http://10.0.0.8/centos/8/os/x86_64/
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda
network --hostname=centos8.yang.org
rootpw 123456
firstboot --enable
skipx
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
part / --fstype="xfs" --ondisk=sda --size=102400
part /data --fstype="xfs" --ondisk=sda --size=51200
part swap --fstype="swap" --ondisk=sda --size=2048
part /boot --fstype="ext4" --ondisk=sda --size=1024
%packages
@^minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
centos7
install xconfig --startxonboot keyboard --vckeymap=us --xlayouts='us' rootpw --iscrypted $1$bpNEv8S5$lK.CjNkf.YCpFPHskSNiN0 url --url="http://10.0.0.8/centos/7/os/x86_64" lang en_US auth --useshadow --passalgo=sha512 text firstboot --enable selinux --disabled skipx services --disabled="chronyd" ignoredisk --only-use=sda firewall --disabled network --bootproto=dhcp --device=ens33 reboot timezone Asia/Shanghai --nontp bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda zerombr clearpart --all --initlabel autopart --type=lvm %post #sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #systemctl disable firewalld mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup cat > /etc/yum.repos.d/base.repo <<EOF [base] name=CentOS baseurl=file:///misc/cd https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=0 [extras] name=extras baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch gpgcheck=0 enabled=1 [epel] name=EPEL baseurl=http://mirrors.aliyun.com/epel/$releasever/$basearch gpgcheck=0 enabled=1 EOF mkdir /root/.ssh -m 700 cat > /root/.ssh/authorized_keys <<EOF ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFyqd76ui/j6IGEsZpCAcNG4rQMexaA/OyrEKiLG56wFpf9rHU rhp8b7mXrrFxP3r1UPZz3fZeGT8/u5Wr93IXeU9VtAzooXKS8Eh2EvKzuzGKw0t4lY9x2D7BGdl0zz35 3SdpAYqzZtuTEivq3N45zZEP7Y5r0Y5ocCVqL1sCuaHQucue9VTxOZKSs476QE91/pBaORgMf8ZQR6JJ HvsN8eJmzqhggFqzwt9SiYg9lV+pFyWJfUVj3RYqfg4uw9lS4DUGHcvyL+97XKBSXejerDb9a8agm+ma Bm/M/46DK6AQNR7wBRXBCoFszJFmeWK4MrXy6Ae3JrwVBGgTo1QKW77C+0luLAm6BjA1ZCgBGA2NXhNh euYoBVCH6ZUz0eaU57MXD9fmkB+vyxuVjE4AhuR7hkyDrBkLdd2kTk1flcSo4yv0EFgrximrBLSaBfGC JAdOXY9WrB0L6IoEega7NRrFWaXaEy/AJLOz+h6DxWFpKw7Ly1Wwk4KfHCeUn3s= root@centos8.wangxiaochun.com EOF chmod 600 /root/.ssh/authorized_keys useradd yang echo 123456 | passwd --stdin yang %end %packages @^minimal vim-enhanced wget curl tree %end
kickstart文件创建
可使用创建工具:system-config-kickstart ,注意:此方法 CentOS 8 不再支持
依据某模板修改并生成新配置,CentOS安装完后,会自动参考当前系统的安装过程,生成一个 kickstart文件 /root/anaconda-ks.cfg
使用 ksvalidator 工具可以检查kickstart的文件格式是否有语法错误,来自于 pykickstart 包
ksvalidator /PATH/TO/KICKSTART_FILE
2.实现DHCP服务
主机获取网络配置可以通过两种方式:
静态指定
动态获取:
bootp:boot protocol MAC与IP一一静态对应
dhcp:增强的bootp,支持静态和动态
DHCP工作原理
用于内部网络和网络服务供应商自动分配IP地址给用户
用于内部网络管理员作为对所有电脑作集中管理的手段
自动化安装系统
解决IPV4资源不足问题
DHCP DISCOVER:客户端到服务器
DHCP OFFER :服务器到客户端
DHCP REQUEST:客户端到服务器
DHCP ACK :服务器到客户端
DHCP实现
注意:实现DHCP服务前,先将网络已有DHCP服务,如:mware中的DHCP关闭,访止冲突
DHCP服务的实现软件:
dhcp(CentOS 7 之前版本) 或 dhcp-server(CentOS 8 中的包名)
DHCP服务器配置
/etc/dhcp/dhcpd.conf
默认里面没有内容
参考看/usr/share/doc/dhcp-server/dhcpd.conf.example文件
格式 /etc/dhcp/dhcpd.conf
option domain-name "example.org"; option domain-name-servers 180.76.76.76, 223.6.6.6; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.50 10.0.0.100; option routers 10.0.0.2; next-server 10.0.0.8; TFTP服务器地址 filename "pxelinux.0"; bootloader启动文件的名称 }
host testclient {
hardware ethernet 00:0c:29:33:b4:1a; 绑定mac地址
fixed-address 10.0.0.106; 分配的ip
default-lease-time 86400;
max-lease-time 864000;
option routers 10.0.0.254;
option domain-name-servers 114.114.114.114,8.8.8.8 ;
option domain-name "yang.net";
}
3.实现TFTP服务
TFTP:Trivial File Transfer Protocol ,是一种用于传输文件的简单高级协议,是文件传输协议(FTP) 的简化版本。用来传输比文件传输协议(FTP)更易于使用但功能较少的文件
TFTP和FTP的区别
1、安全性区别 FTP支持登录安全,具有适当的身份验证和加密协议,在建立连接期间需要与FTP身份验证通信 TFTP是一种开放协议,缺乏安全性,没有加密机制,与TFTP通信时不需要认证
2、传输层协议的区别 FTP使用TCP作为传输层协议,TFTP使用UDP作为传输层协议
3、使用端口的区别 FTP使用2个端口:TCP端口21,是个侦听端口;TCP端口20或更高TCP端口1024以上用于源连接 TFTP仅使用一个具有停止和等待模式的端口:端口:69/udp
4、RFC的区别 FTP是基于RFC 959文档,带有其他RFC涵盖安全措施;TFTP基于RFC 1350文档
5、执行命令的区别 FTP有许多可以执行的命令(get,put,ls,dir,lcd)并且可以列出目录等 TFTP只有5个指令可以执行(rrq,wrq,data,ack,error)
安装使用TFTP
[root@centos8 ~]#dnf install tftp-server -y 安装TFTP [root@centos8 ~]#rpm -ql tftp-server /var/lib/tftpboot #TFTP服务数据目录 [root@centos8 ~]#systemctl enable --now tftp.service 启动服务 [root@centos8 ~]#mkdir /var/lib/tftpboot/dir 创建共享文件
4.利用PXE是实现自动化系统部署
安装流程
在CentOS8上实现PXE自动化安装CentOS7,8
安装前准备
关闭防火墙和SELINUX,DHCP服务器静态IP
网络要求:关闭Vmware软件中的DHCP服务,基于NAT模式
使用 1G 以下内存的主机安装CentOS 7,8 会提示空间不足,建议2G以上
安装相关软件包
[root@centos8 ~]#dnf -y install dhcp-server tftp-server httpd syslinux-nonlinux [root@centos8 ~]#systemctl enable --now httpd tftp dhcpd
会发现dhcpd起不来,需要配置dhcp服务
配置DHCP服务
option domain-name "example.org"; option domain-name-servers 180.76.76.76, 223.6.6.6; DNS default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 10.0.0.0 netmask 255.255.255.0 { 网段 range 10.0.0.50 10.0.0.100; 分配的IP option routers 10.0.0.2; 网关 next-server 10.0.0.8; TFTP服务器地址 filename "pxelinux.0"; 启动菜单 }
[root@centos8 ~]#systemctl start dhcpd
准备yum源相关目录
[root@centos8 ~]#mkdir -pv /var/www/html/centos/{7,8}/os/x86_64/ [root@centos8 ~]#mount /dev/sr1 /var/www/html/centos/7/os/x86_64/ [root@centos8 ~]#mount /dev/sr2 /var/www/html/centos/8/os/x86_64/
准备kickstart文件
[root@centos8 ~]#mkdir /var/www/html/ks/ [root@centos8 ~]#vim /var/www/html/ks/centos7.cfg [root@centos8 ~]#vim /var/www/html/ks/centos8.cfg
CENTOS7的ks文件
xconfig --startxonboot
keyboard --vckeymap=us --xlayouts='us'
rootpw 123456
url --url="http://10.0.0.8/centos/7/os/x86_64/"
lang en_US
authselect --useshadow --passalgo=sha512
text
firstboot --enable
selinux --disabled
skipx
services --disabled="chronyd"
ignoredisk --only-use=sda
firewall --disabled
network --bootproto=dhcp --device=eth0
network --hostname=centos7.yang.org
reboot
timezone Asia/Shanghai --nontp
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part swap --fstype="swap" --ondisk=sda --size=3072
part / --fstype="xfs" --ondisk=sda --size=51200
part /boot --fstype="xfs" --ondisk=sda --size=1024
part /data --fstype="xfs" --ondisk=sda --size=30720
%post
useradd yang
%end
%packages
@core
%end
CEBTOS8ks文件
ignoredisk --only-use=sda
zerombr
text
reboot
clearpart --all --initlabel
selinux --disabled
firewall --disabled
url --url=http://10.0.0.8/centos/8/os/x86_64/
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda
network --hostname=centos8.yang.org
rootpw 123456
firstboot --enable
skipx
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
part / --fstype="xfs" --ondisk=sda --size=102400
part /data --fstype="xfs" --ondisk=sda --size=51200
part swap --fstype="swap" --ondisk=sda --size=2048
part /boot --fstype="ext4" --ondisk=sda --size=1024
%packages
@^minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
准备PXE启动相关文件
[root@centos8 ~]#mkdir /var/lib/tftpboot/centos{7,8} #准备CentOS7,8各自的内核相关文件 [root@centos8 ~]#cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7 [root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8 [root@centos8 ~]#cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/ #以下三个文件是CentOS8安装所必须文件,CentOS6,7则不需要 [root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/ #生成安装菜单文件 [root@centos8 ~]#mkdir /var/lib/tftpboot/pxelinux.cfg/ [root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
最终目录结构
[22:01:00 root@aiyoubucuo ks]$tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── centos7
│ ├── initrd.img
│ └── vmlinuz
├── centos8
│ ├── initrd.img
│ └── vmlinuz
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└── default
准备启动菜单文件
[22:01:48 root@aiyoubucuo ~]$vim /var/lib/tftpboot/pxelinux.cfg/default default menu.c32 timeout 600 menu title Install CentOS Linux label linux8 menu label Auto Install CentOS Linux ^8 kernel centos8/vmlinuz append initrd=centos8/initrd.img ks=http://10.0.0.8/ks/centos8.cfg label linux7 menu label Auto Install CentOS Linux ^7 kernel centos7/vmlinuz append initrd=centos7/initrd.img ks=http://10.0.0.8/ks/centos7.cfg label manual menu label ^Manual Install CentOS Linux 8.0 kernel centos8/vmlinuz append initrd=centos8/initrd.img inst.repo=http://10.0.0.8/centos/8/os/x86_64/ label rescue menu label ^Rescue a CentOS Linux system 8 kernel centos8/vmlinuz append initrd=centos8/initrd.img inst.repo=http://10.0.0.8/centos/8/os/x86_64/ rescue
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
完成安装