mirror of
https://gitlab.sectorq.eu/jaydee/ansible.git
synced 2026-03-12 21:32:48 +01:00
build
This commit is contained in:
46
jaydee.yml
46
jaydee.yml
@@ -1,22 +1,26 @@
|
|||||||
$ANSIBLE_VAULT;1.1;AES256
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
32656139633038623333316637646532643338373330336561346239653564666362323339646165
|
38393362333061613238333964643062316633323761346333646464373437353630656635323561
|
||||||
3533356464653662633136393937623230633863303538320a386333363938343131653664636237
|
6433353166343337346433643839363866383831653666370a366231343233626366643466353762
|
||||||
63616433373136346331373739393631303863343966396635356263666534613662306362646362
|
39346263313962343730333364643461376436663061323633623537346238316363343735343136
|
||||||
3366393530313236340a393734623735346564326263626231373866323561633030636333626639
|
6631653665653363660a663136613961396163636163636465333163363537663634386261393537
|
||||||
36623734623536316564646261653565333537373361326533393535663634373736626431313132
|
30333233316236343161663136313635353162633930646431613335313264303565616435636662
|
||||||
33636562636662666239366130643961633230626436313364336233636261653462616462343661
|
61343363386430303438333934393362643661356636316432396266623762393833333539633166
|
||||||
35353332643862343533316233333432376462363130393138613364653732363934346431623865
|
64623230353861356530653263306637323964336231353665346264333463663030366338616330
|
||||||
32396361363962396135623738333163646434333361373766303366613163396363366134646662
|
62373461363333643838613034636537353233393137656135386131656130363462653633366336
|
||||||
36356334326337613536323434643736633236653332353931326135303136353836643532373532
|
66323236346234616639383066643638303937623938333136623131396334623263653763656131
|
||||||
62373566376164396133386264613666323732396636646565373939323762626536343934663464
|
34306366343738663930666536663664613732343566323430353638393662666130393366663861
|
||||||
62336434353762343664613462363465363239333337616231616266343834323237323061373237
|
35346532656531326366343963396334393432343931656332663933616131643161363933383738
|
||||||
30653639626236646435663734346663643432316464313936656233623163656366346537643834
|
63616164316637626639653835356433613764663361393933346239343866323164643765336636
|
||||||
36353964363462303630646635633233353838643431396537613430656234383737666661383666
|
64373764373964613864386133623835303163663933396534303132323630326236336132393063
|
||||||
37383938323532376662363233376134626538333463393964343432356565633237313563373865
|
63666264613331306165326232386166633039333030346338383632363739393566383863663761
|
||||||
36353333396533336434383535663238663437626464616637666234616565323462316663383137
|
64656332643838633037373030336265663738343563303262386437353066313466393764616231
|
||||||
32656233343764366338616436633837346264353435333331616335613265653638393738393633
|
35653063623263666439393635613037323439616630363837353930626632313437303762633433
|
||||||
36386363623137363433626465356264623463626636386633613436333938666563326264343136
|
37646664376532343632613162333039326463646231383939373965623434306665383662633861
|
||||||
35636336316662393232653037356138666636373166626565393531616666643133663763633831
|
31383335393236313362323762633833366461643264633730636133646335393532376133386432
|
||||||
37316236313761353564653330613934323336326264386435666366636366613861363539326131
|
66666534393431333235326139333936616365356434636638346433663566666633306237313264
|
||||||
31363732386162613536623862333762333365343333316563633238376336643161343731393334
|
32313031663166353465653863643762313163386137306238383436343631303630643266353035
|
||||||
3339
|
35306636643735396630613538326461656132623931666234666232396238313062343265396666
|
||||||
|
62343766616338383962386165393930396536666663643963383237663236666664303837613135
|
||||||
|
35666234363462616562366333396366353838353763613639653936303039613863323565306263
|
||||||
|
35373266303035613638653338346434616634353534393838646131366432633266353636383433
|
||||||
|
6638
|
||||||
|
|||||||
@@ -1,25 +1,39 @@
|
|||||||
---
|
|
||||||
- name: Install Zabbix Proxy on Debian 13
|
- name: Install Zabbix Proxy on Debian 13
|
||||||
vars:
|
vars:
|
||||||
zabbix_version: "7.4"
|
zabbix_version: "7.4"
|
||||||
zabbix_server_ip: "192.168.77.101"
|
zabbix_server_ip: "192.168.77.101"
|
||||||
zabbix_proxy_name: "{{ inventory_hostname }}"
|
zabbix_proxy_name: "{{ inventory_hostname }}"
|
||||||
zabbix_db_file: "/var/lib/zabbix/zabbix_proxy.db"
|
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:
|
block:
|
||||||
- name: Install required packages
|
# ==========================================================
|
||||||
|
# Install repository
|
||||||
|
# ==========================================================
|
||||||
|
- name: Include vault
|
||||||
|
ansible.builtin.include_vars:
|
||||||
|
file: jaydee.yml
|
||||||
|
- name: Install base packages
|
||||||
apt:
|
apt:
|
||||||
name:
|
name:
|
||||||
- wget
|
- wget
|
||||||
- gnupg
|
- gnupg
|
||||||
- apt-transport-https
|
- apt-transport-https
|
||||||
- sqlite3
|
|
||||||
state: present
|
|
||||||
update_cache: yes
|
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
|
- name: Download Zabbix repo package
|
||||||
get_url:
|
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
|
dest: /tmp/zabbix-release.deb
|
||||||
|
|
||||||
- name: Install Zabbix repository
|
- name: Install Zabbix repository
|
||||||
@@ -30,37 +44,129 @@
|
|||||||
apt:
|
apt:
|
||||||
update_cache: yes
|
update_cache: yes
|
||||||
|
|
||||||
- name: Install Zabbix proxy (SQLite)
|
# ==========================================================
|
||||||
|
# Install proxy based on DB type
|
||||||
|
# ==========================================================
|
||||||
|
|
||||||
|
- name: Install SQLite proxy
|
||||||
apt:
|
apt:
|
||||||
name:
|
name:
|
||||||
- zabbix-proxy-sqlite3
|
- 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
|
state: present
|
||||||
|
|
||||||
- name: Ensure Zabbix user owns database directory
|
# ==========================================================
|
||||||
|
# SQLite setup
|
||||||
|
# ==========================================================
|
||||||
|
|
||||||
|
- name: Ensure Zabbix directory ownership (SQLite)
|
||||||
file:
|
file:
|
||||||
path: /var/lib/zabbix
|
path: /var/lib/zabbix
|
||||||
owner: zabbix
|
owner: zabbix
|
||||||
group: zabbix
|
group: zabbix
|
||||||
recurse: yes
|
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
|
- name: Configure Zabbix proxy
|
||||||
lineinfile:
|
lineinfile:
|
||||||
path: /etc/zabbix/zabbix_proxy.conf
|
path: /etc/zabbix/zabbix_proxy.conf
|
||||||
regexp: "^{{ item.key }}="
|
regexp: "^{{ item.key }}="
|
||||||
line: "{{ item.key }}={{ item.value }}"
|
line: "{{ item.key }}={{ item.value }}"
|
||||||
loop:
|
loop: >-
|
||||||
- { key: "Server", value: "{{ zabbix_server_ip }}" }
|
{{
|
||||||
- { key: "Hostname", value: "{{ zabbix_proxy_name }}" }
|
[
|
||||||
- { key: "DBName", value: "{{ zabbix_db_file }}" }
|
{'key': 'Server', 'value': zabbix_server_ip},
|
||||||
- { key: "ProxyMode", value: "0" }
|
{'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 }}
|
# Start service
|
||||||
args:
|
# ==========================================================
|
||||||
creates: "{{ zabbix_db_file }}"
|
|
||||||
become_user: zabbix
|
|
||||||
|
|
||||||
- name: Restart Zabbix proxy
|
- name: Restart Zabbix proxy
|
||||||
systemd:
|
systemd:
|
||||||
@@ -73,3 +179,41 @@
|
|||||||
name: zabbix-agent2
|
name: zabbix-agent2
|
||||||
state: restarted
|
state: restarted
|
||||||
enabled: yes
|
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
|
||||||
Reference in New Issue
Block a user