From 0838a99d3e0c7c40d667bfa1209923879903fa44 Mon Sep 17 00:00:00 2001 From: jaydee Date: Sun, 15 Feb 2026 18:24:38 +0100 Subject: [PATCH] build --- jaydee.yml | 46 ++++---- roles/zabbix_proxy/tasks/main.yml | 184 ++++++++++++++++++++++++++---- 2 files changed, 189 insertions(+), 41 deletions(-) diff --git a/jaydee.yml b/jaydee.yml index a90f7d8..7519880 100755 --- a/jaydee.yml +++ b/jaydee.yml @@ -1,22 +1,26 @@ $ANSIBLE_VAULT;1.1;AES256 -32656139633038623333316637646532643338373330336561346239653564666362323339646165 -3533356464653662633136393937623230633863303538320a386333363938343131653664636237 -63616433373136346331373739393631303863343966396635356263666534613662306362646362 -3366393530313236340a393734623735346564326263626231373866323561633030636333626639 -36623734623536316564646261653565333537373361326533393535663634373736626431313132 -33636562636662666239366130643961633230626436313364336233636261653462616462343661 -35353332643862343533316233333432376462363130393138613364653732363934346431623865 -32396361363962396135623738333163646434333361373766303366613163396363366134646662 -36356334326337613536323434643736633236653332353931326135303136353836643532373532 -62373566376164396133386264613666323732396636646565373939323762626536343934663464 -62336434353762343664613462363465363239333337616231616266343834323237323061373237 -30653639626236646435663734346663643432316464313936656233623163656366346537643834 -36353964363462303630646635633233353838643431396537613430656234383737666661383666 -37383938323532376662363233376134626538333463393964343432356565633237313563373865 -36353333396533336434383535663238663437626464616637666234616565323462316663383137 -32656233343764366338616436633837346264353435333331616335613265653638393738393633 -36386363623137363433626465356264623463626636386633613436333938666563326264343136 -35636336316662393232653037356138666636373166626565393531616666643133663763633831 -37316236313761353564653330613934323336326264386435666366636366613861363539326131 -31363732386162613536623862333762333365343333316563633238376336643161343731393334 -3339 +38393362333061613238333964643062316633323761346333646464373437353630656635323561 +6433353166343337346433643839363866383831653666370a366231343233626366643466353762 +39346263313962343730333364643461376436663061323633623537346238316363343735343136 +6631653665653363660a663136613961396163636163636465333163363537663634386261393537 +30333233316236343161663136313635353162633930646431613335313264303565616435636662 +61343363386430303438333934393362643661356636316432396266623762393833333539633166 +64623230353861356530653263306637323964336231353665346264333463663030366338616330 +62373461363333643838613034636537353233393137656135386131656130363462653633366336 +66323236346234616639383066643638303937623938333136623131396334623263653763656131 +34306366343738663930666536663664613732343566323430353638393662666130393366663861 +35346532656531326366343963396334393432343931656332663933616131643161363933383738 +63616164316637626639653835356433613764663361393933346239343866323164643765336636 +64373764373964613864386133623835303163663933396534303132323630326236336132393063 +63666264613331306165326232386166633039333030346338383632363739393566383863663761 +64656332643838633037373030336265663738343563303262386437353066313466393764616231 +35653063623263666439393635613037323439616630363837353930626632313437303762633433 +37646664376532343632613162333039326463646231383939373965623434306665383662633861 +31383335393236313362323762633833366461643264633730636133646335393532376133386432 +66666534393431333235326139333936616365356434636638346433663566666633306237313264 +32313031663166353465653863643762313163386137306238383436343631303630643266353035 +35306636643735396630613538326461656132623931666234666232396238313062343265396666 +62343766616338383962386165393930396536666663643963383237663236666664303837613135 +35666234363462616562366333396366353838353763613639653936303039613863323565306263 +35373266303035613638653338346434616634353534393838646131366432633266353636383433 +6638 diff --git a/roles/zabbix_proxy/tasks/main.yml b/roles/zabbix_proxy/tasks/main.yml index 10fdb16..a117ff9 100644 --- a/roles/zabbix_proxy/tasks/main.yml +++ b/roles/zabbix_proxy/tasks/main.yml @@ -1,25 +1,39 @@ ---- - 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: "{{ false if inventory_hostname == 'nas.home.lan' else true }}" + 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: - - name: Install required packages + # ========================================================== + # Install repository + # ========================================================== + - name: Include vault + ansible.builtin.include_vars: + file: jaydee.yml + - name: Install base packages apt: name: - wget - gnupg - apt-transport-https - - sqlite3 - state: present 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 }}/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb" + 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 @@ -30,37 +44,129 @@ apt: update_cache: yes - - name: Install Zabbix proxy (SQLite) + # ========================================================== + # Install proxy based on DB type + # ========================================================== + + - name: Install SQLite proxy apt: name: - zabbix-proxy-sqlite3 - - zabbix-agent2 + - 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 - - name: Ensure Zabbix user owns database directory + # ========================================================== + # 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: "DBName", value: "{{ zabbix_db_file }}" } - - { key: "ProxyMode", value: "0" } + 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} + ] + ) + ) + }} - - 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 + + # ========================================================== + # Start service + # ========================================================== - name: Restart Zabbix proxy systemd: @@ -73,3 +179,41 @@ 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 }}" + 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