LoginSignup
3
6

【bash】Zabbixを一瞬で構築するスクリプト

Last updated at Posted at 2024-04-08

はじめに

Zabbixの構築を自動化し、かつDBに設定するパスワードを対話式に設定出来たら便利だな~と思い作成しました。

環境

OS:RHEL 9.2
Zabbix:6.0LTS
DB:MariaDB

上記の条件で構築を行います。

almalinuxやrockylinuxでもメジャーバージョンが9であれば可能です。

要件

  • Zabbix構築の自動化
  • DBに扱うパスワードは対話式で決定
  • パスワードポリシーは8文字以上、大文字小文字の英数字を使用
  • ポリシーに当てはまらない場合は入力し直し

スクリプト本文

#!/bin/bash

# ZabbixのリポジトリURLとコンフィグのパス
ZABBIX_URL="https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm"
ZABBIX_CONF="/etc/zabbix/zabbix_server.conf"

# MariaDBのインストール
dnf install -y mariadb-server

# MariaDBの起動と自動起動設定
systemctl start mariadb
systemctl enable mariadb

# Zabbixのリポジトリを追加
rpm -Uvh "${ZABBIX_URL}"
dnf clean all

# Zabbix関連パッケージのインストール
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent zabbix-web-japanese

# MariaDBへのログインパスワードの指定、ポリシーに当てはまらなければ再入力
while true; 
do
    echo "MariaDBのログインパスワードを指定してください: "
    read -s db_password
    if [[  ${#db_password} -ge 8 && "${db_password}" =~ [A-Z] && "${db_password}" =~ [a-z] && "${db_password}" =~ [0-9] ]]; then
        read -p "入力した内容が正しければ処理を続行しますが、よろしいですか? (y/n): " confirm
        case $confirm in
            [Yy]* )  
                echo "後続の処理を実行します"
                break;;
            [Nn]* ) 
                echo "パスワードの入力をやり直します";;
            * ) 
                echo "エラー: yかnを入力してください";;
        esac
    else
        echo "エラー: パスワードは8文字以上で、英数字大文字小文字を含む必要があります"
    fi
done



# Zabbixのデータベースとユーザーの作成
mysql -uroot <<EOF
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by '${db_password}';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
EOF

# Zabbixのセットアップスクリプトの実行
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p"${db_password}" zabbix


mysql -uroot <<EOF
set global log_bin_trust_function_creators = 0;
EOF

# zabbix_server.confの設定値書き換え
sed -i "s/# DBPassword=/DBPassword=${db_password}/g" "${ZABBIX_CONF}" > /dev/null


# Zabbix ServerとAgent、Apache、PHP-FPMの再起動と自動起動設定
systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm

# firewalldの設定
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-port=10051/tcp --zone=public --permanent
firewall-cmd --reload

echo "Zabbixのセットアップが完了しました。"

実行結果

  zabbix-web-japanese-6.0.28-release1.el9.noarch
  zabbix-web-mysql-6.0.28-release1.el9.noarch

完了しました!
MariaDBのログインパスワードを指定してください:
入力した内容が正しければ処理を続行しますが、よろしいですか? (y/n): y
後続の処理を実行します
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
success
success
success
Zabbixのセットアップが完了しました。

こんな感じですぐ終わります。

http://IPアドレス/zabbix/
にアクセスして確認してみましょう。
※IPは自身の環境に置き換えてください。

image.png

あとは画面に沿って進めていけば構築完了です。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6