- name: Install Zabbix Proxy on Debian 13 vars: zabbix_version: "7.4" zabbix_server_ip: "192.168.77.101" zabbix_proxy_name: "{{ inventory_hostname }}" zabbix_db_file: "/var/lib/zabbix/zabbix_proxy.db" zabbix_db_type: "sqlite" # sqlite | mysql | postgres zabbix_api_url: "https://zabbix.sectorq.eu/api_jsonrpc.php" become: "{{ 'no' if inventory_hostname == 'nas.home.lan' else 'yes' }}" block: # ========================================================== # Install repository # ========================================================== - name: Gather facts ansible.builtin.setup: - name: Set proxy name set_fact: clustename: "debian13" - name: Show default IP ansible.builtin.debug: msg: "{{ ansible_default_ipv4.address }}" - name: Install base packages apt: name: - wget - gnupg - apt-transport-https update_cache: yes state: present - name: Create apt proxy file ansible.builtin.copy: dest: /etc/apt/apt.conf.d/02proxy content: | Acquire::http::Proxy "http://192.168.77.101:3142"; Acquire::https::Proxy "false"; - name: Download Zabbix repo package get_url: url: "https://repo.zabbix.com/zabbix/{{ zabbix_version }}/release/debian/pool/main/z/zabbix-release/zabbix-release_{{ zabbix_version }}-1%2Bdebian13_all.deb" dest: /tmp/zabbix-release.deb - name: Install Zabbix repository apt: deb: /tmp/zabbix-release.deb - name: Update apt cache apt: update_cache: yes # ========================================================== # Install proxy based on DB type # ========================================================== - name: Install SQLite proxy apt: name: - zabbix-proxy-sqlite3 - sqlite3 state: present when: zabbix_db_type == "sqlite" - name: Install MySQL proxy apt: name: - zabbix-proxy-mysql - default-mysql-client state: present when: zabbix_db_type == "mysql" - name: Install PostgreSQL proxy apt: name: - zabbix-proxy-pgsql - postgresql-client state: present when: zabbix_db_type == "postgres" - name: Install Zabbix agent apt: name: zabbix-agent2 state: present # ========================================================== # SQLite setup # ========================================================== - name: Ensure Zabbix directory ownership (SQLite) file: path: /var/lib/zabbix owner: zabbix group: zabbix recurse: yes when: zabbix_db_type == "sqlite" # ========================================================== # MySQL setup # ========================================================== - name: Import MySQL schema shell: | zcat /usr/share/zabbix/mysql/proxy.sql.gz | \ mysql -h {{ zabbix_db_host }} \ -u {{ zabbix_db_user }} \ -p{{ zabbix_db_password }} \ {{ zabbix_db_name }} when: zabbix_db_type == "mysql" # ========================================================== # PostgreSQL setup # ========================================================== - name: Import PostgreSQL schema shell: | zcat /usr/share/zabbix/postgresql/proxy.sql.gz | \ PGPASSWORD={{ zabbix_db_password }} psql \ -h {{ zabbix_db_host }} \ -U {{ zabbix_db_user }} \ {{ zabbix_db_name }} become_user: postgres when: zabbix_db_type == "postgres" - name: Configure Zabbix agent lineinfile: path: /etc/zabbix/zabbix_agent2.conf regexp: "^{{ item.key }}=" line: "{{ item.key }}={{ item.value }}" loop: - { key: "Server", value: "127.0.0.1" } - { key: "ServerActive", value: "{{ clustename }}-vm01.home.lan;{{ clustename }}-vm02.home.lan;{{ clustename }}-vm03.home.lan;{{ clustename }}-vm04.home.lan;{{ clustename }}-vm05.home.lan" } - { key: "Hostname", value: "{{ zabbix_proxy_name }}" } - { key: "HostMetadata", value: "linux,jaydee" } - { key: "SourceIP", value: "{{ ansible_default_ipv4.address }}" } # ========================================================== # Configure proxy # ========================================================== - name: Configure Zabbix proxy lineinfile: path: /etc/zabbix/zabbix_proxy.conf regexp: "^{{ item.key }}=" line: "{{ item.key }}={{ item.value }}" loop: >- {{ [ {'key': 'Server', 'value': zabbix_server_ip}, {'key': 'Hostname', 'value': zabbix_proxy_name}, {'key': 'ProxyMode', 'value': '0'} ] + ( (zabbix_db_type == "sqlite") | ternary( [ {'key': 'DBName', 'value': zabbix_db_file} ], [ {'key': 'DBName', 'value': zabbix_db_name}, {'key': 'DBUser', 'value': zabbix_db_user}, {'key': 'DBPassword', 'value': zabbix_db_password}, {'key': 'DBHost', 'value': zabbix_db_host} ] ) ) }} # ========================================================== # Start service # ========================================================== - name: Restart Zabbix proxy systemd: name: zabbix-proxy state: restarted enabled: yes - name: Restart Zabbix agent systemd: name: zabbix-agent2 state: restarted enabled: yes