diff --git a/roles/proxmox/files/check_proxmox_vm.sh b/roles/proxmox/files/check_proxmox_vm.sh index 6124842..ecf59b2 100755 --- a/roles/proxmox/files/check_proxmox_vm.sh +++ b/roles/proxmox/files/check_proxmox_vm.sh @@ -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 +# Check if port 22 is open +if ! check_port; then + restart_vm +else + log_message "Port $PORT is reachable. VM is running normally." +fi diff --git a/roles/proxmox/tasks/56_provision_new_vm.yml b/roles/proxmox/tasks/56_provision_new_vm.yml index 2b2bb30..f1610fe 100644 --- a/roles/proxmox/tasks/56_provision_new_vm.yml +++ b/roles/proxmox/tasks/56_provision_new_vm.yml @@ -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 }}"