cobbler实现网卡bound

多年前的笔记,觉得有些用处

可能遇到的问题

我安装cobbler的机器是一台snat服务器,上面有4块网卡, 我们做了网卡bond(mode=4) 并且做了trunk, 而我们要装系统的服务器也都是多块硬盘(系统盘raid1 ssd, 业务盘sas raid50),也做了网卡bond

下面把遇到的问题及解决方法列出

  1. Warning /dev/root does not exist
    解决方法参考 https://www.centos.org/forums/viewtopic.php?t=57419

    cobbler distro edit --name=centos7.4-x86_64 --kopts="inst.repo=http://10.11.12.2/cobbler/ks_mirror/centos7.4-x86_64/"
  2. Kickstart: storage configuration failed: failed to find a suitable stage1 device

    安装就卡在这里了, 从上面的界面我们可以看到[X]和[!] 这说明 ks文件是找到了,但是硬盘设备配置的有问题

    这是因为我们的服务器有多块硬盘, ks不知道用哪块盘安装系统, 加上sda的配置就可以了

    bootloader --location=mbr --driveorder=sda
    clearpart --all --initlabel --drives=sda
    ignoredisk --only-use=sda
  3. 最重要的也是要最先检查的就是你的ks文件语法是否正确
    在创建profile时,是可以指定你要使用哪个ks文件的 

    cobbler profile add --name=centos7.4 --distro=centos7.4-x86_64 --kickstart=/var/lib/cobbler/kickstarts/sample_end.ks

    下面的命令可以看到你的profile使用了哪个ks文件

    [root@ops-gateway ~]# cobbler profile report centos7.4
    Name                           : centos7.4
    TFTP Boot Files                : {}
    Comment                        :
    DHCP Tag                       : default
    Distribution                   : centos7.4-x86_64
    Enable gPXE?                   : 0
    Enable PXE Menu?               : 1
    Fetchable Files                : {}
    Kernel Options                 : {}
    Kernel Options (Post Install)  : {}
    Kickstart                      : /var/lib/cobbler/kickstarts/sample_end.ks
    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                      : xenpv

    一定要检查这个页面确认ks文件语法没有问题

    执行cobbler sync后 检查一下日志 /var/log/cobbler/cobbler.log

  4. 当其他机器pxe引导没问题时,有几台pxe就是引导不了,还可能是因为获取不到dhcp的分配的ip

    journalctl -u dhcpd -f

    用这个命令看一下是不是有这个报错

    Oct 19 16:44:56 dhcpd[67804]: DHCPDISCOVER from 20:04:0f:ed:a3:84 via bond5.30: network 10.11.11.0/24: no free leases
    Oct 19 16:46:00 dhcpd[67804]: DHCPDISCOVER from 20:04:0f:ed:1e:c8 via bond5.30: network 10.11.11.0/24: no free leases
    Oct 19 16:46:04 dhcpd[67804]: DHCPDISCOVER from 20:04:0f:ed:1e:c8 via bond5.30: network 10.11.11.0/24: no free leases

    修复方法把 /etc/cobbler/dhcp.template 下面3项修改一下

    range dynamic-bootp        10.11.12.100 10.11.12.200;
    default-lease-time         600;
    max-lease-time             600;

cobbler kickstart文件内容

