制作CentOS8的黄金模板
前期准备
- 在虚拟化环境中部署CentOS8-Stream,包含Hyper-V、Esxi、Virtualbox等;
- 使用mini组件部署,大约会安装378个软件包;
- 安装过程中添加简体中文支持、设定时区为上海、使用硬盘自动分区、关闭kdump;
- 设定root密码(后期关闭root的ssh访问权限),并添加远程ssh访问管理员账户;
- 设定网络开机自动启动;
系统调整
安装工具
# 安装更新
dnf makecache
dnf upgrade -y
# 安装系统工具
dnf install -y wget curl zip unzip vim mailx mlocate telnet net-tools bash-completion tmux
dnf install -y chrony rsync iotop git screen tree open-vm-tools yum-utils
updatedb && ldconfig
# 配置默认主机名
hostnamectl set-hostname vlnx000000
# 配置模板机网络别名为eth0,如果是Hyper-V的话,可以忽略
nmcli c m ens160 con-name eth0
# 设定模板机IP
nmcli c m eth0 ipv4.method manual ipv4.addresses 192.168.248.245/24 ipv4.dns 192.168.248.2 ipv4.gateway 192.168.248.2
nmcli c d eth0 && nmcli c u eth0# 添加IP地址配置脚本
touch ipset.sh && chmod +x ipset.sh
vim ipset.sh
#!/bin/bash
#该脚本用于设置网卡的IP地址
read -p "请输入设置IP地址:" IP
read -p "请输入设置的网关:" GW
#read -p "请输入设置的子网掩码:" MASK
read -p "请输入首选DNS服务器:" D1
#read -p "请输入备选DNS服务器:" D2
read -p "请输入主机名:" MachineNAME
nmcli c m eth0 ipv4.method manual ipv4.address $IP ipv4.gateway $GW ipv4.dns $D1
nmcli c d eth0
nmcli c u eth0
hostnamectl set-hostname $MachineNAME系统调整
# 修改软件源为阿里云
sudo sed -i.bak \
-e 's|^mirrorlist=|#mirrorlist=|' \
-e 's|^#baseurl=|baseurl=|' \
-e 's|http://mirror.centos.org|https://mirrors.aliyun.com|' \
/etc/yum.repos.d/CentOS-*.repo
# 安装EPEL源
sudo dnf install -y epel-release
sudo sed -i.bak \
-e 's|^metalink|#metalink|' \
-e 's|^#baseurl=|baseurl=|' \
-e 's|download.fedoraproject.org/pub|mirrors.aliyun.com|' \
/etc/yum.repos.d/epel*.repo
# 关闭EPEL
# yum-config-manager --disable epel
# yum-config-manager --disable epel-modular
# yum-config-manager --disable epel-testing-modular
# 关闭SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
# SSHD服务优化,设定如下项
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
MaxSessions 10
PermitEmptyPasswords no
PasswordAuthentication yes
GSSAPIAuthentication no
GSSAPICleanupCredentials no
X11Forwarding no
UseDNS no
Compression delayed
Banner none
# 开启网络BBR模块
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
# 调整SWAP使用策略
echo vm.swappiness = 10 >> /etc/sysctl.conf
# 添加控制台备注信息
echo 'PS1="\[\033[1;32m\]┌──[\[\033[1;34m\]\u@\H\[\033[1;32m\]]-[\[\033[0;1m\]\w \t\[\033[1;32m\]] \n\[\033[1;32m\]└─\[\033[1;34m\]\\$\[\033[0m\]"' >> /etc/bashrc
source /etc/bashrc监控工具
# 更新和安装工具
dnf install -y htop iftop atop smem调整启动参数,取消开机画面
vim /etc/default/grub
设定等待时间为3秒
GRUB_TIMEOUT=3
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
删除原有的rhgb选项,关闭开机画面,显示服务启动状态,保留quiet避免输出过多硬件自检内容
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"grub2-mkconfig -o /boot/grub2/grub.cfg
启动时间服务
安装时间同步服务器
dnf install -y chrony
添加阿里云NTP服务器:w
cat >> /etc/chronyd.conf <<EOF
pool time.pool.aliyun.com iburst
pool cn.pool.ntp.org iburst
allow 192.168.0.0/16
EOF
设置时区为亚洲/上海
timedatectl set-timezone Asia/Shanghai
重启时间服务
systemctl enable chronyd清理交付
同步数据
sync
ldconfig
删除主机ID
/etc/machine-id
删除ssh公钥
rm -rf /etc/ssh/*key*
清理yum缓存
yum clean all
清理日志
logrotate -f /etc/logrotate.conf
rm -f /var/log/*-???????? /var/log/*.gz
rm -f /var/log/dmesg.old
rm -rf /var/log/anaconda*
cat /dev/null > /var/log/audit/audit.log
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/lastlog
cat /dev/null > /var/log/grubby
unset HISTFILE
rm -rf ~root/.ssh/
清理历史记录
history -c
使用外部工具关机,避免留下shutdown历史记录
导出模板
- 导出为ova模板,或直接在控制台使用。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.