Ссылки:
https://www.zabbix.com/download?zabbix=7.0&os_distribution=debian&os_version=12&components=server_frontend_agent&db=mysql&ws=apache
install
0. Качаем и ставим пакет: wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb dpkg -i zabbix-release_latest_7.0+debian12_all.deb apt update 1. Ставим пакеты: apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent 2. Создаем базу: mysql -uroot -p --------------- create database zabbix character set utf8mb4 collate utf8mb4_bin; create user zabbix@localhost identified by 'password'; grant all privileges on zabbix.* to zabbix@localhost; set global log_bin_trust_function_creators = 1; quit; ---------------- 3. Заливаем базу zabbix: zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix 4. Отключите опцию log_bin_trust_function_creators после импорта схемы базы данных. mysql -uroot -p --------------- set global log_bin_trust_function_creators = 0; quit; --------------- 5. Редактируем конфиг и пароль для базы: vim /etc/zabbix/zabbix_server.conf ---------------------------------- DBPassword=password ---------------------------------- 6. Запускаем zabbix systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
Пример ansible book
mkdir prod
cd prod
cat > install_zabbix_7.yaml << "EOF"
---
- name: Install Zabbix vesrion 7 on server Debian 12
hosts: all
become: yes
vars:
mysql_root_password: "password"
ansible_fqdn: zabbix
destin_file_cnf: /root/.my.cnf
source_file_cnf: ./my.cnf
zabbix_user: "zabbix"
zabbix_password: "zabbix"
zabbix_db: "zabbix"
zabbix_host: "localhost"
zabbix_priv: "{{ zabbix_db }}.*:ALL"
destin_conf: /usr/share/zabbix/conf/zabbix.conf.php
source_conf: ./zabbix.conf.php
tasks:
- name: Update apt repo and cache on all Debian/Ubuntu boxes
apt: update_cache=yes force_apt_get=yes cache_valid_time=3600
- name: Upgrade all packages on servers
apt: upgrade=dist force_apt_get=yes
- name: Install a .deb package from the internet
apt:
deb: https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
- name: Run the equivalent of "apt-get update" as a separate step
apt:
update_cache: yes
cache_valid_time: 3600
- name: Install a list of packages
apt:
pkg:
- zabbix-server-mysql
- zabbix-frontend-php
- zabbix-apache-conf
- zabbix-agent
- mariadb-server
- python3-apt
- python3
- python3-pip
- python3-setuptools
- python3-pymysql
- zabbix-agent
- zabbix-sql-scripts
state: latest
update_cache: True
- name: Copy file cnf to Servers
copy: src={{ source_file_cnf }} dest={{ destin_file_cnf }} mode=0600 owner=root group=root backup=yes
- name: Edit line password
lineinfile:
path: /root/.my.cnf
state: present
regexp: '^password='
line: 'password="{{ mysql_root_password }}"'
- name: Remove the test database
mysql_db:
login_unix_socket: /var/run/mysqld/mysqld.sock
name: test
state: absent
- name: Remove anonymous user
mysql_user:
login_unix_socket: /var/run/mysqld/mysqld.sock
name: ''
state: absent
- name: Sets the root password
mysql_user:
login_unix_socket: /var/run/mysqld/mysqld.sock
user: root
password: "{{ mysql_root_password }}"
host: localhost
- name: "Create new databases with names {{ zabbix_user }}"
mysql_db:
login_unix_socket: /var/run/mysqld/mysqld.sock
name: "{{ zabbix_user }}"
encoding: utf8
collation: utf8_bin
state: present
- name: "Add user and add privilege for {{ zabbix_db }}"
mysql_user:
login_unix_socket: /var/run/mysqld/mysqld.sock
login_host: "localhost"
name: "{{ zabbix_db }}"
password: "{{ zabbix_password }}"
host: "localhost"
priv: "{{ zabbix_priv }}"
state: present
append_privs: yes
- name: Importing databases
mysql_db:
name: "{{ zabbix_db }}"
login_user: "{{zabbix_user}}"
login_host: localhost
login_password: "{{ zabbix_password }}"
config_file: no
state: import
encoding: utf8
collation: utf8_bin
target: "/usr/share/zabbix-sql-scripts/mysql/server.sql.gz"
- name: Edit line db_password for zabbix-server
lineinfile:
path: /etc/zabbix/zabbix_server.conf
state: present
regexp: '^DBPassword='
line: 'DBPassword={{ zabbix_password }}'
- name: Edit line time zone
lineinfile:
path: /etc/zabbix/apache.conf
state: present
regexp: '^php_value date.timezone Europe/Riga'
line: 'php_value date.timezone Europe/Moscow'
- name: Copy file conf php to server zabbix
copy: src={{ source_conf }} dest={{ destin_conf }} mode=0644 owner=root group=root backup=yes
- name: Service zabbix restart and add autostart
shell: systemctl restart zabbix-server zabbix-agent apache2 && systemctl enable zabbix-server zabbix-agent apache2
...
EOF
cat > my.cnf << "EOF"
[client]
user="root"
password=mysql_root_password
EOF
cat > hosts.txt << "EOF"
localhost ansible_connection=local
EOF
cat > ansible.cfg << "EOF"
[defaults]
#interpreter_python = /usr/bin/python3
host_key_cheking = false
allow_world_readable_tmpfiles= true #bug mysql import
inventory = ./hosts.txt
forks = 10
timeout = 10
log_path = ./ansible.log
pipelining = True
EOF
cat > zabbix.conf.php << "EOF"
'http://localhost:9200',
// 'text' => 'http://localhost:9200'
//];
// Value types stored in Elasticsearch.
//$HISTORY['types'] = ['uint', 'text'];
// Used for SAML authentication.
// Uncomment to override the default paths to SP private key, SP and IdP X.509 certificates, and to set extra settings.
//$SSO['SP_KEY'] = 'conf/certs/sp.key';
//$SSO['SP_CERT'] = 'conf/certs/sp.crt';
//$SSO['IDP_CERT'] = 'conf/certs/idp.crt';
//$SSO['SETTINGS'] = [];
EOF
Объяснение плейбука:
Скачивание и установка пакета Zabbix: Используется модуль apt для установки пакета.
Обновление списка пакетов: Обновляет кэш пакетов.
Установка необходимых пакетов Zabbix: Устанавливает все необходимые пакеты.
Создание базы данных Zabbix: Использует модуль mysql_db для создания базы данных.
Создание пользователя Zabbix: Использует модуль mysql_user для создания пользователя и предоставления ему прав.
Установка параметра log_bin_trust_function_creators: Устанавливает переменную MySQL.
Импорт схемы базы данных Zabbix: Выполняет команду для импорта схемы.
Отключение опции log_bin_trust_function_creators: Устанавливает переменную обратно.
Редактирование конфигурационного файла Zabbix: Использует модуль lineinfile для изменения конфигурации.
Перезапуск Zabbix: Перезапускает службы Zabbix и Apache.
Запуск плейбука:
!!! отредактируй строку в пдлейбуке "hosts: your_target_hosts # Replace with your target host group"
!!! например: hosts: all или укажи конкретный хост hosts: you_host
ansible-playbook install_zabbix_7.yaml
a2enmod ssl