Refactor deploy-to-proxmox.sh to enhance LXC rootfs storage selection: implement auto-detection of available storage options and improve error handling for missing storage. Update documentation for clarity on storage configuration.
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
# Example: ./deploy-to-proxmox.sh root@10.20.30.152
|
# Example: ./deploy-to-proxmox.sh root@10.20.30.152
|
||||||
#
|
#
|
||||||
# Optional env:
|
# Optional env:
|
||||||
# DEPLOY_ROOTFS_STORAGE=local-lvm — LXC rootfs storage (default: local-lvm)
|
# DEPLOY_ROOTFS_STORAGE=name — LXC rootfs storage (default: auto-detect: local-lvm, local, local-zfs, or first active)
|
||||||
# CM4_BACKUPS_HOST_PATH=/path — host dir for backups; bind-mounted into LXC
|
# CM4_BACKUPS_HOST_PATH=/path — host dir for backups; bind-mounted into LXC
|
||||||
# DEPLOY_LXC_ROOT_PASSWORD=secret — set root password in LXC and enable SSH
|
# DEPLOY_LXC_ROOT_PASSWORD=secret — set root password in LXC and enable SSH
|
||||||
# DEPLOY_LXC_SSH_KEY=/path/to/pub — copy this key to LXC root (default: ~/.ssh/id_ed25519.pub or id_rsa.pub)
|
# DEPLOY_LXC_SSH_KEY=/path/to/pub — copy this key to LXC root (default: ~/.ssh/id_ed25519.pub or id_rsa.pub)
|
||||||
@@ -61,11 +61,29 @@ log "[3/5] Running remote install (host + LXC) ..."
|
|||||||
ssh "$PROXMOX" "ROOTFS_STORAGE='$ROOTFS_STORAGE' CM4_BACKUPS_HOST_PATH='${CM4_BACKUPS_HOST_PATH:-}' DEPLOY_SSH_KEY_B64='${DEPLOY_SSH_KEY_B64:-}' DEPLOY_LXC_PWD_B64='${DEPLOY_LXC_PWD_B64:-}'" bash -s << 'REMOTE'
|
ssh "$PROXMOX" "ROOTFS_STORAGE='$ROOTFS_STORAGE' CM4_BACKUPS_HOST_PATH='${CM4_BACKUPS_HOST_PATH:-}' DEPLOY_SSH_KEY_B64='${DEPLOY_SSH_KEY_B64:-}' DEPLOY_LXC_PWD_B64='${DEPLOY_LXC_PWD_B64:-}'" bash -s << 'REMOTE'
|
||||||
set -e
|
set -e
|
||||||
DEPLOY=/tmp/emmc-provisioning-deploy
|
DEPLOY=/tmp/emmc-provisioning-deploy
|
||||||
ROOTFS_STORAGE="${ROOTFS_STORAGE:-local-lvm}"
|
|
||||||
BACKUPS_HOST_PATH="${CM4_BACKUPS_HOST_PATH:-}"
|
BACKUPS_HOST_PATH="${CM4_BACKUPS_HOST_PATH:-}"
|
||||||
LXC_HOSTNAME="cm4-provisioning"
|
LXC_HOSTNAME="cm4-provisioning"
|
||||||
log() { echo "[$(date -Iseconds)] $*"; }
|
log() { echo "[$(date -Iseconds)] $*"; }
|
||||||
|
|
||||||
|
# --- Auto-select LXC rootfs storage if not set or not available ---
|
||||||
|
_storage_exists() { pvesm status 2>/dev/null | awk -v s="$1" 'NR>1 && $1==s && $3=="active" {exit(0)} END{exit(1)}'; }
|
||||||
|
if [[ -n "${ROOTFS_STORAGE:-}" ]] && _storage_exists "$ROOTFS_STORAGE"; then
|
||||||
|
: # use provided and existing storage
|
||||||
|
else
|
||||||
|
ROOTFS_STORAGE=""
|
||||||
|
for cand in local-lvm local local-zfs; do
|
||||||
|
if _storage_exists "$cand"; then
|
||||||
|
ROOTFS_STORAGE="$cand"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -z "$ROOTFS_STORAGE" ]]; then
|
||||||
|
ROOTFS_STORAGE=$(pvesm status 2>/dev/null | awk 'NR>1 && $3=="active" {print $1; exit}')
|
||||||
|
fi
|
||||||
|
[[ -z "$ROOTFS_STORAGE" ]] && { log "Error: no Proxmox storage found. Run: pvesm status"; exit 1; }
|
||||||
|
log "Using storage: $ROOTFS_STORAGE"
|
||||||
|
fi
|
||||||
|
|
||||||
# --- Find existing LXC by hostname or use next available ID ---
|
# --- Find existing LXC by hostname or use next available ID ---
|
||||||
CTID=""
|
CTID=""
|
||||||
for id in $(pct list 2>/dev/null | awk 'NR>1 {print $1}'); do
|
for id in $(pct list 2>/dev/null | awk 'NR>1 {print $1}'); do
|
||||||
|
|||||||
Reference in New Issue
Block a user