feat(proxmox): check_vm as cronjob
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Configuration
|
||||
VM_ID=303
|
||||
TARGET_IP="192.168.20.36" # Replace with the IP of your VM
|
||||
VM_ID=$1
|
||||
TARGET_IP=$2
|
||||
PORT=22
|
||||
CHECK_INTERVAL=300 # 5 minutes in seconds
|
||||
LOG_FILE="/var/log/vm_monitor.log"
|
||||
LOG_FILE="/var/log/vm_monitor_${VM_ID}.log"
|
||||
|
||||
# Function to log messages
|
||||
log_message() {
|
||||
@@ -65,19 +64,12 @@ restart_vm() {
|
||||
log_message "VM $VM_ID has been restarted."
|
||||
}
|
||||
|
||||
# Main loop
|
||||
# Main execution
|
||||
log_message "Starting monitoring of VM $VM_ID on port $PORT..."
|
||||
log_message "Press Ctrl+C to exit."
|
||||
|
||||
while true; do
|
||||
# Check if port 22 is open
|
||||
if ! check_port; then
|
||||
restart_vm
|
||||
else
|
||||
log_message "Port $PORT is reachable. VM is running normally."
|
||||
fi
|
||||
|
||||
# Wait for the next check
|
||||
log_message "Sleeping for $CHECK_INTERVAL seconds..."
|
||||
sleep $CHECK_INTERVAL
|
||||
done
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
ansible.builtin.shell: |
|
||||
qm set {{ vm.vmid }} --scsi0 {{ proxmox_storage }}:{{ vm.vmid }}/vm-{{ vm.vmid }}-disk-0.raw --ide2 {{ proxmox_storage }}:cloudinit --boot order=scsi0
|
||||
delegate_to: "{{ vm.node }}"
|
||||
changed_when: true
|
||||
|
||||
- name: Resize scsi0 disk if needed
|
||||
ansible.builtin.shell: |
|
||||
@@ -86,3 +87,17 @@
|
||||
# create: true
|
||||
# state: present
|
||||
# delegate_to: localhost
|
||||
|
||||
- name: Copy VM check script to node
|
||||
ansible.builtin.copy:
|
||||
src: check_proxmox_vm.sh
|
||||
dest: /usr/local/bin/check_proxmox_vm.sh
|
||||
mode: '0755'
|
||||
delegate_to: "{{ vm.node }}"
|
||||
|
||||
- name: Schedule VM check script
|
||||
ansible.builtin.cron:
|
||||
name: "Check VM {{ vm.name }}"
|
||||
job: "/usr/local/bin/check_proxmox_vm.sh {{ vm.vmid }} {{ vm_found_ip }}"
|
||||
minute: "*/5"
|
||||
delegate_to: "{{ vm.node }}"
|
||||
|
||||
Reference in New Issue
Block a user