之所以选择操作系统安装rocky 9.3 (因为这个版本EPEL软件源里面有可以装最新的cobbler3.3.4),系统装完了配置主机名和IP,配置了DNS可以通公网
1、关闭selinux,防火墙等服务
sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
2、安装软件源和软件包依赖包等等。
dnf install epel-release -y
dnf makecache
dnf module enable cobbler -y
dnf install cobbler git httpd tftp-server tftp dhcp-server yum-utils pykickstart dnf-plugins-core vim wget -y
3、安装PXE启动文件。
# 安装pxe,uefi等引导文件()
# /var/lib/poepper/loaders中缺少一些网络引导加载程序。如果您只想处理x86/x86_64网络引导,您可以确保已安装syslinux包的*最新版本
dnf -y install syslinux syslinux-extlinux syslinux-tftpboot
# 安装bootx64.efi引导文件制作工具,这是为了获得 grub2-mkstandalone 该命令(注意这个包的全名,后续生成uefi 引导程序,就是这个名字)
# 这个程序非常关键,安装完成后,后面用 cobbler mkloader 命令才能生成 uefi的引导文件,才能正常给uefi服务器装机
dnf -y install grub2-efi-modules grub2-efi-x64-modules grub2-efi-x64-cdboot
dnf -y install shim-x64
# 安装适用于 debian 系列的(将需要它来管理debian部署和存储库)
dnf -y install debmirror
sed -i 's/@dists="sid";/#@dists="sid";/' /etc/debmirror.conf
sed -i 's/@arches="i386";/#@arches="i386";/' /etc/debmirror.conf
4、配置生成密码加密文
openssl passwd -1 'Uec@1907' # 最后面单引号里面是要加密的密码
5、配置Cobbler配置文件/etc/cobbler/settings.yaml ,
其中Next_server|Manager_dhcp|manage_tftpd等需要修改
# 可以采用sed替换地址。
cp /etc/cobbler/settings.yaml /etc/cobbler/settings.yaml.bak
sed -ri 's/^(next_server:).*/\1 192.168.4.200/' /etc/cobbler/settings.yaml
sed -ri 's/^(next_server_v4:).*/\1 192.168.4.200/' /etc/cobbler/settings.yaml
sed -ri 's/^(server:).*/\1 192.168.4.200/' /etc/cobbler/settings.yaml
sed -ri 's/^(manage_dhcp:).*/\1 true/' /etc/cobbler/settings.yaml
sed -ri 's/^(manage_dhcp_v4:).*/\1 true/' /etc/cobbler/settings.yaml
sed -ri 's#^(default_password_crypted:).*#\1 "$1$BK3iznjB$zgxM/NypM8LOaQ3FV0LAz/"#' /etc/cobbler/settings.yaml
6、修改默认的dhcp模板文件
cp /etc/cobbler/dhcp.template /etc/cobbler/dhcp.template.bak
sed -i 's/192.168.1/192.168.4/g' /etc/cobbler/dhcp.template
sed -i 's/192.168.4.5/192.168.4.1/g' /etc/cobbler/dhcp.template #replace router
7、启动相关服务
cobbler check
systemctl enable cobblerd tftp dhcpd httpd
systemctl start cobblerd
cobbler sync
systemctl restart cobblerd tftp dhcpd httpd
ss -ntlp
8、导入系统镜像软件包
cobbler import --path=/mnt/cdrom/ --name=CentOS-7.6-x86_64 --arch=x86_64
ls /var/www/cobbler/distro_mirror/
#查看已经导入的软件包
cobbler distro list
cobbler profile report --name CentOS-7.6-x86_64
cobbler sync
#cobbler 3生成 bootloader的命令
cobbler mkloader
tree /var/lib/cobbler/loaders/ #查看PXE的引导文件
/var/lib/cobbler/loaders/
├── grub
│ ├── arm64-efi -> /usr/lib/grub/arm64-efi
│ ├── grub.0
│ ├── grubaa64.efi
│ ├── grubx64.efi # x86架构下 uefi的网络引导加载程序
│ ├── i386-pc -> /usr/lib/grub/i386-pc
│ ├── shim.efi -> /boot/efi/EFI/rocky/shim.efi # x86架构下 uefi的网络安全引导加载程序
│ └── x86_64-efi -> /usr/lib/grub/x86_64-efi
├── ldlinux.c32 -> /usr/share/syslinux/ldlinux.c32
├── libcom32.c32 -> /usr/share/syslinux/libcom32.c32
├── libutil.c32 -> /usr/share/syslinux/libutil.c32
├── linux.c32 -> /usr/share/syslinux/linux.c32
├── memdisk -> /usr/share/syslinux/memdisk
├── menu.c32 -> /usr/share/syslinux/menu.c32
├── pxelinux.0 -> /usr/share/syslinux/pxelinux.0 # 普通 传统 bios pxe的引导加载程序
└── undionly.pxe -> /usr/share/ipxe/undionly.kpxe
[root@cobbler3 cobbler]#
/var/lib/tftpboot/pxelinux.cfg/default # 从 bios 的 pxe 引导后的菜单
/var/lib/tftpboot/ipxe/default.ipxe # 从 uefi 的 ipxe 引导后的菜单
[root@cobbler3 cobbler]# cat /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | https://cobbler.github.io
TIMEOUT 200
TOTALTIMEOUT 6000
ONTIMEOUT local
LABEL local
MENU LABEL (local)
MENU DEFAULT
LOCALBOOT -1
LABEL CentOS-7.6-x86_64
MENU LABEL CentOS-7.6-x86_64
kernel /images/CentOS-7.6-x86_64/vmlinuz
append initrd=/images/CentOS-7.6-x86_64/initrd.img kssendmac ks=http://192.168.4.200/cblr/svc/op/autoinstall/profile/CentOS-7.6-x86_64 repo=http://192.168.4.200/cblr/links/CentOS-7.6-x86_64
ipappend 2
MENU end
9、重新配置自动启动的autoinstall文件位置。
#查看当前镜像的默认ks文件为sample.ks,此文件有大量变量,不要轻易修改。建议用命令生成后修改。
[root@cobbler3 loaders]# cobbler profile report --name CentOS-7.6-x86_64
Name : CentOS-7.6-x86_64
Automatic Installation Template : sample.ks
Automatic Installation Metadata : <<inherit>>
TFTP Boot Files : <<inherit>>
Boot loaders : <<inherit>>
Comment :
DHCP Tag :
Distribution : CentOS-7.6-x86_64
Enable iPXE? : False
Enable PXE Menu? : True
.......
#导出当前的autoinstall配置文件
cobbler profile get-autoinstall --name CentOS-7.6-x86_64 > /var/lib/cobbler/templates/mycentos7.ks
#修改autoinstall配置文件
vi /var/lib/cobbler/templates/mycentos7.ks
# 配置绑定autoinstall文件
# cobbler profile edit --name CentOS-7.6-x86_64 --autoinstall mycentos7.ks # 适用cobbler3
10、参考知识
其他参考知识:
# 1、dhcp与tftp相关
/etc/cobbler/dhcp.template # cobbler 的 dhcp 模版文件
/etc/dhcp/dhcpd.conf # dhcpd 服务的配置文件
# 2、bootloaders 网络引导程序相关
/usr/share/syslinux/ # 原始syslinux软件带的
cobbler mkloaders # cobbler 3 生成 bootloader的命令
/var/lib/cobbler/loaders/ # 上面生成的文件,存放与这里
[root@localhost loaders]# tree /var/lib/cobbler/loaders/
├── grub
│ ├── arm64-efi -> /usr/lib/grub/arm64-efi
│ ├── grub.0 # 普通 bios pxe的引导加载程序
│ ├── grubaa64.efi # 不清楚是什么价格
│ ├── grubx86.efi # x86架构下 uefi的网络引导加载程序
│ ├── i386-pc -> /usr/lib/grub/i386-pc
│ └── x86_64-efi -> /usr/lib/grub/x86_64-efi
├── ldlinux.c32 -> /usr/share/syslinux/ldlinux.c32
├── libutil.c32 -> /usr/share/syslinux/libutil.c32
├── memdisk -> /usr/share/syslinux/memdisk
├── menu.c32 -> /usr/share/syslinux/menu.c32
└── pxelinux.0 -> /usr/share/syslinux/pxelinux.0 # 普通 bios pxe的引导加载程序
/var/lib/tftpboot/ # tftpd软件的工作目录
/var/lib/tftpboot/pxelinux.0 # bios pxe
/var/lib/tftpboot/grub/grub.0 # bios pxe
/var/lib/tftpboot/grub/grubx86.efi # uefi pxe
# 3、引导后加载的目录MENU菜单
[root@localhost ~]# cd /etc/cobbler/boot_loader_conf/ # 这是 cobbler 控制的各个模版
[root@localhost boot_loader_conf]# tree
├── bootcfg.template
├── grub.template
├── grub_menu.template
├── grub_submenu.template
├── ipxe.template
├── ipxe_menu.template
├── ipxe_submenu.template
├── pxe.template
├── pxe_menu.template # bios pxe 的 menu 模版(实测修改后,cobbler sync 后,tftp文件是生效的,但实际却看不到效果)
└── pxe_submenu.template
/var/lib/tftpboot/pxelinux.cfg/default # 从 bios 的 pxe 引导后的菜单
/var/lib/tftpboot/ipxe/default.ipxe # 从 uefi 的 ipxe 引导后的菜单
# 4、ks模版文件目录
/var/lib/cobbler/templates/
# 5、镜像软件包存放目录(如rpm等)
/var/www/cobbler/distro_mirror