aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/adapters/cobbler/snippets/kickstart_pre_install_network_config
blob: 34d670f8f7e0485eaecd7835378655f7c40dff23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#if $getVar("system_name","") != ""
# Start pre_install_network_config generated code
    #if $getVar('management_nic', '') == ""
        #set $management_nic=''
    #end if
#raw
# generic functions to be used later for discovering NICs
mac_exists() {
  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()
    #for $iname in $ikeys
        #set $idata         = $interfaces[$iname]
    #set $management    = $idata["management"]
        #if $management
            #set $management_nic = $iname
        #end if
    #end for
    #for $iname in $ikeys
        #set $idata         = $interfaces[$iname]
        #set $mac           = $idata["mac_address"]
        #set $static        = $idata["static"]
        #set $management    = $idata["management"]
        #set $ip            = $idata["ip_address"]
        #set $netmask       = $idata["netmask"]
        #set $iface_type    = $idata["interface_type"]
        #set $iface_master  = $idata["interface_master"]
        #set $static_routes = $idata["static_routes"]
        #if $management_nic != ''
            #if $iname != $management_nic
                #continue
            #end if
        #end if
        #if $mac == ""
            #continue
        #end if
# Configuring $iname ($mac)
if mac_exists $mac
then
  get_ifname $mac
        #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 $gateway != ""
            #set $netinfo = "%s --gateway=%s" % ($netinfo, $gateway)
            #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
  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
   #end for
# End pre_install_network_config generated code
#end if