--- - name: provision node exporters hosts: - server - vms - container vars: package_names: OpenBSD: node_exporter Debian: prometheus-node-exporter tasks: - name: install node exporter package: name: "{{ package_names[ansible_distribution] }}" - name: start and enable node_exporter service: name: "{{ package_names[ansible_distribution] }}" state: started enabled: yes - name: provision blackbox exporters hosts: - mon-e2e-clients01 - mon-e2e-wan01 - monitoring01 tasks: - name: install blackbox exporter package: name: prometheus-blackbox-exporter - name: add net raw capability to blackbox exporter capabilities: path: /usr/bin/prometheus-blackbox-exporter capability: cap_net_raw+ep notify: - restart blackbox-exporter - name: configure blackbox-exporter copy: src: files/blackbox.yml dest: /etc/prometheus/blackbox.yml owner: root group: root mode: 0644 validate: "prometheus-blackbox-exporter --config.file='%s' --config.check" notify: - restart blackbox-exporter handlers: - name: restart blackbox-exporter service: name: prometheus-blackbox-exporter state: restarted - name: provision monitoring hosts: - eae-adp-jump01 tasks: - name: install prometheus stack package: name: - prometheus - snmp_exporter - alertmanager - grafana - name: configure alertmanager template: src: templates/alertmanager.yml.j2 dest: /etc/alertmanager/alertmanager.yml validate: "/usr/local/bin/amtool check-config %s" notify: - reload alertmanager - name: configure prometheus alerting rules copy: src: files/alerting_rules.yml dest: /etc/prometheus/alerting_rules.yml validate: "/usr/local/bin/promtool check rules %s" notify: - reload prometheus - name: configure prometheus template: src: templates/prometheus.yml dest: /etc/prometheus/prometheus.yml validate: "/usr/local/bin/promtool check config %s" notify: - reload prometheus - name: enable anonymous login in grafana blockinfile: path: /etc/grafana/config.ini block: | [auth.anonymous] enabled = true org_role = Viewer notify: - restart grafana - name: template grafana datasource provisioning template: src: "{{ item }}" dest: /etc/grafana/provisioning/datasources/ owner: root group: _grafana mode: 0640 with_fileglob: - "templates/grafana/provisioning/datasources/*" notify: - restart grafana - name: create /etc/grafana/dashboards file: path: /etc/grafana/dashboards state: directory owner: root group: _grafana mode: 0755 - name: install dashboards copy: src: "{{ item }}" dest: /etc/grafana/dashboards/ owner: root group: _grafana mode: 0640 with_fileglob: - "templates/grafana/dashboards/*" - name: template grafana dashboard provisioning copy: src: "{{ item }}" dest: /etc/grafana/provisioning/dashboards/ owner: root group: _grafana mode: 0644 with_fileglob: - "templates/grafana/provisioning/dashboards/*" notify: - restart grafana - name: enable and start monitoring stack service: name: "{{ item }}" enabled: true state: started with_items: - prometheus - snmp_exporter - alertmanager - grafana handlers: - name: reload prometheus shell: cmd: "kill -SIGHUP $(pgrep prometheus)" - name: reload alertmanager shell: cmd: "kill -SIGHUP $(pgrep alertmanager)" - name: restart grafana service: name: grafana state: restarted