Quantcast
Channel: cobbler –陈沙克日志
Viewing all articles
Browse latest Browse all 12

Cobbler解决网卡名字问题

$
0
0

CentOS7,网卡名字,采用consistent network device naming,简单的说,网络的名字,已经不是以前的eth0,eth1,你装系统前,你根本就不知道他叫啥名字。

这样的命名,好处就是你机器重启,增加pci设备,不会导致原来的设备名称发生改变。如果我们通过grub,修改内核的方式,改变回到以前的网卡命名,这种方式在新的设备里,会出现很多问题,你会发现每次重启机器,网卡名字都是会改变,一直都是在不停的变化,让你疯掉。

所以最佳的办法,就是还是使用装系统的时候默认网卡是啥名字就是什么名字。那么对于cobbler来说,

cobbler system  add \
--name=vm1 \
--hostname=vm1 \
--profile=CentOS7-x86_64 \
--interface=eth0 \
--mac=00:50:56:35:61:5C \
--ip-address=192.168.27.100 \
--subnet=255.255.255.0 \
--gateway=192.168.27.0 \
--static=1

你是必须指定网卡名字的。

我们可以考虑通过cobbler提供的snippet来解决这个问题。

目前cobbler提供 pre_install_network_config,还不能很好解决这个问题。

cd /var/lib/cobbler/snippets
mv pre_install_network_config pre_install_network_config.save

我们创建一个新的 pre_install_network_config

#if $getVar("system_name","") != ""
# Start pre_install_network_config generated code
#raw
# generic functions to be used later for discovering NICs
mac_exists() {
  [ -z "$1" ] && return 1

  if which ip 2>/dev/null >/dev/null; then
    ip -o link | grep -i "$1" 2>/dev/null >/dev/null
    return $?
  elif which esxcfg-nics 2>/dev/null >/dev/null; then
    esxcfg-nics -l | grep -i "$1" 2>/dev/null >/dev/null
    return $?
  else
    ifconfig -a | grep -i "$1" 2>/dev/null >/dev/null
    return $?
  fi
}
get_ifname() {
  if which ip 2>/dev/null >/dev/null; then
    IFNAME=$(ip -o link | grep -i "$1" | sed -e 's/^[0-9]*: //' -e 's/:.*//')
  elif which esxcfg-nics 2>/dev/null >/dev/null; then
    IFNAME=$(esxcfg-nics -l | grep -i "$1" | cut -d " " -f 1)
  else
    IFNAME=$(ifconfig -a | grep -i "$1" | cut -d " " -f 1)
    if [ -z $IFNAME ]; then
      IFNAME=$(ifconfig -a | grep -i -B 2 "$1" | sed -n '/flags/s/:.*$//p')
    fi
  fi
}
#end raw
    #set ikeys = $interfaces.keys()
    #import re
    #set $vlanpattern = $re.compile("[a-zA-Z0-9]+[\.][0-9]+")
    #set $routepattern = $re.compile("[0-9/.]+:[0-9.]+")
    ##
    ## Determine if we should use the MAC address to configure the interfaces first
    ## Only physical interfaces are required to have a MAC address
    #set $configbymac = True
    #for $iname in $ikeys
        #set $idata = $interfaces[$iname]
        #if $idata["mac_address"] == "" and not $vlanpattern.match($iname) and not $idata["interface_type"].lower() in ("master","bond","bridge","bonded_bridge_slave")
            #set $configbymac = False
        #end if
    #end for
    #set $i = 0

    #if $configbymac
        ## Output diagnostic message
# Start of code to match cobbler system interfaces to physical interfaces by their mac addresses
    #end if
    #for $iname in $ikeys
