-
kickstart的原理及组件
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了
-
关闭防火墙及selinux
systemctl stop friewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/` /etc/selinux/config
-
DHCP安装
yum install dhcp -y
cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 { ## 指定网段
range 172.16.1.100 172.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
systemctl start dhcpd --- 启动
systemctl status dhcpd --- 查看状态
-
http安装
yum install httpd -y
mkdir -p /var/www/html/centos7.6 ###创建镜像目录
mkdir -p /var/www/html/ks ####创建ks文件目录
systemctl start httpd
-
TFTP安装及syslinux安装
yum install tftp-server syslinux -y
-
生成pxelinux.0文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
-
从镜像中寻找相关配置文件
# 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
-
编辑default文件
default ks
prompt 0
label ks
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.168.101/ks/ks.cfg ksdevice=eno3 ##该口为接收数据的网口。实际上并没有在引导时还是所有网口去例遍了
-
编辑 ks文件 并赋予755权限
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
url --url=http://192.168.168.101/centos7.6 ###获取镜像地址
# Use graphical install ###安装方式 分为图形化界面以及文本界面
#graphical
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8
# Network information
#network --bootproto=dhcp --device=eno1 --onboot=off --ipv6=auto --no-activate
#network --bootproto=dhcp --device=eno2 --onboot=off --ipv6=auto
#network --bootproto=dhcp --device=eno3 --onboot=off --ipv6=auto
#network --bootproto=dhcp --device=eno4 --onboot=off --ipv6=auto
#network --bootproto=dhcp --device=eno5 --onboot=off --ipv6=auto
#network --bootproto=dhcp --device=eno6 --onboot=off --ipv6=auto
#network --bootproto=dhcp --device=ens1f0 --onboot=off --ipv6=auto
#network --bootproto=dhcp --device=ens1f1 --onboot=off --ipv6=auto
#network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$3ZTN7uGlQC8AMQf/$gUg9Q6oHxF1zOLQbkJGVoNDgG7R9ZOmmG7Z4BEg2da3RF3FkyT4G3YJbpRdsXhzqpFj.BGfc6Ic.X1TqLqNRf. ####加密密码
# System services
services --disabled="chronyd"
services --disabled="NetworkManager"
services --disabled="firewall"
services --disabled="selinux"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
#clearpart --all --drives=sda
# Disk partitioning information
part / --fstype="xfs" --ondisk=sda --size=512000
part /var --fstype="xfs" --ondisk=sda --size=1 --grow ####表示剩余空间均给var
part swap --fstype="swap" --ondisk=sda --size=32767
part /boot --fstype="xfs" --ondisk=sda --size=1024
reboot
%packages
@^infrastructure-server-environment
@base
@compat-libraries
@core
@debugging
@development
@hardware-monitoring
@performance
@system-admin-tools
kexec-tools
ipmitool
%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
%post
cd /root
SN=`dmidecode -t 1|grep Serial|awk -F : '{print $2}'|awk -F ' ' '{print $1}'` ##获取SN号
wget http://192.168.168.101/1.csv 下载csv格式文件里面包括(网络地址,带外地址,带外网口最后由ansible推送,主机名)
IP=`grep $SN 1.csv|awk -F , '{print $3}'`
HOSTNAME=`grep $SN 1.csv|awk -F , '{print $2}'`
GATEWAY=12.33.12.254
NETMASK=255.255.255.0
OUTIP=`grep $SN 1.csv|awk -F , '{print $4}'`
hostnamectl set-hostname $HOSTNAME
echo $IP $HOSTNAME >> /etc/hosts
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab ###关闭swap分区,因为k8s需要关闭swap分区
####双网卡绑定
cat <<EOF>/etc/sysconfig/network-scripts/ifcfg-ens1f0
DEVICE=ens1f0
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
USERCTL=no
SLAVE=yes
MASTER=bond0
EOF
cat <<EOF>/etc/sysconfig/network-scripts/ifcfg-ens1f1
DEVICE=ens1f1
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
USERCTL=no
SLAVE=yes
MASTER=bond0
EOF
#
cat <<EOF>/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
USERCTL=no
BONDING_OPTS="miimon=100 mode=4 xmit_hash_policy=layer3+4"
EOF
echo "IPADDR=$IP" >>/etc/sysconfig/network-scripts/ifcfg-bond0
echo "NETMASK=$NETMASK" >>/etc/sysconfig/network-scripts/ifcfg-bond0
echo "GATEWAY=$GATEWAY" >>/etc/sysconfig/network-scripts/ifcfg-bond0
%end
网友评论