ansible-role-prometheus-ale.../tasks/main.yml

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: