]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-cm-ansible.git/commitdiff
prep-fog-capture: Log netplan config output prepfog-reboot 812/head
authorDavid Galloway <david.galloway@ibm.com>
Wed, 21 Jan 2026 19:38:21 +0000 (14:38 -0500)
committerDavid Galloway <david.galloway@ibm.com>
Wed, 21 Jan 2026 20:21:31 +0000 (15:21 -0500)
Signed-off-by: David Galloway <david.galloway@ibm.com>
tools/prep-fog-capture.yml

index 6e12f34c6eaa790c79887972e3a4629c41c20ec2..c5ac593c0e540320b69dffa2fb67d457ddbe52b2 100644 (file)
 
             OUT="/etc/netplan/01-fog.yaml"
             STAMP="/.cephlab_net_configured"
+            LOG="/var/log/netplan-from-link.log"
+
+            log() {
+              echo "$(date -u +%FT%T.%N | cut -c1-23) netplan-from-link: $*" | tee -a "$LOG" >&2
+            }
+
+            exec 2> >(tee -a "$LOG" >&2)
+            exec 1>&2
+
+            log "starting"
+            log "kernel=$(uname -r)"
+            log "cmdline=$(cat /proc/cmdline || true)"
 
             rm -f /etc/netplan/*.yaml || true
 
             pick_iface() {
-              for c in /sys/class/net/*/carrier; do
-                iface="$(basename "$(dirname "$c")")"
+              for d in /sys/class/net/*; do
+                iface="$(basename "$d")"
+                c="$d/carrier"
 
                 case "$iface" in
                   lo|docker*|veth*|virbr*|br*|cni*|flannel*|weave*|zt*|wg*|tun*|tap*|sit*|ip6tnl*|gre*|gretap*|erspan*|bond* )
                     ;;
                 esac
 
-                if [[ -r "$c" ]] && [[ "$(cat "$c" 2>/dev/null || true)" == "1" ]]; then
+                ip link set dev "$iface" up 2>/dev/null || true
+                v="$(cat "$c" 2>/dev/null || true)"
+                log "probe iface=$iface carrier='${v}' path=$c"
+                if [[ -r "$c" ]] && [[ "$v" == "1" ]]; then
+                  log "selected iface=$iface via carrier"
                   echo "$iface"
                   return 0
                 fi
               done
 
-              ip -4 route show default 2>/dev/null | awk '{for(i=1;i<=NF;i++) if ($i=="dev") {print $(i+1); exit}}' || true
+              dflt="$(ip -4 route show default 2>/dev/null | awk '{for(i=1;i<=NF;i++) if ($i=="dev") {print $(i+1); exit}}' || true)"
+              if [[ -n "${dflt:-}" ]]; then
+                log "selected iface=$dflt via default-route"
+                echo "$dflt"
+                return 0
+              fi
+
+              return 1
             }
 
             iface=""
-            for _ in $(seq 1 30); do
+            for i in $(seq 1 30); do
               iface="$(pick_iface || true)"
               if [[ -n "${iface:-}" ]]; then
                 break
               fi
+              log "no iface yet (attempt $i/30); sleeping 1s"
               sleep 1
             done
 
             if [[ -z "${iface:-}" ]]; then
-              echo "netplan-from-link could not find an uplink interface" >&2
+              log "netplan-from-link could not find an uplink interface"
+              log "ip -o link:"
+              ip -o link show || true
+              log "ip -4 addr:"
+              ip -4 addr show || true
+              log "ip -4 route:"
+              ip -4 route show || true
               exit 0
             fi
 
+            log "writing netplan to $OUT for iface=$iface"
             cat >"$OUT" <<EOF
             network:
               version: 2
                     addresses: [10.20.192.11]
             EOF
 
-            chmod 0644 "$OUT"
+            chmod 0600 "$OUT"
 
             if command -v netplan >/dev/null 2>&1; then
+              log "netplan generate"
               netplan generate || true
+              log "netplan apply"
               netplan apply || true
+            else
+              log "netplan not found; skipping generate/apply"
             fi
 
+            log "final ip -4 addr for iface=$iface"
+            ip -4 addr show dev "$iface" || true
+
             touch "$STAMP"
+            log "done; touched $STAMP"
 
       - name: Install Ubuntu 20 netplan file to ensure NIC comes up
         copy:
                  optional: true
         when: ansible_distribution_major_version|int == 20
 
-      - name: Install systemd unit for netplan link selection
+      - name: Install netplan-from-link systemd unit
         ansible.builtin.copy:
           dest: /etc/systemd/system/netplan-from-link.service
           owner: root
           content: |
             [Unit]
             Description=Write netplan from link carrier once
-            After=systemd-udev-settle.service local-fs.target
-            Wants=systemd-udev-settle.service
+            After=systemd-networkd.service local-fs.target
+            Wants=systemd-networkd.service
 
             [Service]
             Type=oneshot