--- - 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: