cobbler基于python2.*版本,在centos8无法安装;
测试安装服务器为centos7(CentOS-7-x86_64-Minimal-1810.iso)
1.安装基础软件包
sed -i 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld --now
安装基础软件包:
yum install -y epel-release
yum install -y autofs
yum install -y vim wget lrzsz tcpdump
yum install -y rsync
yum install -y cobbler
yum install -y cobbler-web
yum install -y dhcp
yum install -y dhcp-server
yum install -y dhcp-*
yum install -y tftp-server
yum install -y pykickstart
yum install -y httpd
yum install -y xinetd
yum install -y python-ctypes
yum install -y xorriso
yum install -y genisoimage
yum install -y syslinux
yum install -y yum-utils
yum install -y gcc
yum install -y make
yum install -y automake
yum install -y fence-agents
yum install -y debmirror
yum install -y crudini
systemctl start httpd
systemctl start cobblerd
systemctl enable httpd
systemctl enable cobblerd
systemctl start rsyncd
systemctl enable rsyncd
2.修改配置
要能支持centos8系统成功部署,修改/var/lib/cobbler/distro_signatures.json文件:
rhel8部分,下面version_file字段中,
|centos|改为|centos|centos-linux|centos-stream|
"version_file":"(redhat|sl|slf|centos|centos-linux|centos-stream|oraclelinux|vzlinux)-release-(?!notes)([\\w]*-)*8(Server)*[\\.-]+(.*)\\.rpm",
也可以参考如下方法改动:
避免安装centos8系统的时候出现如下错误:
#安装其他机器的时候dracut超时,cobbler日志/var/log/cobbler/cobbler.log报:
#Exception value: 'ascii' codec can't decode byte 0xe7 in position 112: ordinal not in range(128)
#File "/usr/lib64/python2.7/site-packages/Cheetah/Compiler.py", line 1579, in __init__
# if len(encodings):
修改/usr/lib64/python2.7/site-packages/Cheetah/Compiler.py文件:
file='/usr/lib64/python2.7/site-packages/Cheetah/Compiler.py'
sed -i '1i#coding=utf-8' $file
sed -i "/import copy/asys.setdefaultencoding('utf-8')" $file
sed -i "/import copy/areload(sys)" $file
修改cobbler配置文件:
cobbler_cfg='/etc/cobbler/settings'
sed -i "s|^server:.*127.0.0.1|server: ${ip}|" $cobbler_cfg
sed -i "s|^next_server:.*127.0.0.1|next_server: ${ip}|" $cobbler_cfg
sed -i "s|^pxe_just_once:.*0|pxe_just_once: 1|" $cobbler_cfg
sed -i 's|^manage_dhcp:.*0|manage_dhcp: 1|g' $cobbler_cfg
sed -i 's|^manage_rsync:.*0|manage_rsync: 1|g' $cobbler_cfg
sed -i '/allow_dynamic_settings:/c\allow_dynamic_settings: 1' $cobbler_cfg
密码可以改也可以不改,默认为cobbler
newpas=$(openssl passwd -1 -salt `openssl rand 15 -base64` '123456')
# 修改默认密码 即:/etc/cobbler/settings 文件中的 default_password_crypted 参数的值为上面生成的密码串
sed -i "s%^default_password_crypted.*%default_password_crypted: \"${newpas}\"%g" $cobbler_cfg
#修改xinetd tftp配置文件:
sed -i "/disable/ {s#yes#no#}" /etc/xinetd.d/tftp
#修改httpd配置:
if ! grep -q '^ServerName' /etc/httpd/conf/httpd.conf ; then
sed -i "/#ServerName/aServerName ${ip}:80" /etc/httpd/conf/httpd.conf
fi
修改dhcp模板配置文件
#解决没有cobbler get-loaders问题
\cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
\cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/
\cp -a /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
\cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
#设置debmirror: 注释掉@dists和@arches的行 debian相关文件获取(如不需要部署debian系统可省略)
sed -i '/@dists=/s/^/# &/g' /etc/debmirror.conf
sed -i '/@arches=/s/^/# &/g' /etc/debmirror.conf
#启动服务:
systemctl enable httpd --now
systemctl enable rsyncd --now
systemctl enable tftp --now
systemctl enable xinetd --now
systemctl enable dhcpd --now
systemctl enable cobblerd --now
systemctl restart httpd
systemctl restart cobblerd
#再启动xinetd服务:
service xinetd start
cobbler check
cobbler signature update
cobbler sync
\cp -arf /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
\cp -arf /centos8/isolinux/*.c32 /var/lib/tftpboot/
\cp -arf /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/
\cp -arf /centos8/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
\cp -arf /centos8/isolinux/{boot.msg,splash.png} /var/lib/tftpboot/
#检查语法
systemctl restart httpd
systemctl restart cobblerd
systemctl restart tftp
cobbler sync
挂载ISO镜像:
mkdir -p /centos8 ; umount /centos8
iso_file='/opt/CentOS8_Mini_OS_DVD_5.3.3.iso'
# -t iso9660 -r -o ro,loop
mount -o loop $iso_file /centos8
cobbler import --path=/centos8 --name=CentOS8_Mini --arch=x86_64
cobbler distro list
cobbler profile edit --name=CentOS8_Mini-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos8_ks.cfg
cobbler profile list
Cobbler Web配置:
#配置cobbler-web:
\cp /etc/cobbler/modules.conf /etc/cobbler/bak_modules.conf_back
crudini --set /etc/cobbler/modules.conf authentication module authn_pam
useradd -s /sbin/nologin cobbler
echo 123456 | passwd --stdin cobbler
\cp /etc/cobbler/users.conf /etc/cobbler/bak_users.conf_back
crudini --set /etc/cobbler/users.conf admins admin \"cobbler\"
crudini --set /etc/cobbler/users.conf admins cobbler \"123456\"
echo -e "https://${ip}/cobbler_web/\ncobbler\n123456"