--- # Install tasks - name: Resolve supported Ubuntu version for Zabbix repository ansible.builtin.set_fact: zabbix_ubuntu_repo_version: "{{ ansible_distribution_version if ansible_distribution_version is version('25.00', '<') else '24.04' }}" when: zabbix_state == 'present' - name: Download Zabbix repository package ansible.builtin.get_url: url: "https://repo.zabbix.com/zabbix/{{ zabbix_version }}/ubuntu/pool/main/z/zabbix-release/zabbix-release_{{ zabbix_release }}+ubuntu{{ zabbix_ubuntu_repo_version }}_all.deb" dest: /tmp/zabbix-release.deb mode: '0644' when: zabbix_state == 'present' - name: Install Zabbix repository package ansible.builtin.apt: deb: /tmp/zabbix-release.deb when: zabbix_state == 'present' - name: Install Zabbix agent2 ansible.builtin.apt: name: zabbix-agent2 state: present update_cache: true when: zabbix_state == 'present' - name: Configure Zabbix server address ansible.builtin.lineinfile: path: /etc/zabbix/zabbix_agent2.conf regexp: '^Server=' line: "Server={{ zabbix_server }}" when: zabbix_state == 'present' notify: Restart zabbix-agent2 - name: Configure Zabbix active server address ansible.builtin.lineinfile: path: /etc/zabbix/zabbix_agent2.conf regexp: '^ServerActive=' line: "ServerActive={{ zabbix_server }}" when: zabbix_state == 'present' notify: Restart zabbix-agent2 - name: Configure Zabbix agent hostname ansible.builtin.lineinfile: path: /etc/zabbix/zabbix_agent2.conf regexp: '^Hostname=' line: "Hostname={{ ansible_hostname }}" when: zabbix_state == 'present' notify: Restart zabbix-agent2 - name: Enable and start Zabbix agent2 ansible.builtin.systemd: name: zabbix-agent2 state: started enabled: true daemon_reload: true when: zabbix_state == 'present' # Uninstall tasks - name: Stop and disable all Zabbix agent services ansible.builtin.systemd: name: "{{ item }}" state: stopped enabled: false loop: - zabbix-agent - zabbix-agent2 when: zabbix_state == 'absent' ignore_errors: true - name: Remove all Zabbix agent packages ansible.builtin.apt: name: - zabbix-agent - zabbix-agent2 - zabbix-release state: absent purge: true when: zabbix_state == 'absent' - name: Reload systemd to drop removed unit files ansible.builtin.systemd: daemon_reload: true when: zabbix_state == 'absent' - name: Clear any lingering systemd state for Zabbix agent services ansible.builtin.command: systemctl reset-failed {{ item }} loop: - zabbix-agent - zabbix-agent2 when: zabbix_state == 'absent' ignore_errors: true changed_when: false - name: Remove Zabbix configuration directory ansible.builtin.file: path: /etc/zabbix state: absent when: zabbix_state == 'absent'