This commit is contained in:
2026-02-15 18:24:38 +01:00
parent b956bca5ab
commit 0838a99d3e
2 changed files with 189 additions and 41 deletions

View File

@@ -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

View File

@@ -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