From 9e5357f988be176b7135ebf08df17c19f933d685 Mon Sep 17 00:00:00 2001 From: jaydee Date: Mon, 16 Feb 2026 00:21:07 +0100 Subject: [PATCH] build --- roles/zabbix_proxy/tasks/main copy.yml | 78 --------- roles/zabbix_proxy/tasks/main.yml | 228 +------------------------ 2 files changed, 9 insertions(+), 297 deletions(-) delete mode 100644 roles/zabbix_proxy/tasks/main copy.yml diff --git a/roles/zabbix_proxy/tasks/main copy.yml b/roles/zabbix_proxy/tasks/main copy.yml deleted file mode 100644 index df98a18..0000000 --- a/roles/zabbix_proxy/tasks/main copy.yml +++ /dev/null @@ -1,78 +0,0 @@ -- 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" - become: "{{ 'no' if inventory_hostname == 'nas.home.lan' else 'yes' }}" - block: - - name: Include vault - ansible.builtin.include_vars: - file: jaydee.yml - - - name: Install required packages - apt: - name: - - wget - - gnupg - - apt-transport-https - - sqlite3 - state: present - update_cache: yes - - - 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 - - - name: Install Zabbix proxy (SQLite) - apt: - name: - - zabbix-proxy-sqlite3 - - zabbix-agent2 - state: present - - - name: Ensure Zabbix user owns database directory - file: - path: /var/lib/zabbix - owner: zabbix - group: zabbix - recurse: yes - - - 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: "DBName", value: "{{ zabbix_db_file }}" } - - { key: "ProxyMode", value: "0" } - - - name: Initialize SQLite database - command: > - zcat /usr/share/zabbix/sqlite3/proxy.sql.gz | sqlite3 {{ zabbix_db_file }} - args: - creates: "{{ zabbix_db_file }}" - become_user: zabbix - - - name: Restart Zabbix proxy - systemd: - name: zabbix-proxy - state: restarted - enabled: yes - - - name: Restart Zabbix agent - systemd: - name: zabbix-agent2 - state: restarted - enabled: yes diff --git a/roles/zabbix_proxy/tasks/main.yml b/roles/zabbix_proxy/tasks/main.yml index f8bedd2..53a630e 100644 --- a/roles/zabbix_proxy/tasks/main.yml +++ b/roles/zabbix_proxy/tasks/main.yml @@ -1,220 +1,10 @@ -- 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: Include vault - ansible.builtin.include_vars: - file: jaydee.yml - - 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: Include vault + ansible.builtin.include_vars: + file: jaydee.yml + +- name: Facts + ansible.builtin.setup: + when: ansible_facts.architecture is not defined - - - 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': 'Hostname', 'value': zabbix_proxy_name}, - {'key': 'HostMetadata', 'value': 'linux,jaydee'}, - ] - }} - - # ========================================================== - # 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 - - - name: Check if proxy exists - uri: - url: "{{ zabbix_api_url }}" - method: POST - body_format: json - body: - jsonrpc: "2.0" - method: "proxy.get" - params: - filter: - name: "{{ zabbix_proxy_name }}" - id: 2 - headers: - Content-Type: "application/json" - Authorization: "Bearer {{ zabbix_auth_token }}" - register: proxy_check - - name: Print proxy_check - debug: - msg: "{{ proxy_check }}" - - name: Create proxy if not exists - uri: - url: "{{ zabbix_api_url }}" - method: POST - body_format: json - body: - jsonrpc: "2.0" - method: "proxy.create" - params: - name: "{{ zabbix_proxy_name }}" - proxy_groupid: 1 - operating_mode: 0 - # address: "{{ ansible_default_ipv4.address }}" - port: "10051" - id: 3 - headers: - Content-Type: "application/json" - Authorization: "Bearer {{ zabbix_auth_token }}" - when: proxy_check.json.result | length == 0 \ No newline at end of file +- name: Include OS-specific tasks + ansible.builtin.include_tasks: "{{ ansible_facts.os_family }}.yml" \ No newline at end of file