Manage kuma monitoring for all hosts
This commit is contained in:
@ -81,3 +81,70 @@
|
||||
dest: /home/core/.docker/config.json
|
||||
mode: '0600'
|
||||
owner: core
|
||||
- name: Setup Push Monitoring
|
||||
hosts: all
|
||||
tasks:
|
||||
- name: Login to Kuma
|
||||
delegate_to: localhost
|
||||
lucasheld.uptime_kuma.login:
|
||||
api_url: "{{ kuma.api_url }}"
|
||||
api_username: "{{ kuma.api_username }}"
|
||||
api_password: "{{ kuma.api_password }}"
|
||||
register: kumalogin
|
||||
- name: Create Kuma Monitor
|
||||
delegate_to: localhost
|
||||
lucasheld.uptime_kuma.monitor:
|
||||
api_url: "{{ kuma.api_url }}"
|
||||
api_token: "{{ kumalogin.token }}"
|
||||
name: "{{ inventory_hostname }}"
|
||||
description: "Managed by Ansible"
|
||||
type: push
|
||||
interval: 330
|
||||
maxretries: 2
|
||||
notification_names:
|
||||
- "Kuma Statusmonitor"
|
||||
state: present
|
||||
- name: Obtain Kuma Push Token
|
||||
delegate_to: localhost
|
||||
lucasheld.uptime_kuma.monitor_info:
|
||||
api_url: "{{ kuma.api_url }}"
|
||||
api_token: "{{ kumalogin.token }}"
|
||||
name: "{{ inventory_hostname }}"
|
||||
register: monitor
|
||||
- name: Check if user is lingering
|
||||
stat:
|
||||
path: "/var/lib/systemd/linger/{{ ansible_user }}"
|
||||
register: user_lingering
|
||||
- name: Enable lingering for root if needed
|
||||
command: "loginctl enable-linger {{ ansible_user }}"
|
||||
when:
|
||||
- not user_lingering.stat.exists
|
||||
- name: Create systemd config dir
|
||||
file:
|
||||
state: directory
|
||||
path: "/home/{{ ansible_user }}/.config/systemd/user"
|
||||
owner: "{{ ansible_user }}"
|
||||
group: "{{ ansible_user }}"
|
||||
mode: '0755'
|
||||
- name: Copy Push Monitor Service and Timer
|
||||
ansible.builtin.template:
|
||||
src: "{{ item }}.j2"
|
||||
dest: "/home/{{ ansible_user }}/.config/systemd/user/{{ item }}"
|
||||
mode: '0600'
|
||||
owner: "{{ ansible_user }}"
|
||||
vars:
|
||||
monitor_url: "{{ kuma.api_url }}/api/push/{{ monitor.monitors[0].pushToken }}?status=up&msg=OK"
|
||||
loop:
|
||||
- heartbeat.service
|
||||
- heartbeat.timer
|
||||
- name: Enable timer
|
||||
ansible.builtin.systemd:
|
||||
scope: user
|
||||
name: heartbeat.timer
|
||||
state: started
|
||||
enabled: true
|
||||
masked: false
|
||||
daemon_reload: true
|
||||
|
||||
|
||||
|
||||
|
7
coreos-config/plays/templates/heartbeat.service.j2
Normal file
7
coreos-config/plays/templates/heartbeat.service.j2
Normal file
@ -0,0 +1,7 @@
|
||||
[Unit]
|
||||
Description=Heartbeat
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/curl -fsS -m 10 --retry 5 {{ monitor_url }}
|
||||
StandardOutput=null
|
9
coreos-config/plays/templates/heartbeat.timer.j2
Normal file
9
coreos-config/plays/templates/heartbeat.timer.j2
Normal file
@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Send heartbeat every 5 minutes
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* *:00/5:00
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
Reference in New Issue
Block a user