115 lines
3.9 KiB
YAML
115 lines
3.9 KiB
YAML
---
|
|
- name: Install and Configure Zabbix Proxy and Agent
|
|
hosts: zabbix-proxy # Assuming you have a group for zabbix proxy in your inventory
|
|
become: yes
|
|
vars_files:
|
|
- ../secrets.yml
|
|
tasks:
|
|
- name: Download Zabbix release package
|
|
ansible.builtin.get_url:
|
|
url: "https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu24.04_all.deb"
|
|
dest: /tmp/zabbix-release.deb
|
|
|
|
- name: Install Zabbix release package
|
|
ansible.builtin.apt:
|
|
deb: /tmp/zabbix-release.deb
|
|
|
|
- name: Install Zabbix proxy and agent
|
|
ansible.builtin.apt:
|
|
name:
|
|
- zabbix-proxy-sqlite3
|
|
- zabbix-agent2
|
|
state: present
|
|
update_cache: yes
|
|
|
|
- name: Create Zabbix proxy custom configuration file
|
|
ansible.builtin.copy:
|
|
dest: /etc/zabbix/zabbix_proxy.d/custom.conf
|
|
content: |
|
|
## Managed by Ansible - do not edit manually ##
|
|
## Changes will be overwritten ##
|
|
DBName=/tmp/zabbix_proxy
|
|
StartPollers=2
|
|
StartPreprocessors=1
|
|
StartTrappers=1
|
|
StartDiscoverers=1
|
|
StartDBSyncers=1
|
|
StartAgentPollers=2
|
|
EnableRemoteCommands=1
|
|
TLSConnect=psk
|
|
TLSAccept=psk
|
|
notify: restart zabbix-proxy
|
|
|
|
- name: Create Zabbix proxy connection configuration file
|
|
ansible.builtin.copy:
|
|
dest: /etc/zabbix/zabbix_proxy.d/connection.conf
|
|
content: |
|
|
## Managed by Ansible - do not edit manually ##
|
|
## Changes will be overwritten ##
|
|
Server={{ zabbix_server_address }}:10051
|
|
Hostname={{ ansible_facts.hostname }}
|
|
TLSPSKFile=/etc/zabbix/{{ ansible_facts.hostname }}.psk
|
|
TLSPSKIdentity={{ zabbix_psk_identity }}
|
|
notify: restart zabbix-proxy
|
|
|
|
- name: Create Zabbix proxy PSK file
|
|
ansible.builtin.copy:
|
|
dest: "/etc/zabbix/{{ ansible_facts.hostname }}.psk"
|
|
content: "{{ zabbix_proxy_psk }}"
|
|
owner: zabbix
|
|
group: zabbix
|
|
mode: '0600'
|
|
notify: restart zabbix-proxy
|
|
|
|
- name: Create Zabbix agent custom configuration file
|
|
ansible.builtin.copy:
|
|
dest: /etc/zabbix/zabbix_agent2.d/custom.conf
|
|
content: |
|
|
## Managed by Ansible - do not edit manually ##
|
|
## Changes will be overwritten ##
|
|
Hostname={{ ansible_facts.hostname }}
|
|
Server={{ hostvars['zabbix-proxy']['ansible_host'] }},{{ hostvars['raspberry-pi']['ansible_host'] }}
|
|
ServerActive={{ hostvars['zabbix-proxy']['ansible_host'] }};{{ hostvars['raspberry-pi']['ansible_host'] }}
|
|
notify: restart zabbix-agent2
|
|
|
|
- name: Create Zabbix agent user parameters file
|
|
ansible.builtin.copy:
|
|
dest: /etc/zabbix/zabbix_agent2.d/userparams.conf
|
|
content: |
|
|
## Managed by Ansible - do not edit manually ##
|
|
## Changes will be overwritten ##
|
|
AllowKey=system.run[*]
|
|
notify: restart zabbix-agent2
|
|
|
|
handlers:
|
|
- name: restart zabbix-proxy
|
|
ansible.builtin.service:
|
|
name: zabbix-proxy
|
|
state: restarted
|
|
enabled: yes
|
|
- name: restart zabbix-agent2
|
|
ansible.builtin.service:
|
|
name: zabbix-agent2
|
|
state: restarted
|
|
enabled: yes
|
|
|
|
- name: Verify Zabbix Services
|
|
hosts: zabbix-proxy
|
|
become: yes
|
|
tasks:
|
|
- name: Check if Zabbix services are running
|
|
ansible.builtin.service_facts:
|
|
|
|
- name: Assert that Zabbix proxy is running
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "ansible_facts.services['zabbix-proxy.service'].state == 'running'"
|
|
fail_msg: "Zabbix proxy is not running"
|
|
success_msg: "Zabbix proxy is running"
|
|
|
|
- name: Assert that Zabbix agent is running
|
|
ansible.builtin.assert:
|
|
that:
|
|
- "ansible_facts.services['zabbix-agent2.service'].state == 'running'"
|
|
fail_msg: "Zabbix agent 2 is not running"
|
|
success_msg: "Zabbix agent 2 is running" |