# This kickstart file should only be used with EL > 5 and/or Fedora > 7.
# For older versions please use the sample.ks kickstart file.
#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr --driveorder=sda
# Partition clearing information
clearpart --all --initlabel --drives=sda
ignoredisk --only-use=sda
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $default_password_crypted
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone  Asia/Shanghai
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
autopart
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages --ignoremissing
$SNIPPET('func_install_if_enabled')
@base
@core
%end
%post --nochroot
$SNIPPET('log_ks_post_nochroot')
%end
%post --interpreter /bin/bash
$SNIPPET('log_ks_post')
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$SNIPPET('kickstart_done')
# End final steps
cat >> /root/mac_to_ip << EOF
10.11.1.30 10.11.11.30 20:04:0F:EC:B3:DC
10.11.1.31 10.11.11.31 20:04:0F:ED:1E:AC
10.11.1.32 10.11.11.32 20:04:0F:ED:22:B0
10.11.1.33 10.11.11.33 20:04:0F:ED:1E:A8
10.11.1.34 10.11.11.34 20:04:0F:ED:1E:BC
EOF
cur_mac=`ethtool -P eno1|awk '{print $NF}'`
cur_ip=`grep -i ${cur_mac} /root/mac_to_ip | awk '{print $2}'`
cur_gw=`echo $cur_ip|awk -F. 'BEGIN{OFS="."}{print $1,$2,$3,1}'`
cat >/etc/sysconfig/network-scripts/ifcfg-bond4 <<EOF1
BOOTPROTO=static
DEVICE=bond4
NAME=bond4
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
IPADDR=$cur_ip
NETMASK=255.255.255.0
GATEWAY=$cur_gw
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"
EOF1
cat << EOF2 >/etc/sysconfig/network-scripts/ifcfg-eno1
TYPE=Ethernet
BOOTPROTO=none
NAME=eno1
DEVICE=eno1
ONBOOT=yes
MASTER=bond4
SLAVE=yes
EOF2
cat << EOF3 >/etc/sysconfig/network-scripts/ifcfg-eno2
TYPE=Ethernet
BOOTPROTO=none
NAME=eno2
DEVICE=eno2
ONBOOT=yes
MASTER=bond4
SLAVE=yes
EOF3
cat << EOF4 >/etc/sysconfig/network-scripts/ifcfg-eno3
TYPE=Ethernet
BOOTPROTO=none
NAME=eno3
DEVICE=eno3
ONBOOT=yes
MASTER=bond4
SLAVE=yes
EOF4
cat << EOF5 >/etc/sysconfig/network-scripts/ifcfg-eno4
TYPE=Ethernet
BOOTPROTO=none
NAME=eno4
DEVICE=eno4
ONBOOT=yes
MASTER=bond4
SLAVE=yes
EOF5
echo 'alias bond4 bonding' > /etc/modprobe.d/bond4.conf
%end

distro配置

[root@ops-gateway kickstarts]# cobbler distro report centos7.4-x86_64
Name                           : centos7.4-x86_64
Architecture                   : x86_64
TFTP Boot Files                : {}
Breed                          : redhat
Comment                        :
Fetchable Files                : {}
Initrd                         : /var/www/cobbler/ks_mirror/centos7.4-x86_64/images/pxeboot/initrd.img
Kernel                         : /var/www/cobbler/ks_mirror/centos7.4-x86_64/images/pxeboot/vmlinuz
Kernel Options                 : {'inst.repo''http://10.11.12.2/cobbler/ks_mirror/centos7.4-x86_64/'}
Kernel Options (Post Install)  : {}
Kickstart Metadata             : {'tree''http://@@http_server@@/cblr/links/centos7.4-x86_64'}
Management Classes             : []
OS Version                     : rhel7
Owners                         : ['admin']
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Template Files                 : {}
[root@ops-gateway kickstarts]# cobbler profile report centos7.4
Name                           : centos7.4
TFTP Boot Files                : {}
Comment                        :
DHCP Tag                       : default
Distribution                   : centos7.4-x86_64
Enable gPXE?                   : 0
Enable PXE Menu?               : 1
Fetchable Files                : {}
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart                      : /var/lib/cobbler/kickstarts/sample_end.ks
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                      : xenpv

 

下面是 机器可以正常与 cobbler dhcp 通信的日志 journalctl -u dhcpd --no-pager -f

Mar 14 15:25:18  dhcpd[39174]: Sending on   Socket/fallback/fallback-net
Mar 14 15:52:55  dhcpd[39174]: DHCPDISCOVER from ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:52:56  dhcpd[39174]: DHCPOFFER on 10.11.11.218 to ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:52:59  dhcpd[39174]: DHCPREQUEST for 10.11.11.218 (10.11.11.2) from ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:52:59  dhcpd[39174]: DHCPACK on 10.11.11.218 to ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:53:21  dhcpd[39174]: DHCPDISCOVER from ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:53:21  dhcpd[39174]: DHCPOFFER on 10.11.11.218 to ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:53:21  dhcpd[39174]: DHCPREQUEST for 10.11.11.218 (10.11.11.2) from ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:53:21  dhcpd[39174]: DHCPACK on 10.11.11.218 to ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:53:35  dhcpd[39174]: DHCPREQUEST for 10.11.11.218 from ac:1f:6b:78:d8:44 via bond5.30
Mar 14 15:53:35  dhcpd[39174]: DHCPACK on 10.11.11.218 to ac:1f:6b:78:d8:44 via bond5.30

 

如果 ifconfig 中网卡的显示名称不是你想要的, 修改方法如下  link

You may also want to make sure that you configure a udev rule, so that this will work on the next reboot too. The path for udev moved in CentOS 7 to /usr/lib/udev/rules.d/60-net.rules but you are still able to manage it the same way. If you added "net.ifnames=0 biosdevname=0" to your kernel boot string to return to the old naming scheme for your nics, you can remove
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"
 
And replace it with
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:3f:a7", NAME="eth123"
 
posted @ 2025-03-07 23:35  txwsqk  阅读(31)  评论(0)    收藏  举报