改修
前回こちらでAnsibleを使ってZabbixサーバの構築を行いましたが、この度改修致します。
前回のままですとzabbix_agentd.confのIPやホスト名を変更しなくてはいけません。編集する箇所は一か所にまとまっている方が楽なので、インベントリファイルの編集だけで済むと便利です。
Jinja2というテンプレートエンジンを使うとインベントリファイルで定義した変数を構築時にコンフファイルで展開出来るので、構築時のチューニングを一つのファイルのみで済ますことが可能です。
変更点
ファイル構成
$ tree .
.
|-- ansible.cfg
|-- hosts
|-- README.md
|-- roles
| |-- zabbix-agent
| | |-- files
| | | `-- zabbix_agentd.j2
| | `-- tasks
| | `-- main.yml
| `-- zabbix-server
| |-- files
| | |-- CreateDB.sql
| | |-- my.cnf
| | |-- php.ini
| | |-- remi-php72.repo
| | |-- remi.repo
| | |-- zabbix.conf
| | `-- zabbix_server.conf
| `-- tasks
| `-- main.yml
|-- .ssh
| |-- secret.pem
`-- start.yml
ファイル構成は9行目のコンフィグファイルがJinja2用に変更されています。
※例によって接続用の鍵(.ssh/secret.pem)を作成しておく。
インベントリファイル
[zabbix-server]
localhost
[zabbix-server:vars]
DB_PASS=【DB用パスワード】
[zabbix-agents]
【ZabbixAgentのIPアドレス】
[zabbix-agents:vars]
ansible_port=22
ansible_user=centos
ansible_ssh_private_key_file=.ssh/secret.pem
zabbix_server_ip=【ZabbixServerのIPアドレス】
zabbix_agent_ip=【ZabbixAgentのIPアドレス】
冒頭で話した通りインベントリファイルでアドレスを設定出来るようになりました。
プレイブック(エージェント用)
- name: packages update
yum: name=* state=latest
- name: download zabbix-agent 4.0 repo
yum:
name: http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.14-1.el7.x86_64.rpm
state: present
- name: install zabbix-agent
yum:
name: zabbix-agent
state: present
- name: copy zabbix_agentd.conf
template:
src: /etc/ansible/roles/zabbix-agent/files/zabbix_agentd.j2
dest: /etc/zabbix/zabbix_agentd.conf
- name: start zabbix-agent
systemd:
name: zabbix-agent
state: started
enabled: yes
14~17行目でtemplateモジュールを利用している。
コンフィグ
$ grep -v -e "^#" -e "^\s*$" zabbix_agentd.j2
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server={{ zabbix_server_ip }}
ServerActive={{ zabbix_server_ip }}
Hostname={{ zabbix_agent_ip }}
Include=/etc/zabbix/zabbix_agentd.d/*.conf
{{ 変数名 }}というような感じでインベントリファイルで定義した変数を展開しコンフィグとする。
以上。ansibleもdockerも使いこなせるようになりたいですなぁ……