资源池节点主机扩容流程
一、工作内容及顺序
- 主机组与网络组需根据项目实施规划进行KS脚本编写与交换机配置编写,在编写完之后转交给一级项目经理进行审核
- 到达现场后需要对交换机与服务器进行验收,通过跑脚本的方式来对机器进行检测,如发现配置与厂商所需设定的配置有出入,则需要联系厂商人员到达现场进行调整。不可自行调整
- 服务器操作系统均为Centos版本,需要根据实施规范来对版本进行调整。如一些项目中需要推送自研Ctyun
- 在网络组搭建好基础网络之后,主机组需要在接入交换机进行推送,其中需要开通特定推送Vlan。通过网络获取DHCP之后进行批量推机
- 成功推机之后,需要对主机内核进行升级(也可以直接通过ks直接升级),如果不能直接升级,则需要通过带外使用ebox进行批量脚本运行
- 进行各类检查
- 对项目进行割接测试,保证割接业务无异常影响
- 攥写交付文档
二、KS详细解读
install
url --url=ftp://172.16.10.10/centos7.9 #镜像拉取路径,需和pxe服务器镜像位置相同
lang en_US.UTF-8
keyboard --vckeymap=us --xlayouts='us' #语言、键盘设置
rootpw --plaintext 'Ctyun.cn123' #密码设置
firewall --disabled #防火墙设置
auth --enableshadow --passalgo=sha512 #加密类型(啥512)
selinux --disabled #SElinux设置
clearpart --all --initlabel #清除分区
part /boot --fstype="xfs" --ondisk=sda --size=1024 #boot分区,区域类型XFS,在sda盘符,大小1024
part / --fstype="xfs" --ondisk=sda --grow #--grow剩余空间
%packages --ignoremissing #需要安装的包列表
@^minimal #最小化系统
@core
wget #拉取文件命令
lldpad #lldp
ipmitool #ipmi验收需要软件
%end
%pre #目前项目没用到-大致意思为扫描系统序列号并截出所需内容进行赋值,将内容赋值进_SN变量
#if dmidecode | grep -qEi 'VMware|VirtualBox|KVM|Xen|Parallels'; then
# _sn=$(sed q /sys/class/net/*/address)
#else
# _sn=$(dmidecode -s system-serial-number 2>/dev/null | awk '/^[^#]/ { print $1 }')
#fi
%end
%post
#wget ftp://172.16.10.10/hostlist.txt -P /tmp/ #拉去hostlit.txt文件到新装系统的/tmp目录中 (也可以使用curl命令)
#######Global software get end###########
systemctl stop firewalld.service #重启或者关闭各类服务
systemctl disable firewalld.service
systemctl stop libvirtd.service
systemctl disable libvirtd.service
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl start lldpd.service
systemctl enable lldpd.service
sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config #sed -i 更改ssh配置文件
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
#curl -O ftp://172.16.10.10/lldp.iso >> /tmp/lldp.iso
#mount -o loop lldp.iso /mnt
#cp -r /mnt/* /root/
#chmod 777 -R /root/lldp.sh
#sh /root/lldp.sh #拉取镜像文件并挂载,赋予脚本最高权限,运行lldp.sh脚本文件
####配置互信密钥对
#mkdir -p /root/.ssh/
#curl -O http://192.168.1.253/authorized_keys
for i in 'ls /sys/class/net/ | grep e'; #for循环,扫描系统中e开头的网卡,赋值给变量i,通过重定向到网卡文件中,通过变量创建网卡配置文件。其中并没有配ip地址
do
cat >/etc/sysconfig/network-scripts/ifcfg-$i << EOF
DEVICE=$i
TYPE=Ethernet
NAME=$i
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
EOF
done
%end
%post
#curl 172.16.10.10/scripts/centos.sh | bash
sed -i -e "s/^#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
curl ftp://172.16.10.10/scripts/config-ip-server1.sh >> /tmp/config-ip-server1.sh #拉取配置ip脚本
curl ftp://172.16.10.10/scripts/ip2.txt >> /tmp/ip2.txt #拉取序列号ip表
chmod +x /tmp/config-ip-server1.sh
sh /tmp/config-ip-server1.sh #运行配置IP脚本
#progress "安装完成" 1 "aW5zdGFsbCBmaW5pc2hlZAo="
三、配置IP脚本解读
#!/bin/bash
cp /etc/sysconfig/network /root/network_`date +%Y%m%d%H_%H%M%s` #复制network文件,以当前时间为文件命
v_serial=`dmidecode -s system-serial-number | tail -n 1` 2>> /root/out.txt #获取系统序列号赋值给V_serial变量,将错误信息重定向至/root/out.txt文件 1>> 正确重定向 2>>错误重定向
v_line=`wc -l /tmp/ip2.txt | awk '{print $1}'` 2>> /root/out.txt #统计ip文件一共有多少行,也就定义了多少次循环
NETWORK="/etc/sysconfig/network" 2>> /root/out.txt
let "v_line+=1" 2>> /root/out.txt #算术计算,将变量v_line的值进行自加一
for((i=1;i<$v_line;i++)); #进行循环赋值,如果比对序列号相同,则为其分配对应IP等其他地址
do
v_ip_serial=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 1` 2>> /root/out.txt
if [ "$v_serial" = "$v_ip_serial" ];then #if比对
v_host=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 2` 2>> /root/out.txt
v_ip1=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 3` 2>> /root/out.txt
v_netmask1=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 4` 2>> /root/out.txt
v_getway1=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 5` 2>> /root/out.txt
v_ip2=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 6` 2>> /root/out.txt
v_netmask2=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 7` 2>> /root/out.txt
v_ip3=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 8` 2>> /root/out.txt
v_netmask3=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 9` 2>> /root/out.txt
v_ip4=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 10` 2>> /root/out.txt
v_netmask4=`cat /tmp/ip2.txt | head -n $i | tail -n 1 | cut -d '|' -f 11` 2>> /root/out.txt
fi
done
#重定向写入 EOF
cat > /etc/sysconfig/network-scripts/ifcfg-enp59s0f0 <<EOF
DEVICE=enp59s0f0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
MASTER=bond1
SLAVE=yes
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-enp176s0f0 <<EOF
DEVICE=enp176s0f0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
MASTER=bond1
SLAVE=yes
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-bond1 <<EOF
DEVICE=bond1
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=yes
BONDING_MASTER=yes
BONDING_OPTS="miimon=100 mode=6"
IPADDR=$v_ip1
NETMASK=$v_netmask1
GATEWAY=$v_getway1
EOF
echo $v_host > /etc/hostname #将主机名写入hostname文件中
systemctl stop NetworkManager #重启各类服务
systemctl disable NetworkManager
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl restart network
四、序列号文件编写
- 从实施规划中找到主机设备规划
- 将序列号、主机名、业务ip、计算、存储提取出,复制到一个新的excel表中,每一行和每一行之间使用“|” 隔开
- 然后将内容复制粘贴至notepad++中进行编辑,将“|”两侧的空行进行替换删除
- 将该内容放入pxe系统中,之后进行导入