Help us understand the problem. What is going on with this article?

ansible-galaxy で zabbix server を超簡単にインストールする

More than 5 years have passed since last update.

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を取ってきます。

shell
$ sudo ansible-galaxy install dj-wasabi.zabbix-agent
$ sudo ansible-galaxy install dj-wasabi.zabbix-server

(同時に依存関係のある geerlingguy.apache も一緒に入ります)
DBは、MySQL(CentOS 7ではMariadb)にするつもりなので、

shell
$ sudo ansible-galaxy install geerlingguy.mysql

も追加

本当は、コマンドでインストールするのではなくて、requirements.txtというファイルに書いて、以下のようにするほうがよさそうです。こちらの方が、git管理できるのでいいですね。

shell
ansible-galaxy install -r requirements.txt

インストール時に利用するディレクトリを作成

後のことも考えてgitで管理しておくためにディレクトリを作成します。

shell
$ mkdir install-zabbix

インストール時の固有パラメータ用ディレクトリを作成

shell
$ mkdir install-zabbix/vars

インベントリーファイルを作成

https://github.com/dj-wasabi/ansible-zabbix-server#example-playbook を見ると hosts: zabbix-server とあるので以下のようにしました。

shell
$ cd install-zabbix
cat > hosts
[zabbix-server]
192.0.2.0
^D

playbookを作成

Galaxyを使うのでPlaybookは最小でOK

install-zabbix-server.yml
- 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

vars/main.yml
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 を実行します。

shell
$ 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を書き換えます。

エラーが出る設定

/etc/httpd/conf.d/apache_vhost.conf
---中略---
  <Directory "/usr/share/zabbix">
    AllowOverride None
    Order Allow,Deny
    Allow from all
  </Directory>
---中略---

正しい設定

/etc/httpd/conf.d/apache_vhost.conf
---中略---
  <Directory "/usr/share/zabbix">
    AllowOverride None
    Require all granted
  </Directory>
---中略---

他のOrderの部分も修正します。
後は、httpd と zabbix が正しく動作しているか確認して、ブラウザーからアクセスします。

http://zabbix-server.example.jp

ログイン画面が出たら、
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 )

/etc/ansible/roles/dj-wasabi.zabbix-server/defaults/main.yml
---中略---
server_dbname: zabbix-server
server_dbuser: zabbix-server
server_dbpassword: zabbix-server
---中略---

についてはセキュリティの観点から install-zabbix-server.yml に違う値を設定しておいた方がいいと思う。Zabbixのバージョンは以下で指定する。

/etc/ansible/roles/dj-wasabi.zabbix-server/defaults/main.yml
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/

stylez
WEB・業務システム、インフラ構築・運用監視まで、幅広い開発実績と経験豊富なエンジニアによる自社開発体制で、スピーディかつ高クオリティのシステム開発を手掛けています。AWSをはじめ各種クラウドやベンダーパートナーとして総合的なITサービスや、独自移行ツールを使ったマイグレーション、サーバーレスなシステム構築、コンテナを利用したDevOpsコンサルティングなどを提供しています。
https://www.stylez.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした