diff --git a/roles/vmalert/defaults/main.yml b/roles/vmalert/defaults/main.yml new file mode 100644 index 0000000..b05ac78 --- /dev/null +++ b/roles/vmalert/defaults/main.yml @@ -0,0 +1,2 @@ +vmalert_rules: + groups: [] diff --git a/roles/vmalert/handlers/main.yml b/roles/vmalert/handlers/main.yml new file mode 100644 index 0000000..89867d8 --- /dev/null +++ b/roles/vmalert/handlers/main.yml @@ -0,0 +1,9 @@ +- name: restart vmalert + service: + name: vmalert + state: restarted + +- name: reload vmalert + uri: + url: http://[::1]:8880/-/reload + changed_when: true diff --git a/roles/vmalert/tasks/deploy.yml b/roles/vmalert/tasks/deploy.yml new file mode 100644 index 0000000..aba4661 --- /dev/null +++ b/roles/vmalert/tasks/deploy.yml @@ -0,0 +1,59 @@ +- name: ensure victoria metrics config directory exists + file: + path: /etc/victoria-metrics + mode: u=rwx,go=rx + owner: root + group: root + state: directory + tags: + - config +- name: ensure vmalert rules directory exists + file: + path: /etc/victoria-metrics/rules + mode: u=rwx,go=rx + owner: root + group: root + state: directory + tags: + - config + +- name: ensure vmalert alert rules are configured + copy: + dest: /etc/victoria-metrics/rules/alerts.yml + content: |+ + {{ vmalert_rules | to_nice_yaml(indent=2) }} + mode: u=rw,go=r + owner: root + group: root + notify: + - reload vmalert + tags: + - config + - alerts-config + +- name: ensure vmalert environment variables are set + template: + src: vmalert.sysconfig.j2 + dest: /etc/sysconfig/vmalert + mode: u=rw,go=r + owner: root + group: root + notify: + - restart vmalert + tags: + - config + +- name: ensure vmalert starts at boot + service: + name: vmalert + enabled: true + tags: + - service +- name: flush handlers + meta: flush_handlers +- name: ensure vmalert is running + service: + name: vmalert + state: started + tags: + - service diff --git a/roles/vmalert/tasks/main.yml b/roles/vmalert/tasks/main.yml new file mode 100644 index 0000000..8026d6f --- /dev/null +++ b/roles/vmalert/tasks/main.yml @@ -0,0 +1,7 @@ +- block: +# - import_tasks: install.yml +# tags: +# - install + - import_tasks: deploy.yml + tags: + - vmalert diff --git a/roles/vmalert/templates/vmalert.sysconfig.j2 b/roles/vmalert/templates/vmalert.sysconfig.j2 new file mode 100644 index 0000000..7e19c19 --- /dev/null +++ b/roles/vmalert/templates/vmalert.sysconfig.j2 @@ -0,0 +1,12 @@ +{% if vmalert_datasource_url|d %} +datasource_url={{ vmalert_datasource_url }} +{% endif %} +{% if vmalert_notifier_url|d %} +notifier_url={{ vmalert_notifier_url }} +{% endif %} +{% if vmalert_remote_read_url|d %} +remoteRead_url={{ vmalert_remote_read_url }} +{% endif %} +{% if vmalert_remote_write_url|d %} +remoteWrite_url={{ vmalert_remote_write_url }} +{% endif %} diff --git a/victoria-metrics.yml b/victoria-metrics.yml index 98b5672..f2d3077 100644 --- a/victoria-metrics.yml +++ b/victoria-metrics.yml @@ -6,3 +6,7 @@ - hosts: vmagent roles: - vmagent + +- hosts: vmalert + roles: + - vmalert