Support bootstrap_vlan subcloud install value
Add Debian support for the bootstrap_vlan install parameter in the subcloud install values file. For use in redfish installs. The vlan interface is configured during the initial boot, prior to the initial ostree pull. We also configure the interfaces in /etc/network/interfaces.d for the post-ostree reboot. Story: 2010118 Task: 46538 Test Plan: PASS: - Install and provision subcloud with bootstrap_vlan value configured via subcloud install values - IPv6 hardware - Verify that subcloud installs, bootstraps, and is properly unlocked - Tested in libvirt only: IPv4 configuration, including bootstrap_vlan value in IPv4 format. This test ensured that configuration is properly applied. - Install and provision subcloud without bootstrap_vlan (regression case) - Failure mode: verify that bootstrap fails if invalid vlan is configured Signed-off-by: Kyle MacLeod <kyle.macleod@windriver.com> Change-Id: If7e400359ad36cfb6835a8aff0f2ebd7d8e1817d
This commit is contained in:
parent
03e953d8df
commit
29d4047d14
@ -751,6 +751,27 @@ function parse_miniboot_network_params()
|
||||
;;
|
||||
esac
|
||||
|
||||
# Parse the vlan= line from /proc/cmdline (if it exists):
|
||||
local vlan=
|
||||
for arg in \$(cat /proc/cmdline); do
|
||||
case "\${arg}" in
|
||||
vlan=*)
|
||||
vlan=\${arg:5}
|
||||
ilog "Parsing vlan=\${vlan}"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "\${vlan}" ]; then
|
||||
# Parameter format: "bootstrap_interface.bootstrap_vlan:bootstrap_interface"
|
||||
dlog "Parsing vlan from \${vlan}"
|
||||
vlan=\${vlan#*.} # remove prefix 'bootstrap_interface.'
|
||||
vlan=\${vlan%:*} # remove suffix ':bootstrap_interface'
|
||||
BOOTPARAM_VLAN=\${vlan}
|
||||
BOOTPARAM_IFNAME=\${BOOTPARAM_IFNAME%.*} # remove suffix '.bootstrap_vlan'
|
||||
fi
|
||||
|
||||
logmsg="Using IP values: ip:\$BOOTPARAM_IP_ADDR, family: \$BOOTPARAM_MGMT_ADDRESS_FAMILY"
|
||||
if [ "\$BOOTPARAM_VLAN" -ne 0 ]; then
|
||||
logmsg="\$logmsg vlan: \$BOOTPARAM_VLAN, "
|
||||
@ -1168,7 +1189,12 @@ part_type_first_str="First sector"
|
||||
part_type_end_str="Last sector"
|
||||
part_type_flags_str="Attribute flags"
|
||||
|
||||
if [ "$(curl -sf http://pxecontroller:6385/v1/upgrade/$(hostname)/in_upgrade 2>/dev/null)" = "true" ]; then
|
||||
# The /v1/upgrade/${hostname}/in_upgrade endpoint accepts any textual data
|
||||
# as hostname and returns system-wide upgrade state
|
||||
hostname="hostname"
|
||||
|
||||
|
||||
if [ "$(curl -sf http://pxecontroller:6385/v1/upgrade/${hostname}/in_upgrade 2>/dev/null)" = "true" ]; then
|
||||
|
||||
# In an upgrade, only wipe the disk with the rootfs and boot partition
|
||||
wlog "In upgrade, wiping only ${INSTDEV}"
|
||||
@ -1451,9 +1477,9 @@ export INSTW=0
|
||||
ilog "Setting up initial IP address for ostree pull"
|
||||
parse_miniboot_network_params
|
||||
|
||||
mgmt_dev=$BOOTPARAM_IFNAME
|
||||
mgmt_vlan=0 # TODO next commit
|
||||
mgmt_address_family=$BOOTPARAM_MGMT_ADDRESS_FAMILY
|
||||
mgmt_dev=${BOOTPARAM_IFNAME}
|
||||
mgmt_vlan=${BOOTPARAM_VLAN}
|
||||
mgmt_address_family=${BOOTPARAM_MGMT_ADDRESS_FAMILY}
|
||||
|
||||
if [ $mgmt_vlan -eq 0 ] ; then
|
||||
|
||||
@ -1475,6 +1501,37 @@ if [ $mgmt_vlan -eq 0 ] ; then
|
||||
ip addr show
|
||||
ilog "ip route:"
|
||||
ip ${BOOTPARAM_IP_VER} route show
|
||||
|
||||
else
|
||||
mgmt_iface=vlan${mgmt_vlan}
|
||||
ilog "mgmt_dev=${mgmt_dev}"
|
||||
ilog "mgmt_iface=vlan${mgmt_vlan}"
|
||||
ilog "mgmt_address_family: ${mgmt_address_family}"
|
||||
|
||||
ilog "ip ${BOOTPARAM_IP_VER} link add link ${mgmt_dev} name $mgmt_iface type vlan id ${mgmt_vlan}"
|
||||
ip ${BOOTPARAM_IP_VER} link add link ${mgmt_dev} name $mgmt_iface type vlan id ${mgmt_vlan}
|
||||
|
||||
if [ "${mgmt_address_family}" = "inet" ]; then
|
||||
ilog "ip ${BOOTPARAM_IP_VER} address add ${BOOTPARAM_IP_ADDR}/${BOOTPARAM_PREFIX_LEN} dev ${mgmt_iface}"
|
||||
ip ${BOOTPARAM_IP_VER} address add ${BOOTPARAM_IP_ADDR}/${BOOTPARAM_PREFIX_LEN} dev ${mgmt_iface}
|
||||
else
|
||||
ilog "ip ${BOOTPARAM_IP_VER} address add ${BOOTPARAM_IP_ADDR} dev ${mgmt_iface}"
|
||||
ip ${BOOTPARAM_IP_VER} address add ${BOOTPARAM_IP_ADDR} dev ${mgmt_iface}
|
||||
fi
|
||||
ilog "ip ${BOOTPARAM_IP_VER} link set up dev ${mgmt_dev}"
|
||||
ip ${BOOTPARAM_IP_VER} link set up dev ${mgmt_dev}
|
||||
sleep 15
|
||||
ilog "ip ${BOOTPARAM_IP_VER} link set up dev ${mgmt_iface}"
|
||||
ip ${BOOTPARAM_IP_VER} link set up dev ${mgmt_iface}
|
||||
ilog "Wait 10s to settle interface..."
|
||||
sleep 10
|
||||
|
||||
ilog "ip ${BOOTPARAM_IP_VER} route add default ${BOOTPARAM_ROUTE_OPTIONS} dev ${mgmt_dev} ${BOOTPARAM_METRIC}"
|
||||
ip ${BOOTPARAM_IP_VER} route add default ${BOOTPARAM_ROUTE_OPTIONS} dev ${mgmt_dev} ${BOOTPARAM_METRIC}
|
||||
ilog "ip ${BOOTPARAM_IP_VER} addr:"
|
||||
ip ${BOOTPARAM_IP_VER} addr show
|
||||
ilog "ip ${BOOTPARAM_IP_VER} route:"
|
||||
ip ${BOOTPARAM_IP_VER} route show
|
||||
fi
|
||||
# get the nameserver
|
||||
local dns="none"
|
||||
@ -2317,11 +2374,12 @@ ilog "************************************"
|
||||
ilog "Creating network definitions in /etc/network/interfaces.d"
|
||||
parse_miniboot_network_params
|
||||
|
||||
mgmt_dev=$BOOTPARAM_IFNAME
|
||||
mgmt_vlan=0 # TODO next commit
|
||||
mgmt_address_family=$BOOTPARAM_MGMT_ADDRESS_FAMILY
|
||||
mgmt_dev=${BOOTPARAM_IFNAME}
|
||||
mgmt_vlan=${BOOTPARAM_VLAN}
|
||||
mgmt_address_family=${BOOTPARAM_MGMT_ADDRESS_FAMILY}
|
||||
|
||||
ilog "mgmt_dev: $mgmt_dev, mgmt_vlan: $mgmt_vlan, mgmt_address_family: $mgmt_address_family"
|
||||
ilog "mgmt_dev : ${mgmt_dev}"
|
||||
ilog "mgmt_vlan: ${mgmt_vlan}"
|
||||
|
||||
if [ ! -e "${IMAGE_ROOTFS}/etc/network/interfaces" ] ; then
|
||||
cat << EOF >> ${IMAGE_ROOTFS}/etc/network/interfaces
|
||||
@ -2351,7 +2409,7 @@ EOF
|
||||
|
||||
if [ $mgmt_dev != "lo" ]; then
|
||||
ilog "Creating ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-$mgmt_dev"
|
||||
if [ "$BOOTPARAM_MGMT_ADDRESS_FAMILY" == "inet" ]; then
|
||||
if [ "${mgmt_address_family}" == "inet" ]; then
|
||||
cat << EOF > ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-$mgmt_dev
|
||||
auto $mgmt_dev
|
||||
iface $mgmt_dev inet static
|
||||
@ -2359,18 +2417,73 @@ iface $mgmt_dev inet static
|
||||
gateway $BOOTPARAM_GW
|
||||
mtu 1500
|
||||
EOF
|
||||
else # ipv6
|
||||
else # inet6
|
||||
cat << EOF > ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-$mgmt_dev
|
||||
auto $mgmt_dev
|
||||
iface $mgmt_dev inet6 static
|
||||
address $BOOTPARAM_IP_ADDR/$BOOTPARAM_PREFIX_LEN
|
||||
mtu 1500
|
||||
post-up echo 0 > /proc/sys/net/ipv6/conf/lo/autoconf; echo 0 > /proc/sys/net/ipv6/conf/lo/accept_ra; echo 0 > /proc/sys/net/ipv6/conf/lo/accept_redirects
|
||||
post-up echo 0 > /proc/sys/net/ipv6/conf/lo/autoconf; echo 0 > /proc/sys/net/ipv6/conf/lo/accept_ra; echo 0 > /proc/sys/net/ipv6/conf/lo/accept_redirects
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
ilog "Contents of ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-$mgmt_dev:"
|
||||
ilog "$(cat "${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-$mgmt_dev")"
|
||||
|
||||
else # vlan
|
||||
ilog "Configuring vlan: mgmt_iface=vlan${mgmt_vlan}"
|
||||
|
||||
# Persist the boot device to the platform configuration. This will get
|
||||
# overwritten later if the management_interface is on a bonded interface.
|
||||
update_platform_conf "management_interface=vlan${mgmt_vlan}"
|
||||
|
||||
# Build networking scripts
|
||||
cat << EOF > ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-lo
|
||||
auto lo
|
||||
iface lo ${mgmt_address_family} loopback
|
||||
EOF
|
||||
|
||||
if [ "${mgmt_address_family}" == "inet" ]; then
|
||||
cat << EOF > ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-$mgmt_dev
|
||||
auto ${mgmt_dev}
|
||||
iface ${mgmt_dev} inet manual
|
||||
post-up echo 0 > /proc/sys/net/ipv4/conf/${mgmt_dev}/autoconf; echo 0 > /proc/sys/net/ipv4/conf/${mgmt_dev}/accept_ra; echo 0 > /proc/sys/net/ipv4/conf/${mgmt_dev}/accept_redirects
|
||||
EOF
|
||||
|
||||
cat << EOF > ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-vlan${mgmt_vlan}
|
||||
auto vlan${mgmt_vlan}
|
||||
iface vlan${mgmt_vlan} inet static
|
||||
vlan-raw-device ${mgmt_dev}
|
||||
address ${BOOTPARAM_IP_ADDR}/${BOOTPARAM_PREFIX_LEN}
|
||||
gateway ${BOOTPARAM_GW}
|
||||
mtu 1500
|
||||
post-up echo 0 > /proc/sys/net/ipv4/conf/vlan${mgmt_vlan}/autoconf; echo 0 > /proc/sys/net/ipv4/conf/vlan${mgmt_vlan}/accept_ra; echo 0 > /proc/sys/net/ipv4/conf/vlan${mgmt_vlan}/accept_redirects
|
||||
EOF
|
||||
else # inet6
|
||||
cat << EOF > ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-${mgmt_dev}
|
||||
auto ${mgmt_dev}
|
||||
iface ${mgmt_dev} inet6 manual
|
||||
post-up echo 0 > /proc/sys/net/ipv6/conf/${mgmt_dev}/autoconf; echo 0 > /proc/sys/net/ipv6/conf/${mgmt_dev}/accept_ra; echo 0 > /proc/sys/net/ipv6/conf/${mgmt_dev}/accept_redirects
|
||||
EOF
|
||||
|
||||
cat << EOF > ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-vlan${mgmt_vlan}
|
||||
auto vlan${mgmt_vlan}
|
||||
iface vlan${mgmt_vlan} inet6 static
|
||||
vlan-raw-device ${mgmt_dev}
|
||||
address ${BOOTPARAM_IP_ADDR}/${BOOTPARAM_PREFIX_LEN}
|
||||
mtu 1500
|
||||
post-up echo 0 > /proc/sys/net/ipv6/conf/vlan${mgmt_vlan}/autoconf; echo 0 > /proc/sys/net/ipv6/conf/vlan${mgmt_vlan}/accept_ra; echo 0 > /proc/sys/net/ipv6/conf/vlan${mgmt_vlan}/accept_redirects
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
ilog "Contents of ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-lo:"
|
||||
ilog "$(cat "${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-lo")"
|
||||
|
||||
ilog "Contents of ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-${mgmt_dev}:"
|
||||
ilog "$(cat "${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-${mgmt_dev}")"
|
||||
|
||||
if [ -f "${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-vlan${mgmt_vlan}" ]; then
|
||||
ilog "Contents of ${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-vlan${mgmt_vlan}:"
|
||||
ilog "$(cat "${IMAGE_ROOTFS}/etc/network/interfaces.d/ifcfg-vlan${mgmt_vlan}")"
|
||||
fi
|
||||
|
||||
true
|
||||
|
Loading…
x
Reference in New Issue
Block a user