d6ea5446e9
The VLAN alias interface name may exceed the maximum interface name length as defined by the kernel, depending on some hardware. This commit changes the vlan naming convention from device name plus VLAN ID to VLAN plus VLAN ID. Closes-Bug: 1817593 Depends-On: https://review.opendev.org/#/c/686728/ Change-Id: I8a74e1d47e0ab3ef261f9512a8887d7f0de66064 Signed-off-by: Teresa Ho <teresa.ho@windriver.com>
149 lines
4.0 KiB
INI
Executable File
149 lines
4.0 KiB
INI
Executable File
%pre --erroronfail
|
|
|
|
# Source common functions
|
|
. /tmp/ks-functions.sh
|
|
|
|
http_port=$(get_http_port)
|
|
echo "repo --name=base --baseurl=http://pxecontroller:${http_port:-8080}/feed/rel-xxxPLATFORM_RELEASExxx/" > /tmp/repo-include
|
|
echo "repo --name=updates --baseurl=http://pxecontroller:${http_port:-8080}/updates/rel-xxxPLATFORM_RELEASExxx/" > /tmp/repo-include
|
|
|
|
%end
|
|
|
|
# Repository arguments from %pre
|
|
%include /tmp/repo-include
|
|
|
|
|
|
%post --erroronfail
|
|
|
|
# Source common functions
|
|
. /tmp/ks-functions.sh
|
|
|
|
# Persist the http port to the platform configuration
|
|
echo http_port=$(get_http_port) >> /etc/platform/platform.conf
|
|
|
|
# Obtain the boot interface from the PXE boot
|
|
BOOTIF=`cat /proc/cmdline |xargs -n1 echo |grep BOOTIF=`
|
|
if [ -d /sys/firmware/efi ] ; then
|
|
BOOTIF=${BOOTIF#BOOTIF=}
|
|
else
|
|
BOOTIF=${BOOTIF#BOOTIF=01-}
|
|
BOOTIF=${BOOTIF//-/:}
|
|
fi
|
|
|
|
mgmt_dev=none
|
|
mgmt_vlan=0
|
|
if [ -n "$BOOTIF" ] ; then
|
|
ndev=`ip link show |grep -B 1 $BOOTIF |head -1 |awk '{print $2}' |sed -e 's/://'`
|
|
if [ -n "$ndev" ] ; then
|
|
mgmt_dev=$ndev
|
|
# Retrieve the management VLAN from sysinv if it exists
|
|
mgmt_vlan=`curl -sf http://pxecontroller:6385/v1/isystems/mgmtvlan`
|
|
if [ $? -ne 0 ]
|
|
then
|
|
report_post_failure_with_msg "ERROR: Unable to communicate with System Inventory REST API. Aborting installation."
|
|
fi
|
|
else
|
|
report_post_failure_with_msg "ERROR: Unable to determine mgmt interface from BOOTIF=$BOOTIF."
|
|
fi
|
|
else
|
|
report_post_failure_with_msg "ERROR: BOOTIF is not set. Unable to determine mgmt interface."
|
|
fi
|
|
|
|
if [ $mgmt_vlan -eq 0 ] ; then
|
|
|
|
# Persist the boot device to the platform configuration. This will get
|
|
# overwritten later if the management_interface is on a bonded interface.
|
|
echo management_interface=$mgmt_dev >> /etc/platform/platform.conf
|
|
|
|
# Build networking scripts
|
|
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-lo
|
|
DEVICE=lo
|
|
IPADDR=127.0.0.1
|
|
NETMASK=255.0.0.0
|
|
NETWORK=127.0.0.0
|
|
BROADCAST=127.255.255.255
|
|
ONBOOT=yes
|
|
IPV6_AUTOCONF=no
|
|
NAME=loopback
|
|
EOF
|
|
|
|
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-$mgmt_dev
|
|
DEVICE=$mgmt_dev
|
|
BOOTPROTO=dhcp
|
|
ONBOOT=yes
|
|
IPV6_AUTOCONF=no
|
|
LINKDELAY=20
|
|
EOF
|
|
|
|
else
|
|
|
|
# Check whether to use inet or inet6
|
|
ipv6_addr=$(dig +short AAAA controller)
|
|
if [[ -n "$ipv6_addr" ]]
|
|
then
|
|
mgmt_address_family=inet6
|
|
ipv6init=yes
|
|
dhcpv6c=yes
|
|
dhclientargs=-1
|
|
else
|
|
mgmt_address_family=inet
|
|
ipv6init=no
|
|
dhcpv6c=no
|
|
dhclientargs=
|
|
fi
|
|
|
|
# Persist the boot device to the platform configuration. This will get
|
|
# overwritten later if the management_interface is on a bonded interface.
|
|
echo management_interface=vlan$mgmt_vlan >> /etc/platform/platform.conf
|
|
|
|
# Build networking scripts
|
|
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-lo
|
|
DEVICE=lo
|
|
IPADDR=127.0.0.1
|
|
NETMASK=255.0.0.0
|
|
NETWORK=127.0.0.0
|
|
BROADCAST=127.255.255.255
|
|
ONBOOT=yes
|
|
IPV6_AUTOCONF=no
|
|
NAME=loopback
|
|
EOF
|
|
|
|
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-$mgmt_dev
|
|
DEVICE=$mgmt_dev
|
|
BOOTPROTO=none
|
|
ONBOOT=yes
|
|
IPV6_AUTOCONF=no
|
|
LINKDELAY=20
|
|
EOF
|
|
|
|
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-vlan$mgmt_vlan
|
|
DEVICE=vlan$mgmt_vlan
|
|
BOOTPROTO=dhcp
|
|
DHCLIENTARGS=$dhclientargs
|
|
IPV6INIT=$ipv6init
|
|
DHCPV6C=$dhcpv6c
|
|
ONBOOT=yes
|
|
IPV6_AUTOCONF=no
|
|
PHYSDEV=$mgmt_dev
|
|
VLAN=yes
|
|
LINKDELAY=20
|
|
EOF
|
|
|
|
# Reject DHCPOFFER from DHCP server that doesn't send
|
|
# wrs-install-uuid option
|
|
echo "require wrs-install-uuid;" >>/etc/dhcp/dhclient.conf
|
|
echo "require dhcp6.wrs-install-uuid;" >>/etc/dhcp/dhclient.conf
|
|
|
|
# Bring up the mgmt vlan so that a dhcp lease is acquired and an address is
|
|
# setup prior to the post-install reboot. This is so that the timing of the IP
|
|
# address allocation is similar to how normal/non-pxe installation works.
|
|
mgmt_iface=vlan$mgmt_vlan
|
|
dhclient_family=$([[ $mgmt_address_family == "inet" ]] && echo -4 || echo -6)
|
|
ip link add link $mgmt_dev name $mgmt_iface type vlan id $mgmt_vlan
|
|
ip link set up dev $mgmt_iface
|
|
dhclient $dhclient_family $mgmt_iface || true
|
|
|
|
fi
|
|
|
|
%end
|