Zabbix サーバーをansible-galaxy でインストールした時のメモです。
Zabbix のように沢山のコンポーネント(Apache,php,MySQL)を必要とするものは、インストールも面倒ですし、途中で設定を間違えるとうまく動かなかったりするので、そろそろ手動でセットアップするのは避けたいところです。
Ansible を覚えたので自前でPlaybookを書くことも考えましたが、車輪の再発明をするのもなんなので、ansible-galaxy でどこまで行けるかやってみました。
#Zabbix のPlaybookがあるかどうか調べる
github で"ansible zabbix" で探すと、以下のレポジトリが見つかりました。
- ahelal/ansible-zabbix
- dj-wasabi/ansible-zabbix-server
- Open-Future-Belgium/Zabbix-Server-Ansible
今回は、CentOS 7にインストールするのでなるべく最近更新されているもので、
dj-wasabi/ansible-zabbix-server
にしました。
コンソールマシンは、Ubuntuを使いました。
Ansible を先にインストールしておいてください。
selinux,firewalldは先に止めておきます。
#ansible-galaxy でPlaybookを取ってきます。
$ sudo ansible-galaxy install dj-wasabi.zabbix-agent
$ sudo ansible-galaxy install dj-wasabi.zabbix-server
(同時に依存関係のある geerlingguy.apache も一緒に入ります)
DBは、MySQL(CentOS 7ではMariadb)にするつもりなので、
$ sudo ansible-galaxy install geerlingguy.mysql
も追加
本当は、コマンドでインストールするのではなくて、requirements.txtというファイルに書いて、以下のようにするほうがよさそうです。こちらの方が、git管理できるのでいいですね。
ansible-galaxy install -r requirements.txt
#インストール時に利用するディレクトリを作成
後のことも考えてgitで管理しておくためにディレクトリを作成します。
$ mkdir install-zabbix
インストール時の固有パラメータ用ディレクトリを作成
$ mkdir install-zabbix/vars
#インベントリーファイルを作成
https://github.com/dj-wasabi/ansible-zabbix-server#example-playbook を見ると hosts: zabbix-server とあるので以下のようにしました。
$ cd install-zabbix
cat > hosts
[zabbix-server]
192.0.2.0
^D
#playbookを作成
Galaxyを使うのでPlaybookは最小でOK
- hosts: zabbix-server
sudo: yes
vars_files:
- vars/main.yml
roles:
- { role: geerlingguy.mysql }
- { role: geerlingguy.apache }
- { role: dj-wasabi.zabbix-server,
zabbix_url: zabbix-server.example.jp,
zabbix_timezone: Asia/Tokyo,
database_type: mysql,
database_type_long: mysql }
zabbix_urlは、VirtualHostのURLになります。
zabbix_timezoneは、日本時間にします。
database_type、database_type_logは、mysqlにします。
これらの設定は、この後に出てくる vars/main.yml に記入してもいいのですが、playbookに直接書いてみました。
#CentOS 7 Mariadb 対応
CentOS 7で標準インストールされるのはMariadbです。geerlingguy.mysql は、MySQL用なのでそのままだとエラーが出ます。
https://github.com/geerlingguy/ansible-role-mysql#mariadb-usage
に沿ってMariadb用の設定を追加します。
cd vars
mysql_packages:
- mariadb
- mariadb-server
- mariadb-libs
- MySQL-python
- perl-DBD-MySQL
mysql_daemon: mariadb
mysql_log_error: /var/log/mariadb/mariadb.log
mysql_syslog_tag: mariadb
mysql_pid_file: /var/run/mariadb/mariadb.pid
#Ansible を実行します。
$ ansible-playbook -i ./hosts ./install-zabbix-server.yml
この時にエラーが出るようならば、設定に失敗しています。
修正してリトライしてください。
#Apacheのconfigを2.4向けに修正
そのままだとApacheのconfigが 2.2向けなのでアクセスコントロールでエラーがでます。
Upgrading to 2.4 from 2.2 - Apache HTTP Server Version 2.4
http://httpd.apache.org/docs/2.4/upgrading.html
に従って、Order,Allow,Denyを書き換えます。
エラーが出る設定
---中略---
<Directory "/usr/share/zabbix">
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
---中略---
正しい設定
---中略---
<Directory "/usr/share/zabbix">
AllowOverride None
Require all granted
</Directory>
---中略---
他のOrderの部分も修正します。
後は、httpd と zabbix が正しく動作しているか確認して、ブラウザーからアクセスします。
ログイン画面が出たら、
ID:admin
PW:zabbix
でログインします。
パスワードは変更しておきましょう。
補足:
install-zabbix-server.yml で設定できるパラメータは、以下を参照。
/etc/ansible/roles/dj-wasabi.zabbix-server/defaults/main.yml
(https://github.com/dj-wasabi/ansible-zabbix-server/blob/master/defaults/main.yml でもOK )
---中略---
server_dbname: zabbix-server
server_dbuser: zabbix-server
server_dbpassword: zabbix-server
---中略---
についてはセキュリティの観点から install-zabbix-server.yml に違う値を設定しておいた方がいいと思う。Zabbixのバージョンは以下で指定する。
zabbix_version: 2.4
ディレクトリ構成は以下の通りでした。
~/src/install-zabbix
$ tree
├── README
├── hosts
├── install-zabbix-server.yml
└── vars
└── main.yml
要望があれば、werner dijkerman さんのplaybookによる zabbix-agent をインストールして、zabbix-api からホスト登録についても投稿します。
参考URL:
Zabbix 2.4 を yumでインストール(CentOS6.5) | あぱーブログ
https://blog.apar.jp/linux/334/
Installing zabbix-agent with Ansible – werner-dijkerman.nl
http://werner-dijkerman.nl/2015/03/06/installing-zabbix-agent-with-ansible/
Configure Zabbix Server on CentOS 6.6 with Ansible - Jürgen's Blog
http://jurgenvm.blogspot.jp/2014/12/configure-zabbix-server-on-centos-66.html
Installing zabbix-agent with Ansible – werner-dijkerman.nl
http://werner-dijkerman.nl/2015/03/06/installing-zabbix-agent-with-ansible/