目的
本当は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のパスワード情報を一元化する。