实现自动化部署首先了解一些系统安装时内部执行的过程:
1.POST后找到镜像中的可引导文件MBR:isolinux/boot.cat
2.进入grub第二阶段运行isolinux/isolinux.bin
3.读取配置文件isolinux/isolinux.cfg(菜单界面)。其中定义了即将加载的内核isolinuz/vmlinuz;以及向内核传递参数append initrd=initrd.img
4.加载根文件系统并启动anaconda安装引导程序
5.手动安装时anaconda生成图形引导安装程序,用户设置完语言、键盘、时区、安装包等配置(实际上是在做应答文件配置),然后anaconda根据应答文件(kickstart.cfg)找到安装源进行安装
6.安装源需要提前共享出来,支持的共享的途径一般是光盘U盘、ftp或者http等
自动化部署系统根据引导镜像的不同实现方式分为光盘U盘引导、PXE引导以及cobbler统一引导。
实际上,实现自动化安装即将引导镜像、kicskstart应答文件、安装源三者进行预设置,并且相互间实现对接
Ⅰ通过PXE安装,引导镜像、应答文件、安装源都放在网络当中
1.安装环境准备,关闭防火墙,selinux,dhcp服务器静态IP
2.安装软件,httpd tftp-server dhcp syslinux system-config-kickstart
3.配置文件共享服务
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html/centos/7/os/x86_64
mount /dev/sr0 /var/www/html/centos/7/os/x86_64
4.准备kickstart文件
将已安装的系统中/root/anaconda-ks.cfg拷到并重命名/var/www/html/ks/ks7.cfg并给予644权限
ks7.cfg文件中的参数需要手动根据自己需求修改好
另一种准备kickstart的方法,推荐通过图形界面生成一个ks应答文件,避免手动写参数出错
在系统图形界面中执行system-config-kickstart命令来打开图形界面配置并保存应答文件
5.配置tftp服务
systemctl enabel tftp
systemctl start tftp
6.配置DHCP服务
vim /etc/dhcp/dhcpd.conf
option domain-name "example.com";
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.30.0 netmask 255.255.255.0 {
range 192.168.30.200 192.168.30.240;
filename "pxelinux.0";
next-server 192.168.30.104;
}
systemctl enable dhcpd
systemctl start dhcpd
7.准备引导文件
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
拷贝并重命名引导菜单:
cp /var/www/html/centos/7/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
最后的文件列表如下:
/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
8.配置启动引导界面菜单
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 ###################背景风格选择第七步拷过来的menu.c32
timeout 600 ########################等待选择时间
menu title AUTO PXE from zhongmaohan.cn
label auto
menu label Auto ^Install CentOS 7 ############ ^托字符表示快捷键
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.30.104/ks/ks7.cfg
label manual
menu label ^Manual Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.30.104/centos/7/os/x86_64
label local
menu default #####################默认选择安装项,避免把已安装设备重装
menu label ^Boot from local drive
localboot 0xffff
Ⅱ 使用cobbler自动安装系统,它实际上是集成了PXE安装以及依赖的所有服务
1.安装环境准备,关闭防火墙,selinux,dhcp服务器静态IP
2.安装软件:yum install cobbler(EPEL源) dhcp ############会自动安装syslinux tftp-server
3.cobbler check
4.vim /etc/cobbler/settings
修改参数
server:192.168.30.104 ######cobblerserverip
next_server:192.168.30.104 ########cobblerserverip
default_password_cryptd: "$1$centos$WYqe951u9KPinq5pgSHy/." ##elilo.efi, and yaboot####使用openssl生成root密码
manage_dhcp:1 ######让cobbler管理dhcp
5. systemctl enable rsyncd
systemctl start rsyncd
6. cobbler get-loaders #######联网自动获取pxelinux.0 menu.c32 elilo.efi yaboot
cobbler sync 自动配置好文件
7. vim /etc/cobbler/dhcp.template修改自己的dhcp网段
如果局域网中有DNS和路由建议也配置上,其他配置不变
subnet 192.168.30.0 netmask 255.255.255.0
range dynamic-bootp 192.168.30.100 192.168.30.254;
8. systemctl start cobblerd
cobbler sync
9.挂载光盘并导入yum安装源(光盘的所有安装包都会被拷贝到cobbler服务器)
/dev/sr0 8490330 8490330 0 100% /mnt/cdrom0
/dev/sr1 6049912 6049912 0 100% /mnt/cdrom1
cobbler import --path=/mnt/cdrom0 --name=CentOS_7.4-x86_64 --arch=x86_64
cobbler import --path=/mnt/cdrom1 --name=CentOS_6.9-x86_64 --arch=x86_64
####这里只导入cntos6.9的包
cobbler distro list
10. 生成ks6.cfg并传到cobbler服务器,注意其中url行设置成:url --url=$tree
添加cobbler profile
cobbler profile add --name=Centos_6.9 --distro=Centos_6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6_mini.cfg
删除cobbler自带配置
cobbler profile remove --name=Centos_6.9-i386
cobbler profile remove --name=Centos_6.9-x86_64