Ссылки:
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