LoginSignup
1
6

More than 5 years have passed since last update.

zabbix3.0のansible-playbookを作ってみた

Last updated at Posted at 2017-05-21

目的

本当はzabbix3.0の構築の簡略化だったのだが、
初めてのansible勉強がメインになりました。つまり今回は、自己満足です。

ブラッシュアップした2回目の記事(zabbix3.0(server/agent)のansible-playbookを作ってみた(その2)はこちら。

やったこと

Ansible Documentationやqiitaを見ながら、Zabbixサーバの自動構築を書いてみた。

あと、仮想(KVM)マシン構築を簡易にする環境作成と連動させ、最小限で検証環境を構築できるようにした。

アウトプット

作成したplaybookを githubに登録してみた。
git clone https://github.com/mishikawan/zabbix30-ansible.git

  • 興味があれば(ないと思いますが…)、git-cloneしてみてください。

ディレクトリ構成

zabbix30/
|-- inventory
|   `-- inventory.ini     <--- 対象ホスト登録(今回は1台だけ)
|-- roles
|   |-- application       <--- zabbix系の設定事項
|   |   |-- files
|   |   |   `-- zabbix.conf.php  <--- 設定ファイルの元ファイル
|   |   |-- handlers
|   |   |   `-- main.yml   <--- handler(restart)設定ファイル
|   |   |-- tasks
|   |   |   `-- main.yml   <--- DB作成~zabbix-server.conf作成・再起動まで
|   |   `-- vars
|   |       `-- main.yml   <--- zabbix用DBパスワードの格納
|   |-- middleware        <----- 各yumインストールとMariadb稼働
|   |   `-- tasks
|   |       `-- main.yml
|   `-- os                <----- selinux,firewall,zabbix-repoの登録
|       `-- tasks
|           `-- main.yml
`-- zabbix30_deploy.yml   <----- main処理

playbookを次に書くための自分へのヒント

mainのplaybookを簡易にするために

bastPracticeを参考にして、mainには、roleの羅列のみを記載するように。

変数の設定(vars)/参照(tasks)方法

roles/***/vars/main.yml
zabbix_setup:
  - zabbix_mariadb_password: password
roles/***/tasks/main.yml
- name: create and modify zabbix user
  mysql_user:
    name: zabbix
    password: "{{ item.zabbix_mariadb_password }}"
    priv: 'zabbix.*:ALL,GRANT'
    state: present
  with_items: "{{ zabbix_setup }}"

シェルの実行結果で処理を流すか否かを判断方法

mysqlで対象テーブルのselectを実行させ、処理が正常終了しなければ(!=0)、"insert zabbix DB"タスクを実行する

roles/***/tasks/main.yml
- name: varliable zabbix user count
  shell: mysql -u root -ss zabbix -e "select count(*) from users"
  ignore_errors: yes
  register: count_users
- name: insert zabbix DB
  shell: zcat /usr/share/doc/zabbix-server-mysql-3.0.9/create.sql.gz | mysql zabbix -u root
  when: count_users.rc != 0
  • when: count_users.rc .... 実行結果(return_code)
  • 実行結果を判断したければ、 count_users.stdout != "1" 等の記載する。
  • ignore_error: yes を記載することで、エラーになっても次のタスクに進むことができる。

今後すること

  • 汎用的な記載方法で作成
  • zabbix-agentも作成
  • DBのパスワード情報を一元化する。
1
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
1
6