--- - name: Create SNMP exporter directory ansible.builtin.file: path: /etc/snmp_exporter state: directory owner: monitoring group: monitoring mode: "0755" - name: Check if SNMP exporter is installed ansible.builtin.stat: path: /usr/local/bin/snmp_exporter register: snmp_exporter_binary - name: Download SNMP exporter ansible.builtin.get_url: url: "https://github.com/prometheus/snmp_exporter/releases/download/v{{ snmp_exporter_version }}/snmp_exporter-{{ snmp_exporter_version }}.linux-{{ go_arch }}.tar.gz" dest: "/tmp/snmp_exporter-{{ snmp_exporter_version }}.tar.gz" mode: "0644" when: not snmp_exporter_binary.stat.exists - name: Extract SNMP exporter ansible.builtin.unarchive: src: "/tmp/snmp_exporter-{{ snmp_exporter_version }}.tar.gz" dest: /tmp remote_src: true when: not snmp_exporter_binary.stat.exists - name: Install SNMP exporter binary ansible.builtin.copy: src: "/tmp/snmp_exporter-{{ snmp_exporter_version }}.linux-{{ go_arch }}/snmp_exporter" dest: /usr/local/bin/snmp_exporter mode: "0755" remote_src: true notify: Restart snmp_exporter when: not snmp_exporter_binary.stat.exists - name: Install default SNMP exporter config ansible.builtin.copy: src: "/tmp/snmp_exporter-{{ snmp_exporter_version }}.linux-{{ go_arch }}/snmp.yml" dest: /etc/snmp_exporter/snmp.yml owner: monitoring group: monitoring mode: "0644" remote_src: true notify: Restart snmp_exporter when: not snmp_exporter_binary.stat.exists - name: Deploy SNMP exporter systemd service ansible.builtin.template: src: snmp_exporter.service.j2 dest: /etc/systemd/system/snmp_exporter.service mode: "0644" notify: - Reload systemd - Restart snmp_exporter - name: Enable and start SNMP exporter ansible.builtin.systemd: name: snmp_exporter enabled: true state: started daemon_reload: true - name: Clean up downloaded files ansible.builtin.file: path: "{{ item }}" state: absent loop: - "/tmp/snmp_exporter-{{ snmp_exporter_version }}.tar.gz" - "/tmp/snmp_exporter-{{ snmp_exporter_version }}.linux-{{ go_arch }}"