From b21d8b75e07d66149c1f6c9abcaf3805ae6e097c Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 2 Apr 2025 09:50:15 -0400 Subject: [PATCH] Incorporate block device into retry loop Have block devices checked for identity information in a loop with network source search. Block devices may be delayed for various reasons. The previous method could be bypassed by fast block device cutting off slow device enumeration. It also incurred a delay for the network install case. --- .../initramfs/scripts/init-premount/confluent | 123 +++++++++-------- .../initramfs/scripts/init-premount/confluent | 124 +++++++++--------- 2 files changed, 121 insertions(+), 126 deletions(-) diff --git a/confluent_osdeploy/ubuntu20.04/initramfs/scripts/init-premount/confluent b/confluent_osdeploy/ubuntu20.04/initramfs/scripts/init-premount/confluent index a974f04d..964869d7 100755 --- a/confluent_osdeploy/ubuntu20.04/initramfs/scripts/init-premount/confluent +++ b/confluent_osdeploy/ubuntu20.04/initramfs/scripts/init-premount/confluent @@ -6,77 +6,74 @@ done mkdir -p /custom-installation cp -a /opt/confluent /custom-installation touch /custom-installation/confluent/confluent.info -TRIES=5 -while [ ! -e /dev/disk/by-label ] && [ $TRIES -gt 0 ]; do - sleep 2 - TRIES=$((TRIES - 1)) -done -if [ -e /dev/disk/by-label/CNFLNT_IDNT ]; then - tmnt=/tmp/idntmnt - mkdir -p /tmp/identdata/ - mkdir -p $tmnt - tcfg=/tmp/idnttmp - mount /dev/disk/by-label/CNFLNT_IDNT $tmnt - cp -a $tmnt/* /tmp/identdata/ - cd $tmnt - deploysrvs=$(sed -n '/^deploy_servers:/,/^[^-]/p' cnflnt.yml |grep ^-|sed -e 's/^- //'|grep -v :) - sed -n '/^net_cfgs:/,/^[^- ]/{/^[^- ]/!p}' cnflnt.yml |sed -n '/^-/,/^-/{/^-/!p}'| sed -e 's/^[- ]*//'> $tcfg - autoconfigmethod=$(grep ^ipv4_method: $tcfg) - autoconfigmethod=${autoconfigmethod#ipv4_method: } - . /scripts/functions - if [ "$autoconfigmethod" = "static" ]; then - MYIP=$(grep ^ipv4_address: $tcfg | awk '{print $2}'|sed -e s'!/.*!!') - v4addr=$(grep ^ipv4_address: $tcfg|cut -d: -f 2|sed -e 's/ //') - MYGW=$(grep ^ipv4_gateway: $tcfg | awk '{print $2}') - if [ "$MYGW" = "null" ]; then - MYGW="" - fi - MYNM=$(grep ^ipv4_netmask: $tcfg | awk '{print $2}') - NIC="" - while [ -z "$NIC" ]; do - for NICGUESS in $(ip link|grep LOWER_UP|grep -v LOOPBACK|cut -d ' ' -f 2 | sed -e 's/:$//'); do - ip addr add dev $NICGUESS $v4addr - if [ ! -z "$MYGW" ]; then - ip route add default via $MYGW - fi - for dsrv in $deploysrvs; do - if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then - deploysrvs=$dsrv - NIC=$NICGUESS +while ! grep NODENAME /custom-installation/confluent/confluent.info; do + if [ -e /dev/disk/by-label/CNFLNT_IDNT ]; then + tmnt=/tmp/idntmnt + mkdir -p /tmp/identdata/ + mkdir -p $tmnt + tcfg=/tmp/idnttmp + mount /dev/disk/by-label/CNFLNT_IDNT $tmnt + cp -a $tmnt/* /tmp/identdata/ + cd $tmnt + deploysrvs=$(sed -n '/^deploy_servers:/,/^[^-]/p' cnflnt.yml |grep ^-|sed -e 's/^- //'|grep -v :) + sed -n '/^net_cfgs:/,/^[^- ]/{/^[^- ]/!p}' cnflnt.yml |sed -n '/^-/,/^-/{/^-/!p}'| sed -e 's/^[- ]*//'> $tcfg + autoconfigmethod=$(grep ^ipv4_method: $tcfg) + autoconfigmethod=${autoconfigmethod#ipv4_method: } + . /scripts/functions + if [ "$autoconfigmethod" = "static" ]; then + MYIP=$(grep ^ipv4_address: $tcfg | awk '{print $2}'|sed -e s'!/.*!!') + v4addr=$(grep ^ipv4_address: $tcfg|cut -d: -f 2|sed -e 's/ //') + MYGW=$(grep ^ipv4_gateway: $tcfg | awk '{print $2}') + if [ "$MYGW" = "null" ]; then + MYGW="" + fi + MYNM=$(grep ^ipv4_netmask: $tcfg | awk '{print $2}') + NIC="" + while [ -z "$NIC" ]; do + for NICGUESS in $(ip link|grep LOWER_UP|grep -v LOOPBACK|cut -d ' ' -f 2 | sed -e 's/:$//'); do + ip addr add dev $NICGUESS $v4addr + if [ ! -z "$MYGW" ]; then + ip route add default via $MYGW + fi + for dsrv in $deploysrvs; do + if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then + deploysrvs=$dsrv + NIC=$NICGUESS + break + fi + done + if [ -z "$NIC" ]; then + ip -4 a flush dev $NICGUESS + else break fi done - if [ -z "$NIC" ]; then - ip -4 a flush dev $NICGUESS - else + done + ipconfig -d $MYIP::$MYGW:$MYNM::$NIC + echo $NIC > /tmp/autodetectnic + else + configure_networking + for dsrv in $deploysrvs; do + if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then + deploysrvs=$dsrv break fi done - done - ipconfig -d $MYIP::$MYGW:$MYNM::$NIC - echo $NIC > /tmp/autodetectnic + fi + MGR=$deploysrvs + NODENAME=$(grep ^nodename: /tmp/idntmnt/cnflnt.yml | awk '{print $2}') + echo "NODENAME: $NODENAME" >> /custom-installation/confluent/confluent.info + echo "MANAGER: $MGR" >> /custom-installation/confluent/confluent.info + echo "EXTMGRINFO: $MGR||1" >> /custom-installation/confluent/confluent.info + hmackeyfile=/tmp/cnflnthmackeytmp + echo -n $(grep ^apitoken: cnflnt.yml|awk '{print $2}') > $hmackeyfile + cd - + umount $tmnt else - configure_networking - for dsrv in $deploysrvs; do - if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then - deploysrvs=$dsrv - break - fi - done - fi - MGR=$deploysrvs - NODENAME=$(grep ^nodename: /tmp/idntmnt/cnflnt.yml | awk '{print $2}') - echo "NODENAME: $NODENAME" >> /custom-installation/confluent/confluent.info - echo "MANAGER: $MGR" >> /custom-installation/confluent/confluent.info - echo "EXTMGRINFO: $MGR||1" >> /custom-installation/confluent/confluent.info - hmackeyfile=/tmp/cnflnthmackeytmp - echo -n $(grep ^apitoken: cnflnt.yml|awk '{print $2}') > $hmackeyfile - cd - - umount $tmnt -else - while ! grep NODENAME /custom-installation/confluent/confluent.info; do /opt/confluent/bin/copernicus -t > /custom-installation/confluent/confluent.info - done + fi +done +if [ -z "$MGR" ]; then MGR="[$(grep MANAGER: /custom-installation/confluent/confluent.info | head -n 1 | awk '{print $2}')]" fi osprofile=$(sed -e 's/.*osprofile=//' -e 's/ .*//' /proc/cmdline) diff --git a/confluent_osdeploy/ubuntu22.04/initramfs/scripts/init-premount/confluent b/confluent_osdeploy/ubuntu22.04/initramfs/scripts/init-premount/confluent index 725560de..995fb086 100755 --- a/confluent_osdeploy/ubuntu22.04/initramfs/scripts/init-premount/confluent +++ b/confluent_osdeploy/ubuntu22.04/initramfs/scripts/init-premount/confluent @@ -6,77 +6,75 @@ done mkdir -p /custom-installation cp -a /opt/confluent /custom-installation touch /custom-installation/confluent/confluent.info -TRIES=5 -while [ ! -e /dev/disk/by-label ] && [ $TRIES -gt 0 ]; do - sleep 2 - TRIES=$((TRIES - 1)) -done -if [ -e /dev/disk/by-label/CNFLNT_IDNT ]; then - tmnt=/tmp/idntmnt - mkdir -p /tmp/identdata/ - mkdir -p $tmnt - tcfg=/tmp/idnttmp - mount /dev/disk/by-label/CNFLNT_IDNT $tmnt - cp -a $tmnt/* /tmp/identdata/ - cd $tmnt - deploysrvs=$(sed -n '/^deploy_servers:/,/^[^-]/p' cnflnt.yml |grep ^-|sed -e 's/^- //'|grep -v :) - sed -n '/^net_cfgs:/,/^[^- ]/{/^[^- ]/!p}' cnflnt.yml |sed -n '/^-/,/^-/{/^-/!p}'| sed -e 's/^[- ]*//'> $tcfg - autoconfigmethod=$(grep ^ipv4_method: $tcfg) - autoconfigmethod=${autoconfigmethod#ipv4_method: } - . /scripts/functions - if [ "$autoconfigmethod" = "static" ]; then - MYIP=$(grep ^ipv4_address: $tcfg | awk '{print $2}'|sed -e s'!/.*!!') - v4addr=$(grep ^ipv4_address: $tcfg|cut -d: -f 2|sed -e 's/ //') - MYGW=$(grep ^ipv4_gateway: $tcfg | awk '{print $2}') - if [ "$MYGW" = "null" ]; then - MYGW="" - fi - MYNM=$(grep ^ipv4_netmask: $tcfg | awk '{print $2}') - NIC="" - while [ -z "$NIC" ]; do - for NICGUESS in $(ip link|grep LOWER_UP|grep -v LOOPBACK|cut -d ' ' -f 2 | sed -e 's/:$//'); do - ip addr add dev $NICGUESS $v4addr - if [ ! -z "$MYGW" ]; then - ip route add default via $MYGW - fi - for dsrv in $deploysrvs; do - if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then - deploysrvs=$dsrv - NIC=$NICGUESS +MGR="" +while ! grep NODENAME /custom-installation/confluent/confluent.info; do + if [ -e /dev/disk/by-label/CNFLNT_IDNT ]; then + tmnt=/tmp/idntmnt + mkdir -p /tmp/identdata/ + mkdir -p $tmnt + tcfg=/tmp/idnttmp + mount /dev/disk/by-label/CNFLNT_IDNT $tmnt + cp -a $tmnt/* /tmp/identdata/ + cd $tmnt + deploysrvs=$(sed -n '/^deploy_servers:/,/^[^-]/p' cnflnt.yml |grep ^-|sed -e 's/^- //'|grep -v :) + sed -n '/^net_cfgs:/,/^[^- ]/{/^[^- ]/!p}' cnflnt.yml |sed -n '/^-/,/^-/{/^-/!p}'| sed -e 's/^[- ]*//'> $tcfg + autoconfigmethod=$(grep ^ipv4_method: $tcfg) + autoconfigmethod=${autoconfigmethod#ipv4_method: } + . /scripts/functions + if [ "$autoconfigmethod" = "static" ]; then + MYIP=$(grep ^ipv4_address: $tcfg | awk '{print $2}'|sed -e s'!/.*!!') + v4addr=$(grep ^ipv4_address: $tcfg|cut -d: -f 2|sed -e 's/ //') + MYGW=$(grep ^ipv4_gateway: $tcfg | awk '{print $2}') + if [ "$MYGW" = "null" ]; then + MYGW="" + fi + MYNM=$(grep ^ipv4_netmask: $tcfg | awk '{print $2}') + NIC="" + while [ -z "$NIC" ]; do + for NICGUESS in $(ip link|grep LOWER_UP|grep -v LOOPBACK|cut -d ' ' -f 2 | sed -e 's/:$//'); do + ip addr add dev $NICGUESS $v4addr + if [ ! -z "$MYGW" ]; then + ip route add default via $MYGW + fi + for dsrv in $deploysrvs; do + if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then + deploysrvs=$dsrv + NIC=$NICGUESS + break + fi + done + if [ -z "$NIC" ]; then + ip -4 a flush dev $NICGUESS + else break fi done - if [ -z "$NIC" ]; then - ip -4 a flush dev $NICGUESS - else + done + ipconfig -d $MYIP::$MYGW:$MYNM::$NIC + echo $NIC > /tmp/autodetectnic + else + configure_networking + for dsrv in $deploysrvs; do + if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then + deploysrvs=$dsrv break fi done - done - ipconfig -d $MYIP::$MYGW:$MYNM::$NIC - echo $NIC > /tmp/autodetectnic + fi + MGR=$deploysrvs + NODENAME=$(grep ^nodename: /tmp/idntmnt/cnflnt.yml | awk '{print $2}') + echo "NODENAME: $NODENAME" >> /custom-installation/confluent/confluent.info + echo "MANAGER: $MGR" >> /custom-installation/confluent/confluent.info + echo "EXTMGRINFO: $MGR||1" >> /custom-installation/confluent/confluent.info + hmackeyfile=/tmp/cnflnthmackeytmp + echo -n $(grep ^apitoken: cnflnt.yml|awk '{print $2}') > $hmackeyfile + cd - + umount $tmnt else - configure_networking - for dsrv in $deploysrvs; do - if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then - deploysrvs=$dsrv - break - fi - done - fi - MGR=$deploysrvs - NODENAME=$(grep ^nodename: /tmp/idntmnt/cnflnt.yml | awk '{print $2}') - echo "NODENAME: $NODENAME" >> /custom-installation/confluent/confluent.info - echo "MANAGER: $MGR" >> /custom-installation/confluent/confluent.info - echo "EXTMGRINFO: $MGR||1" >> /custom-installation/confluent/confluent.info - hmackeyfile=/tmp/cnflnthmackeytmp - echo -n $(grep ^apitoken: cnflnt.yml|awk '{print $2}') > $hmackeyfile - cd - - umount $tmnt -else - while ! grep NODENAME /custom-installation/confluent/confluent.info; do /opt/confluent/bin/copernicus -t > /custom-installation/confluent/confluent.info - done + fi +done +if [ -z "$MGR" ]; then MGR="[$(grep MANAGER: /custom-installation/confluent/confluent.info | head -n 1 | awk '{print $2}')]" fi osprofile=$(sed -e 's/.*osprofile=//' -e 's/ .*//' /proc/cmdline)