随着项目的推进和展开,项目到了服务器操作系统部署这个环节,客户选择对目前现有的20台服务器利旧使用,服务器操作系统的部署成了摆在眼前的一道无法绕过的问题。
能想到的三种方式:
单机部署: 适合3台服务器以下,
批量话部署:规模化、自动化、远程实现、3台服务器以上
虚拟化部署:降低能耗、节省空间、节约成本、提高基础架构利用率、提高稳定性、减少宕机、提高灵活性。
以上只是个人的观点,客户对部署没有太多要求,通过跟项目组沟通后,按第二种批量部署开干,选型上使用PXE方式,工具使用Cobbler工具安装
Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。
Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。
Cobbler官网:https://fedorahosted.org/cobbler/
[root@devops ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
1、实体服务器接入没有划分VLAN的交换机上进行操作
虚拟机网卡采用NAT模式,不要使用桥接模式,因为稍后我们会搭建DHCP服务器,在同一局域网多个DHCP服务会有冲突。
VMware的NAT模式的dhcp服务也关闭,避免干扰。
Virtualbox安装网络设置如下:
批量安装服务器设置
网络设置
具备互联网接入直接运行yum命令,不具备互联网接入的话,搭建yum源服务器。
yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd xinetd python-ctypes tftp lrzsz vim wget
关闭SELinux
# 关闭
[root@devops ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
[root@devops ~]# reboot
设置完毕后,重启服务器生效
开始启动服务
systemctl start httpd
systemctl start cobblerd
查看cobbler
cobbler check
配置文件说明
[root@devops ~]# rpm -ql cobbler # 查看安装的文件,下面列出部分。
/etc/cobbler # 配置文件目录
/etc/cobbler/settings # cobbler主配置文件,这个文件是YAML格式,Cobbler是python写的程序。
/etc/cobbler/dhcp.template # DHCP服务的配置模板
/etc/cobbler/tftpd.template # tftp服务的配置模板
/etc/cobbler/rsync.template # rsync服务的配置模板
/etc/cobbler/iso # iso模板配置文件目录
/etc/cobbler/pxe # pxe模板文件目录
/etc/cobbler/power # 电源的配置文件目录
/etc/cobbler/users.conf # Web服务授权配置文件
/etc/cobbler/users.digest # 用于web访问的用户名密码配置文件
/etc/cobbler/dnsmasq.template # DNS服务的配置模板
/etc/cobbler/modules.conf # Cobbler模块配置文件
/var/lib/cobbler # Cobbler数据目录
/var/lib/cobbler/config # 配置文件
/var/lib/cobbler/kickstarts # 默认存放kickstart文件
/var/lib/cobbler/loaders # 存放的各种引导程序
/var/www/cobbler # 系统安装镜像目录
/var/www/cobbler/ks_mirror # 导入的系统镜像列表
/var/www/cobbler/images # 导入的系统镜像启动文件
/var/www/cobbler/repo_mirror # yum源存储目录
/var/log/cobbler # 日志目录
/var/log/cobbler/install.log # 客户端系统安装日志
/var/log/cobbler/cobbler.log # cobbler日志
修改常见配置文件,查看本地IP地址将ip地址写入如下文件
ip addr
修改配置文件
IPADDR=192.168.1.10
sed -i 's/server: 127.0.0.1/server: '${IPADDR}'/' /etc/cobbler/settings && grep "server: ${IPADDR}" /etc/cobbler/settings
sed -i 's/next_server: 127.0.0.1/next_server: '${IPADDR}'/' /etc/cobbler/settings && grep "next_server: ${IPADDR}" /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings && grep 'manage_dhcp: 1' /etc/cobbler/settings
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings && grep 'pxe_just_once: 1' /etc/cobbler/settings
sed -i "s#manage_rsync: 0#manage_rsync: 1#g" /etc/cobbler/settings && grep "manage_rsync: 1" /etc/cobbler/settings
设置批量安装的服务器的root密码
# 生产密钥方式 - 以654321为例
[root@devops ~]# openssl passwd -1 -salt 'root' '654321'
[root@devops ~]# default_password_crypted: "$1$root$Js1erquGbefP5iwCuWmEh/"
# 修改默认密码 default_password_crypted
[root@devops ~]# vim /etc/cobbler/settings
#最终修改的结果
default_password_crypted: "$1$root$Js1erquGbefP5iwCuWmEh/"
安装bobbler-get-loaders文件
下载[cobbler-get-loaders](链接: https://pan.baidu.com/s/12nYtI4h9fjScRnnqFjIB9g?pwd=uew4)离线安装包
将离线安装包上传至服务器的/var/lib/cobblers/loaders/
目录
cd /var/lib/cobbler/loaders/
tar xf cobbler-get-loaders.tar.gz
mv cobbler-get-loaders/* .
rm -fr cobbler-get-loaders cobbler-get-loaders.tar.gz
修改tftp参数
[root@devops loaders]# vi /etc/xinetd.d/tftp
disable = no
重启服务
systemctl restart xinetd
systemctl restart cobblerd
systemctl enable rsyncd.service
systemctl start rsyncd.service
配置DHCP
根据自身的网络设置。
# 修改cobbler的dhcp模版,不要直接修改dhcp本身的配置文件,因为cobbler会覆盖。
[root@devops ~]# vim /etc/cobbler/dhcp.template
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.1.250 192.168.1.254;
同步Cobbler配置信息
# 同步最新cobbler配置,它会根据配置自动修改dhcp等服务。
[root@devops ~]# cobbler sync # 同步所有配置,可以仔细看一下sync做了什么。
task started: 2015-12-03_204822_sync
task started (id=Sync, time=Thu Dec 3 20:48:22 2015)
running pre-sync triggers
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
设置开机启动
systemctl enable httpd
systemctl enable xinetd
systemctl enable cobblerd
systemctl enable dhcpd
systemctl enable rsyncd
systemctl enable tftp
systemctl start httpd
systemctl start xinetd
systemctl start cobblerd
systemctl start dhcpd
systemctl start rsyncd
systemctl start tftp
查看服务器状态
systemctl status httpd
systemctl status xinetd
systemctl status cobblerd
systemctl status dhcpd
systemctl status rsyncd
systemctl status tftp
关闭防火墙
本人不建议关闭防火墙,针对具体端口开放即可,由于是局域网临时装机,故采取懒人安装方法直接关闭防火墙
[root@devops ~]# systemctl stop firewalld
浏览器中输入信息查看
http://192.168.1.10/
查看cobbler
http://192.168.1.10/cobbler/
官网下载 对应的镜像 下载centos minimal镜像,本次部署的为CentOS7.9
将下载的镜像传入服务器
# 挂载
[root@devops ~]# mount CentOS-7-x86_64-Minimal-2009.iso /mnt/
mount: /dev/loop0 is write-protected, mounting read-only
cobbler import --path=/mnt/ --name=CentOS-7.9-x86_64 --arch=x86_64
# --path 镜像路径
# --name 为安装源定义一个名字
# --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64
# 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS-7.6-x86_64,如果重复,系统会提示导入失败。
# 镜像存放目录,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirror下的CentOS-7.1-x86_64目录下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间。
[root@devops ~]# ls -l /var/www/cobbler/ks_mirror/
total 0
drwxr-xr-x 8 root root 254 Nov 3 2020 CentOS-7.9-x86_64
drwxr-xr-x. 2 root root 36 Nov 6 18:23 config
[root@devops ~]# ls /var/www/cobbler/ks_mirror/CentOS-7.9-x86_64/
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
[root@devops ~]#
[root@devops ~]# cd /var/lib/cobbler/kickstarts/
[root@devops ~]# vim centos-7.9-x86_64.cfg
# Cobbler for Kickstart Configurator for CentOS 7.6
install
url --url=$tree
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
$SNIPPET('network_config')
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
clearpart --all --initlabel
part / --fstype xfs --size 51200 --ondisk=sda
part /var --fstype xfs --size 1 --grow --ondisk=sda
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
poweroff
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
$SNIPPET('pre_anamon')
%end
%packages
@^minimal
@core
kexec-tools
%end
%post
systemctl disable postfix.service
%end
编辑profile,修改关联的ks文件
cobbler profile edit --name=CentOS-7.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos-7.9-x86_64.cfg
查看关联配置
[root@devops ~
> 这里是引用
]# cobbler profile report --name=CentOS-7.9-x86_64
Name : CentOS-7.9-x86_64
TFTP Boot Files : {}
Comment :
DHCP Tag : default
Distribution : CentOS-7.9-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/centos-7.9-x86_64.cfg
Kickstart Metadata : {}
Management Classes : []
Management Parameters : <<inherit>>
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Internal proxy :
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Repos : []
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : 1
Virt Bridge : xenbr0
Virt CPUs : 1
Virt Disk Driver Type : raw
Virt File Size(GB) : 5
Virt Path :
Virt RAM (MB) : 512
Virt Type : kvm
查看ks文件信息
[root@devops ~]# cobbler list
distros:
CentOS-7.9-x86_64
profiles:
CentOS-7.9-x86_64
调整内核参数
如果是虚拟机配置此处更改,如果是实体机则忽略此处。
[root@devops ~]# cobbler profile edit --name=CentOS-7.9-x86_64 --kopts='net.ifnames=0 biosdevname=0'
[root@devops ~]# cobbler profile report CentOS-7.9-x86_64
Name : CentOS-7.9-x86_64
TFTP Boot Files : {}
Distribution : CentOS-7.9-x86_64
Virt Path :
Virt RAM (MB) : 512
Virt Type : kvm
[root@devops ~]# cobbler sync
received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
批量安装分为虚拟机的批量安装和实体机的安装
virtualbox虚拟机设置
创建虚拟机,启动顺序选择网络为第一启动顺序
启动虚拟机,选中第二个CentOS-7.9-x86_64,回车确认。
接下来开始自动化安装
实体机安装需要用到ipmitools工具
\cp ipmitool /usr/bin/ipmitool
chmod +x /usr/bin/ipmitool
modprobe ipmi_watchdog ; modprobe ipmi_poweroff ; modprobe ipmi_devintf ; modprobe ipmi_si
ipmitool -I lanplus -H 10.254.178.91 -U test -P 123456 power status
设置服务器从pxe启动
ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 chassis bootdev pxe
ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 power reset
参考上面的命令设置为pex启动,进行装机,
开始自动化安装
安装完毕服务器会关机。
服务器开机,开机需要将服务器的启动方式设置为硬盘启动,如果忘记这一步,就跟会重新来一边。
设置服务器从disk启动
ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 power on ; sleep 5
ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 chassis bootdev disk
ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 power reset
启动后界面信息如下。
以上为自动化批量安装操作系统的步骤。