#  Start $iname
        #set $idata         = $interfaces[$iname]
        #set $mac           = $idata["mac_address"]
        #set $static        = $idata["static"]
        #set $ip            = $idata["ip_address"]
        #set $netmask       = $idata["netmask"]
        #set $iface_type    = $idata["interface_type"]
        #set $iface_master  = $idata["interface_master"]
        #set $if_gateway    = $idata["if_gateway"]
        #set $static_routes = $idata["static_routes"]
        #set $devfile       = "/etc/sysconfig/network-scripts/ifcfg-" + $iname
        #if $vlanpattern.match($iname)
            ## If this is a VLAN interface, skip it, anaconda doesn't know
            ## about VLANs.
            #set $is_vlan = "true"
        #else
            #set $is_vlan = "false"
        #end if
        #if ($configbymac and $is_vlan == "false" and $iface_type.lower() not in ("slave","bond_slave","bridge_slave","bonded_bridge_slave")) or $iface_type.lower() in ("master","bond","bridge")
            ## This is a physical interface, hand it to anaconda. Do not
            ## process slave interface here.
            #if $iface_type.lower() in ("master","bond","bridge","bonded_bridge_slave")
                ## Find a slave for this interface
                #for $tiname in $ikeys
                    #set $tidata = $interfaces[$tiname]
                    #if $tidata["interface_type"].lower() in ("slave","bond_slave","bridge_slave") and $tidata["interface_master"].lower() == $iname
                        #if $tidata["mac_address"] != '':
                            #set $mac = $tidata["mac_address"]
#  Found a slave for this interface: $tiname ($mac)
                            #break
                        #end if
                    #else if $tidata["interface_type"].lower() == "bonded_bridge_slave" and $tidata["interface_master"].lower() == $iname
                        ## find a slave for this slave interface...
                        #for $stiname in $ikeys
                            #set $stidata = $interfaces[$stiname]
                            #if $stidata["interface_type"].lower() in ("slave","bond_slave","bridge_slave") and $stidata["interface_master"].lower() == $tiname
                                #if $stidata["mac_address"] != '':
                                    #set $mac = $stidata["mac_address"]
#  Found a slave for this interface: $tiname -> $stiname ($mac)
                                    #break
                                #end if
                            #end if
                        #end for
                    #end if
                #end for
            #end if
            #if $static and $ip != ""
                #if $netmask == ""
                    ## Netmask not provided, default to /24.
                    #set $netmask = "255.255.255.0"
                #end if
                #set $netinfo = "--bootproto=static --ip=%s --netmask=%s" % ($ip, $netmask)
                #if $if_gateway != ""
	            #set $netinfo = "%s --gateway=%s" % ($netinfo, $if_gateway)
                #else
                    #set $netinfo = "%s --gateway=0.0.0.0" % ($netinfo)
                #end if
    	        #if $len($name_servers) > 0
    	            #set $netinfo = "%s --nameserver=%s" % ($netinfo, $name_servers[0])
                #end if
            #else if not $static
                #set $netinfo = "--bootproto=dhcp"
            #else
                ## Skip this interface, it's set as static, but without
                ## networking info.
#  Skipping (no configuration)...
                #continue
            #end if
            #if $hostname != ""
                #set $netinfo = "%s --hostname=%s" % ($netinfo, $hostname)
            #end if
# Configuring $iname ($mac)
if mac_exists $mac
then
  get_ifname $mac
  echo "network --device=\$IFNAME $netinfo " >> /tmp/pre_install_network_config
            #for $route in $static_routes
                #if $routepattern.match($route)
                    #set $routebits = $route.split(":")
                    #set [$network, $router] = $route.split(":")
  ip route add $network via $router dev \$IFNAME
                #else
  # Warning: invalid route "$route"
                #end if
            #end for
fi
        #else
            #if $iface_type.lower() in ("slave","bond_slave","bridge_slave","bonded_bridge_slave")
#  Skipping (slave-interface)
            #else
#  Skipping (not a physical interface)...
            #end if
        #end if
    #end for
# End pre_install_network_config generated code
#end if

这样cobbler默认使用的sample.ks来安装centos 7.x,那么网卡名字,就会和系统默认是一致的。

上面的snippet是我同事 http://zhanguo1110.blog.51cto.com/5750817/1671442 写的。

 

参考文档

https://access.redhat.com/discussions/916973


Viewing all articles
Browse latest Browse all 12

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Tiburon para colorear


Gwapo Quotes : Babaero Quotes


Winx Club para colorear


Girasoles para colorear


Dibujos de animales para imprimir


Renos para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Love Quotes Tagalog


Tagalog Love Facts About Men


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC