--- # 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' - 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' - name: Configure Zabbix agent hostname ansible.builtin.lineinfile: path: /etc/zabbix/zabbix_agent2.conf regexp: '^Hostname=' line: "Hostname={{ ansible_hostname }}" when: zabbix_state == 'present' - name: Configure Zabbix agent listen IP ansible.builtin.lineinfile: path: /etc/zabbix/zabbix_agent2.conf regexp: '^#?ListenIP=' line: "ListenIP=127.0.0.1" when: zabbix_state == 'present' - 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 Zabbix agent2 ansible.builtin.systemd: name: zabbix-agent2 state: stopped enabled: false when: zabbix_state == 'absent' ignore_errors: true - name: Remove Zabbix agent2 package ansible.builtin.apt: name: zabbix-agent2 state: absent purge: true when: zabbix_state == 'absent' - name: Remove Zabbix repository package ansible.builtin.apt: name: zabbix-release state: absent purge: true when: zabbix_state == 'absent' - name: Reload systemd to drop the removed unit file ansible.builtin.systemd: daemon_reload: true when: zabbix_state == 'absent' - name: Clear any lingering systemd state for zabbix-agent2 ansible.builtin.command: systemctl reset-failed 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'