158 lines
5.0 KiB
YAML
158 lines
5.0 KiB
YAML
---
|
|
- name: Install the Prometheus alertmanager
|
|
tags: ['prometheus', 'prometheus_alertmanager']
|
|
block:
|
|
- name: Create the user under the alertmanager will run
|
|
user:
|
|
name: "{{ prometheus_alert_m_user }}"
|
|
home: "{{ prometheus_alert_m_home }}"
|
|
createhome: false
|
|
shell: /usr/sbin/nologin
|
|
system: true
|
|
|
|
- name: Create the prometheus alertmanager base directory
|
|
file:
|
|
dest: "{{ item }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: 0755
|
|
loop:
|
|
- '{{ prometheus_alert_m_home }}'
|
|
- '{{ prometheus_alert_m_dist_dir }}'
|
|
|
|
- name: Create the prometheus alertmanager distribution and data directories
|
|
file:
|
|
dest: "{{ item }}"
|
|
state: directory
|
|
owner: "{{ prometheus_alert_m_user }}"
|
|
group: "{{ prometheus_alert_m_user }}"
|
|
mode: 0700
|
|
recurse: true
|
|
loop:
|
|
- "{{ prometheus_alert_m_home }}"
|
|
- "{{ prometheus_alert_m_data_dir }}"
|
|
|
|
- name: Create the prometheus alertmanager config directory
|
|
file:
|
|
dest: "{{ item }}"
|
|
state: directory
|
|
owner: root
|
|
group: "{{ prometheus_alert_m_user }}"
|
|
mode: 0750
|
|
recurse: true
|
|
loop:
|
|
- "{{ prometheus_alert_m_conf_dir }}"
|
|
- "{{ prometheus_alert_m_conf_dir }}/templates"
|
|
|
|
- name: Download the prometheus alertmanager
|
|
get_url:
|
|
url: "{{ prometheus_alert_m_download_url }}"
|
|
dest: /srv/
|
|
|
|
- name: Unarchive the prometheus distribution
|
|
unarchive:
|
|
src: "/srv/{{ prometheus_alert_m_file }}"
|
|
dest: "{{ prometheus_alert_m_dist_dir }}"
|
|
remote_src: true
|
|
owner: root
|
|
group: root
|
|
args:
|
|
creates: "{{ prometheus_alert_m_dist_dir }}/{{ prometheus_alert_m_dir }}/alertmanager"
|
|
register: alertmanager_download
|
|
notify: Restart alertmanager
|
|
|
|
- name: Copy the binaries under /usr/local/bin
|
|
copy:
|
|
src: "{{ prometheus_alert_m_dist_dir }}/{{ prometheus_alert_m_dir }}/{{ item }}"
|
|
dest: "/usr/local/bin/{{ item }}"
|
|
remote_src: true
|
|
owner: root
|
|
group: root
|
|
mode: 0755
|
|
loop:
|
|
- alertmanager
|
|
- amtool
|
|
|
|
- name: Install the Prometheus alertmanager systemd unit
|
|
tags:
|
|
- prometheus
|
|
- prometheus_alertmanager
|
|
- alertmanager_conf
|
|
- prometheus_alertmanager_conf
|
|
block:
|
|
- name: Install the prometheus alertmanager systemd unit
|
|
template:
|
|
src: alertmanager.service.j2
|
|
dest: /etc/systemd/system/alertmanager.service
|
|
mode: 0644
|
|
owner: root
|
|
group: root
|
|
register: systemd_reload_required
|
|
notify: Restart alertmanager
|
|
|
|
- name: Reload the systemd data
|
|
systemd: daemon_reload=yes
|
|
when: systemd_reload_required is changed
|
|
|
|
- name: Ensure that prometheus prometheus_alertmanager is started and enabled
|
|
service:
|
|
name: alertmanager
|
|
state: started
|
|
enabled: true
|
|
|
|
- name: Install the Prometheus alertmanager configuration
|
|
tags:
|
|
- prometheus
|
|
- prometheus_alertmanager
|
|
- alertmanager_conf
|
|
- prometheus_alertmanager_conf
|
|
when: prometheus_alert_m_install_conf
|
|
block:
|
|
- name: Install the prometheus alertmanager configuration file
|
|
template:
|
|
src: alertmanager.yml.j2
|
|
dest: "{{ prometheus_alert_m_conf_dir }}/alertmanager.yml"
|
|
mode: 0640
|
|
owner: root
|
|
group: "{{ prometheus_alert_m_user }}"
|
|
register: systemd_reload_required
|
|
notify: Reload alertmanager
|
|
|
|
- name: Remove the alertnamager installation
|
|
tags: [ 'prometheus', 'prometheus_alertmanager' ]
|
|
when: not prometheus_alert_m_install
|
|
block:
|
|
- name: Ensure that prometheus prometheus_alertmanager is stopped and disabled
|
|
service: name=prometheus_alertmanager state=stopped enabled=no
|
|
ignore_errors: True
|
|
|
|
- name: Remove prometheus alertmanager upstart script
|
|
file: dest=/etc/init/prometheus_alertmanager.conf state=absent
|
|
when: ansible_service_mgr != 'systemd'
|
|
|
|
- name: Remove the prometheus alertmanager systemd unit
|
|
file: dest=/etc/systemd/system/prometheus_alertmanager.service state=absent
|
|
when: ansible_service_mgr == 'systemd'
|
|
register: systemd_reload_required
|
|
|
|
- name: Reload the systemd data
|
|
systemd: daemon_reload=yes
|
|
when: systemd_reload_required is changed
|
|
|
|
- name: Manage the prometheus alertmanager firewalld rules
|
|
when:
|
|
- ansible_distribution_file_variety == "RedHat"
|
|
- firewalld_enabled is defined and firewalld_enabled | bool
|
|
tags: [ 'prometheus', 'prometheus_alertmanager', 'firewall', 'firewalld', 'iptables', 'iptables_rules' ]
|
|
block:
|
|
- name: Manage the prometheus alertmanager firewalld ports
|
|
firewalld: port={{ item.port }}/{{ item.protocol }} zone={{ item.zone }} permanent={{ item.permanent | default(True) }} state={{ item.state }} immediate=True
|
|
with_items: '{{ prometheus_alert_m_firewalld_ports }}'
|
|
|
|
# Local Variables:
|
|
# eval: (ansible-doc-mode 1)
|
|
# eval: (add-to-list (quote company-backends) (quote company-ansible))
|
|
# eval: (ansible 1)
|
|
# End:
|