読者です 読者をやめる 読者になる 読者になる

Zabbix 3.0 を debian jessie にインストールするシェルスクリプトを作った

debian zabbix

Zabbix 3.0をCentOS 7に最速インストールするシェルスクリプトを作ったというブログ記事を教えていただいたので、debian jessie にインストールするシェルスクリプトを書いてみました。

実行した環境

  • debian jessie 8.3 (Virtual Box 上の仮想マシン)
  • 基本機能と SSH サーバでインストール
  • インターネット接続が必要

リンク先との差異

MariaDB ではなく MySQL をセットアップ

debian jessie では MariaDB のインストールも可能ですが、MariaDB をインストールしていても zabbix-server-mysql のパッケージをインストールで MySQL を入れようとしてくるので最初から MySQL にしました。

MySQL の my.cnf はデフォルトのまま使用

動作がおかしくなったら変更用の記述を増やそうかなというスタンスです。

シェルスクリプト

5行目が MySQL の root パスワード
7行目が MySQL の zabbix 用パスワード
という内容なので適宜変更してください。

スクリプトは sudo か root で実行しないとダメだと思います。

#!/bin/sh
# Released under the NYSL Ver 0.9982

# root pssword for MySQL
db_pass='password'
# zabbix password for MySQL
zabbix_pass='password'

# Install MySQL
DEBIAN_FRONTEND=noninteractive apt-get install mysql-server-5.5 -y

# MySQL Setup
mysql -uroot -e "UPDATE mysql.user SET Password=PASSWORD('${db_pass}') WHERE User='root';"
mysql -uroot -e "FLUSH PRIVILEGES;"
mysql -uroot -p${db_pass} -e "DELETE FROM mysql.user WHERE User='';"
mysql -uroot -p${db_pass} -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
mysql -uroot -p${db_pass} -e "DROP DATABASE test;"
mysql -uroot -p${db_pass} -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
mysql -uroot -p${db_pass} -e "FLUSH PRIVILEGES;"

# Install Zabbix Server
wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/zabbix-release_3.0-1+jessie_all.deb
dpkg -i zabbix-release_3.0-1+jessie_all.deb
apt-get update

apt-get install zabbix-server-mysql -y

# Create CB and DB user
mysql -u root -p${db_pass} -e "CREATE DATABASE zabbix CHARACTER SET utf8;"
mysql -u root -p${db_pass} -e "GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost identified by '${zabbix_pass}';"
mysql -u root -p${db_pass} -e "FLUSH PRIVILEGES;"

# Create DB table
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uroot -p${db_pass} zabbix

# Set password for DB user
sed -ie "s/# DBPassword=/DBPassword=${zabbix_pass}/" /etc/zabbix/zabbix_server.conf

# Start zabbix-server
service zabbix-server start

# Install zabbix-frontend, zabbix-agent
apt-get install zabbix-frontend-php zabbix-agent ufw -y

sed -ie 's|# php_value date.timezone Europe/Riga|php_value date.timezone Asia/Tokyo|' /etc/apache2/conf-enabled/zabbix.conf

service apache2 restart

# Set firewall
ufw default DENY
ufw allow ssh
ufw allow www
ufw allow 10050/tcp
ufw allow 10051/tcp

echo y | ufw enable 1

View raw

無事に実行できたら Web UI のセットを行えば OK だと思います。

躓いたところ

MariaDB 関係

MariaDBMySQL のパッケージをインストールする際に root のパスワードの設定用プロンプトやダイアログが出てくるのでその回避を探しました。
プロンプトで問い合わせがある場合は expaect を利用すれば root のパスワードをセットしてインストールを完了することもできます。 今回はダイアログが出てくる形だったので、apt-get の実行時に DEBIAN_FRONTEND=noninteractive を与えて問い合わせを表示させないようにしました。

ufw 関係

ufw を有効化すると「SSH のポートが閉じられるかもしらんけどええんか?(意訳)」という問い合わせが発生します。expect で回避する方法もありますが、そのためだけに依存するいろいろなパッケージが入ってくるのも気持ち悪かったので、ほかの手段を探したところ `echo y` の結果をパイプで渡してプロンプトの応答に使う方法を知ったのでその方法を使っています。
先述の MariDB(MySQL) の解決法が expect だけだったら expect で解決していたかもしれません。

ライセンスについて

どう扱ってもらってもかまわないので NYSL Ver 0.9982 でとしています。