From 8f99482cea3d84b52af6dbde3d4fca322eaa817b Mon Sep 17 00:00:00 2001 From: eli <5178396+gl00ten@users.noreply.github.com> Date: Thu, 4 Sep 2025 06:30:25 +0100 Subject: [PATCH] Create monit_alert_setup.yml --- monit_alert_setup.yml | 59 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 monit_alert_setup.yml diff --git a/monit_alert_setup.yml b/monit_alert_setup.yml new file mode 100644 index 0000000..8763822 --- /dev/null +++ b/monit_alert_setup.yml @@ -0,0 +1,59 @@ +--- +- name: Quick Monit setup + hosts: all + become: true + + vars: + # ---- customize me ---- + http_port: 8080 + + # SMTP / alerts + monit_alert_email: "alerts@example.com" + monit_smtp_host: "127.0.0.1" + monit_smtp_port: 1025 + #monit_smtp_user: "smtp_user" + #monit_smtp_pass: "smtp_password" + #monit_tls_version: "tlsv12" # e.g., tlsv12 or tlsv13 + + app_name: "pyhttp" + python_bin: "/usr/bin/python3" + app_dir: "/home/eli" + app_script: "httpserver.py" + + tasks: + - name: Ensure monit is installed + package: + name: monit + state: present + + - name: Enable and start Monit (equiv to `systemctl enable --now monit`) + systemd: + name: monit # use 'monit.service' if that's the unit name on your box + enabled: true + state: started + + + - name: Drop Monit config for {{ app_name }} + copy: + dest: "/etc/monit/conf.d/{{ app_name }}.monit" + mode: "0644" + content: | + set mailserver {{ monit_smtp_host }} port {{ monit_smtp_port }} + + set alert {{ monit_alert_email }} + + check process pyhttpserver matching "{{ python_bin }} {{ app_dir }}/{{ app_script }}" + start program = "{{ python_bin }} {{ app_dir }}/{{ app_script }}" + stop program = "/usr/bin/pkill -f '{{ python_bin }} {{ app_dir }}/{{ app_script }}'" + + - name: Validate Monit config + command: monit -t + register: monit_test + changed_when: false + failed_when: monit_test.rc != 0 + + - name: Enable and restart Monit + systemd: + name: monit + enabled: true + state: restarted