Hooks and Event-Driven Automation

Overview

Hooks allow scripts to run on specific Proxmox VE events. React to VM lifecycle events automatically.

Hook Scripts

VM Hook Script

#!/bin/bash
# vm-hook.sh - Hook script for VM events
 
VMID=$1
EVENT=$2
 
log() {
    echo "[$(date)] VM $VMID: $EVENT" >> /var/log/vm-hooks.log
}
 
case $EVENT in
    pre-start)
        log "VM starting..."
        ;;
    post-start)
        log "VM started"
        # Notify, update status
        ;;
    pre-stop)
        log "VM stopping..."
        ;;
    post-stop)
        log "VM stopped"
        # Cleanup, logging
        ;;
    pre-migrate)
        log "VM migrating..."
        ;;
    post-migrate)
        log "VM migrated"
        ;;
esac

Configure Hook

# Add hook to VM
qm set 100 --hookscript /root/vm-hook.sh

Use Cases

Startup Notification

#!/bin/bash
# notify-startup.sh
 
VMID=$1
 
# Send notification (Slack, email, etc)
curl -X POST https://hooks.example.com/notify \
  -d "{\"text\":\"VM $VMID started\"}"
 
# Update monitoring
echo "$(date): VM $VMID started" >> /var/log/vm-updates.log

Backup Trigger

#!/bin/bash
# backup-on-stop.sh
 
VMID=$1
EVENT=$2
 
if [ "$EVENT" = "pre-stop" ]; then
    echo "Triggering backup for VM $VMID"
    vzdump --mode suspend --vmid $VMID --storage local
fi

Resource Limits

#!/bin/bash
# adjust-resources.sh
 
VMID=$1
EVENT=$2
 
if [ "$EVENT" = "post-start" ]; then
    # Check and adjust CPU limit
    qm set $VMID --cpulimit 50
fi

Event Types

EventDescription
pre-startBefore VM starts
post-startAfter VM starts
pre-stopBefore VM stops
post-stopAfter VM stops
pre-migrateBefore migration
post-migrateAfter migration

Configuration

Enable Hooks

# Add hook to VM
qm set 100 --hookscript /path/to/script.sh
 
# Remove hook
qm set 100 --hookscript none

Test Hook

# Manually trigger
/root/script.sh 100 post-start

Keywords

hooks events automation lifecycle


Back to Proxmox VE