itamae | itamaeを使用してzabbix3.2.4をApache2.4.6/PHP7.1.4/MariaDB10.1.22でセットアップする


概要

zabbix3.2.4を CentOS7/Apache2.4.6/PHP7.1.4/MariaDB10.1.22でitamaeからセットアップする

  1. CentOS7サーバーをminimalでインストールする
  2. 管理者ユーザーアカウントを追加し、鍵認証、パスワードなしsudoに設定
  3. selinuxをDisabled、yum upgradeで最新に更新したのちに、OSを再起動する
  4. yumリポジトリ、epel/remi/zabbix/mariadbを追加
  5. 共通ツール追加など、個人的な標準CentOSセットアップを行う
  6. ldap clientやOS周りをldap認証設定セットアップ
  7. apache(httpd)/php7.1.4をインストール
  8. mariadb10.1.22をインストール
  9. mariadbでzabbix用のユーザー・DBを追加
  10. zabbix3.2.4をインストール
  11. mariadbに initial schema と data を追加
  12. zabbix serverにzabbix_server.conf、Apache用zabbix.confの変更
  13. zabbix server/Apache の起動(再起動)

内容

  • 概要の1〜3までは、直接コンソールから手動コマンドで行う。
  • 4〜13は、itamae実行サーバーから、目的のサーバーへ向けて実行する。

    逐一itamaeコマンドでセットアップすると、Infrastructure as codeが台無しになるので、実行シェルスクリプトにまとめて構築・管理する

    # 一応、一度 dry-runモードで動作確認をしておく
    ./itamae_centos7-zabbix.sh --dry-run
    
    # 本実行
    ./itamae_centos7-zabbix.sh
    

    使用するitamaeのレシピとレシピ実行スクリプトは、githubに上げてある。
    実行スクリプトは、RVMのgemset対応になっているのでRVMを使用しないならば、その1行を消す必要あり

ポイント

2. 管理者ユーザーアカウントを追加し、鍵認証、パスワードなしsudoに設定について

普通に、groupadd と useradd で追加する。
鍵認証では、itamae実行サーバーで鍵を作成し、目的のサーバーに ~/.ssh/authorized_keys という名前でコピーしておく、この時 ~のパーミッションは700、~/.ssh のパーミッションは700、~/.ssh/authorized_keys のパーミッションは600にする必要がある

3. selinuxをDisabled、yum upgradeで最新に更新したのちに、OSを再起動する

/etc/selinux/config
SELINUX=disabled
# yumのアップグレード
yum -y upgrade

# OSの再起動
sync;sync; init 6

7. apache(httpd)/php7.1.4をインストール

yumで使用するリポジトリをoptions "--enablerepo=remi-php71"でremi-php71に使用するようにする

php71.rb
[
    "libpng",
    "libXpm",
    "libX11",
    "libxslt",
    "dejavu-fonts-common",
    "dejavu-sans-fonts",
    "t1lib",
    "fontpackages-filesystem",
    "libXau",
    "php",
    "php-devel",
    "php-cli",
    "php-gd",
    "php-bcmath",
    "php-ldap",
    "php-xml",
    "php-common",
    "php-json",
    "php-mysqlnd",
    "php-opcache",
    "php-mbstring",
    "php-pecl-mysql"
].each{| pkg |
    package pkg do
        action :install
        options "--enablerepo=remi-php71"
    end
}

9. mariadbでzabbix用のユーザー・DBを追加

実行するSQLをファイルにまとめ、一度/tmpにコピーしてそのSQLを実行する

mariadb_zabbix.sql
CREATE DATABASE zabbix character set utf8;
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';
DROP DATABASE test;
FLUSH PRIVILEGES;

mariadb_zabbix.rb
execute "CREATE DATABASE" do
    action  :run
    command "/bin/mysql -uroot < /tmp/mariadb_zabbix.sql"
end

10. zabbix3.2.4をインストール

基本的に、依存関係でPHP関連のパッケージはPHPインストール時に予めインストールしている筈だが、一応インストール漏れがあった場合に、php7.1系関連をインストールするために、remi-php71を有効にしておく

zabbix32.rb
[
    "zabbix-server-mysql",
    "zabbix-web-mysql",
    "zabbix-web-japanese",
].each{| pkg |
    package pkg do
        action  :install
        options "--enablerepo=remi-php71"
    end
}

11. mariadbに initial schema と data を追加

zabbix-serverをインストール際にコピーされるsqlファイルを実行させる

zabbix32.rb

execute "import initial schema and data" do
    action  :run
    command "zcat /usr/share/doc/zabbix-server-mysql-3.2.*/create.sql.gz | /bin/mysql -uzabbix -pzabbix -Dzabbix"
end

12. zabbix serverにzabbix_server.conf、Apache用zabbix.confの変更

zabbix serverに対して、DBへの接続設定を追加する

zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/tmp/mysql.sock

Apacheにincludeするzabbix.confは基本的に標準でも構わないのだが、php5系用になっているので、php7系用に変更する必要がある

zabbix.conf
    <IfModule mod_php7.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value always_populate_raw_post_data -1
        # php_value date.timezone Europe/Riga
    </IfModule>

現状

zabbix自体のソースコードがphp5系向けに書いてあるようで、php7系で変更になった関数を使ってあるので、エラーが出ます。