mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-09-03 18:55:33 +00:00
5e046e3d31
`apt-get upgrade` holds back any package whose upgrade needs new dependencies, so it neither pins nor updates — it produces whatever partial set the dependency graph allows that day. On these nodes it upgraded pve-cluster to 9.1.6 while leaving libpve-cluster-api-perl at 9.1.0. Those two ship the halves of the join: cfs_backup_database() in PVE/Cluster.pm (pve-cluster) and finish_join() in PVE/Cluster/Setup.pm (libpve-cluster-api-perl). Upstream removed `return $dbfile` from the former and stopped relying on it in the latter, both at 9.1.1 — 9.1.6's finish_join calls cfs_unlink_db_unsafe() instead. The 9.1.0 caller against the 9.1.6 callee unlinks an empty string, so the standalone config.db survives the join, pmxcfs restarts in local mode, and the node reports online=0 forever while corosync forms a healthy 2-node membership. That is the "2 nodes online" failure, and it is not reachable on any coherent install. The ISO is the pin, so drop the upgrade and install only what the harness needs. Upgrades belong in a separate currency lane that records the package set it tested. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
30 lines
1.5 KiB
Bash
Executable File
30 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# First-boot script for nested PVE test instances.
|
|
# Runs once after auto-install completes and the system reboots.
|
|
# Installs qemu-guest-agent so the parent PVE can discover the VM's IP via the guest agent API.
|
|
|
|
set -e
|
|
|
|
# Disable enterprise repos (no subscription) and enable the no-subscription repo
|
|
# PVE 8.x uses .list files, PVE 9.x uses .sources (DEB822 format)
|
|
rm -f /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.sources
|
|
rm -f /etc/apt/sources.list.d/ceph.list /etc/apt/sources.list.d/ceph.sources
|
|
|
|
# Detect Debian suite from os-release (works on both PVE 8/bookworm and PVE 9/trixie)
|
|
SUITE=$(. /etc/os-release && echo "$VERSION_CODENAME")
|
|
if [ -z "$SUITE" ]; then
|
|
# Fallback: try parsing apt sources
|
|
SUITE=$(grep -oP 'Suites:\s*\K\S+' /etc/apt/sources.list.d/debian.sources 2>/dev/null | head -1 || echo "bookworm")
|
|
fi
|
|
echo "deb http://download.proxmox.com/debian/pve ${SUITE} pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
|
|
|
|
# No upgrade here on purpose. `apt-get upgrade` holds back packages that need
|
|
# new dependencies, which produced pve-cluster 9.1.6 against
|
|
# libpve-cluster-api-perl 9.1.0 — a combination no real install ever has, and
|
|
# one whose cluster join silently leaves the node unclustered. The ISO is the
|
|
# pin; the currency lane is where upgrades get exercised.
|
|
apt-get update -qq
|
|
apt-get install -y -qq --no-install-recommends qemu-guest-agent open-iscsi
|
|
systemctl start qemu-guest-agent
|
|
systemctl enable open-iscsi
|