--- - name: Install required packages apt: name: - wget - tar state: present update_cache: yes tags: postgres_exporter - name: Create postgres_exporter user user: name: postgres_exporter system: yes shell: /bin/false home: /nonexistent comment: "Postgres Exporter Service User" tags: postgres_exporter - name: Download Postgres Exporter get_url: url: "https://github.com/prometheus-community/postgres_exporter/releases/download/v{{ postgres_exporter_version }}/postgres_exporter-{{ postgres_exporter_version }}.linux-amd64.tar.gz" dest: "/tmp/postgres_exporter-{{ postgres_exporter_version }}.tar.gz" timeout: 30 validate_certs: no tags: postgres_exporter - name: Extract Postgres Exporter unarchive: src: "/tmp/postgres_exporter-{{ postgres_exporter_version }}.tar.gz" dest: "/tmp/" remote_src: yes creates: "/tmp/postgres_exporter-{{ postgres_exporter_version }}.linux-amd64" tags: postgres_exporter - name: Install Postgres Exporter binary copy: src: "/tmp/postgres_exporter-{{ postgres_exporter_version }}.linux-amd64/postgres_exporter" dest: "/usr/local/bin/postgres_exporter" owner: postgres_exporter group: postgres_exporter mode: '0755' remote_src: yes tags: postgres_exporter - name: Create systemd service template: src: postgres_exporter.service.j2 dest: /etc/systemd/system/{{ postgres_exporter_service_name }}.service owner: root group: root mode: '0644' tags: postgres_exporter - name: Clean up temp files file: path: "/tmp/postgres_exporter-{{ postgres_exporter_version }}.tar.gz" state: absent tags: postgres_exporter - name: Clean up extracted directory file: path: "/tmp/postgres_exporter-{{ postgres_exporter_version }}.linux-amd64" state: absent tags: postgres_exporter - name: Reload systemd systemd: daemon_reload: yes tags: postgres_exporter - name: Enable and start Postgres Exporter systemd: name: "{{ postgres_exporter_service_name }}" enabled: yes state: started daemon_reload: yes tags: postgres_exporter - name: Configure UFW for Postgres Exporter ufw: rule: allow port: "{{ postgres_exporter_port }}" proto: tcp comment: "Postgres Exporter metrics" tags: postgres_exporter - name: Verify Postgres Exporter is running wait_for: port: "{{ postgres_exporter_port }}" host: "{{ ansible_host }}" delay: 3 timeout: 60 tags: postgres_exporter