mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
ansible: add alertmanager role
This commit is contained in:
committed by
Dan Christian Bogos
parent
378e8fd000
commit
3a6d5dd090
13
data/ansible/roles/alertmanager/defaults/main.yaml
Normal file
13
data/ansible/roles/alertmanager/defaults/main.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
alertmanager_version: 0.27.0
|
||||
alertmanager_user: alertmanager
|
||||
alertmanager_install_dir: /opt/alertmanager
|
||||
alertmanager_config_dir: /etc/alertmanager
|
||||
alertmanager_data_dir: /var/lib/alertmanager
|
||||
|
||||
alertmanager_web_listen_address: 0.0.0.0:9093
|
||||
|
||||
alertmanager_service_enabled: false
|
||||
alertmanager_service_state: stopped
|
||||
|
||||
alertmanager_config_file: '{{ alertmanager_install_dir }}/alertmanager.yml'
|
||||
8
data/ansible/roles/alertmanager/handlers/main.yaml
Normal file
8
data/ansible/roles/alertmanager/handlers/main.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
- name: Restart alertmanager
|
||||
become: true
|
||||
ansible.builtin.systemd_service:
|
||||
name: alertmanager
|
||||
state: restarted
|
||||
daemon_reload: true
|
||||
when: alertmanager_service_state == 'started'
|
||||
86
data/ansible/roles/alertmanager/tasks/main.yaml
Normal file
86
data/ansible/roles/alertmanager/tasks/main.yaml
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
- name: Create alertmanager user
|
||||
become: true
|
||||
ansible.builtin.user:
|
||||
name: '{{ alertmanager_user }}'
|
||||
state: present
|
||||
system: true
|
||||
createhome: no
|
||||
|
||||
- name: Check current Alertmanager version
|
||||
ansible.builtin.command: "{{ alertmanager_install_dir }}/alertmanager --version"
|
||||
register: alertmanager_current_version
|
||||
ignore_errors: true
|
||||
changed_when: false
|
||||
|
||||
- name: Remove existing Alertmanager installation if version differs
|
||||
become: true
|
||||
ansible.builtin.file:
|
||||
path: "{{ alertmanager_install_dir }}"
|
||||
state: absent
|
||||
when: alertmanager_current_version.rc == 0 and alertmanager_version not in alertmanager_current_version.stdout
|
||||
|
||||
- name: Create alertmanager directories
|
||||
become: true
|
||||
ansible.builtin.file:
|
||||
path: '{{ item }}'
|
||||
state: directory
|
||||
owner: '{{ alertmanager_user }}'
|
||||
group: '{{ alertmanager_user }}'
|
||||
mode: '0755'
|
||||
loop:
|
||||
- '{{ alertmanager_config_dir }}'
|
||||
- '{{ alertmanager_data_dir }}'
|
||||
- '{{ alertmanager_install_dir }}'
|
||||
|
||||
- name: Download and extract alertmanager
|
||||
become: true
|
||||
ansible.builtin.unarchive:
|
||||
src: 'https://github.com/prometheus/alertmanager/releases/download/v{{ alertmanager_version }}/alertmanager-{{ alertmanager_version }}.linux-amd64.tar.gz'
|
||||
dest: '{{ alertmanager_install_dir }}'
|
||||
remote_src: true
|
||||
owner: '{{ alertmanager_user }}'
|
||||
group: '{{ alertmanager_user }}'
|
||||
extra_opts: [--strip-components=1]
|
||||
notify: Restart alertmanager
|
||||
when: alertmanager_current_version.rc != 0 or alertmanager_version not in alertmanager_current_version.stdout
|
||||
|
||||
- name: Handle alertmanager config file
|
||||
block:
|
||||
- name: Copy file (if not .j2)
|
||||
become: true
|
||||
ansible.builtin.copy:
|
||||
src: '{{ alertmanager_config_file }}'
|
||||
dest: '{{ alertmanager_config_dir }}/{{ alertmanager_config_file | basename }}'
|
||||
owner: '{{ alertmanager_user }}'
|
||||
group: '{{ alertmanager_user }}'
|
||||
mode: '0644'
|
||||
when: not alertmanager_config_file.endswith('.j2')
|
||||
|
||||
- name: Template file (if .j2)
|
||||
become: true
|
||||
ansible.builtin.template:
|
||||
src: '{{ alertmanager_config_file }}'
|
||||
dest: '{{ alertmanager_config_dir }}/{{ alertmanager_config_file | basename | splitext | first }}'
|
||||
owner: '{{ alertmanager_user }}'
|
||||
group: '{{ alertmanager_user }}'
|
||||
mode: '0644'
|
||||
when: alertmanager_config_file.endswith('.j2')
|
||||
when: alertmanager_config_file is defined
|
||||
notify: Restart alertmanager
|
||||
|
||||
- name: Create alertmanager systemd service file
|
||||
become: true
|
||||
ansible.builtin.template:
|
||||
src: alertmanager.service.j2
|
||||
dest: /etc/systemd/system/alertmanager.service
|
||||
mode: '0644'
|
||||
notify: Restart alertmanager
|
||||
|
||||
- name: Ensure alertmanager service is in desired state
|
||||
become: true
|
||||
ansible.builtin.systemd_service:
|
||||
name: alertmanager
|
||||
state: '{{ alertmanager_service_state }}'
|
||||
enabled: '{{ alertmanager_service_enabled }}'
|
||||
when: alertmanager_service_state == 'stopped' or alertmanager_service_enabled == false
|
||||
@@ -0,0 +1,17 @@
|
||||
[Unit]
|
||||
Description=Alertmanager
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
User={{ alertmanager_user }}
|
||||
Group={{ alertmanager_user }}
|
||||
Type=simple
|
||||
ExecStart={{ alertmanager_install_dir }}/alertmanager \
|
||||
--config.file={{ alertmanager_config_dir }}/alertmanager.yml \
|
||||
--storage.path={{ alertmanager_data_dir }} \
|
||||
--web.listen-address={{ alertmanager_web_listen_address }}
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user