AnsibleでZabbixサーバ #2 ~Jinja2を使って~

改修

前回こちらで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も使いこなせるようになりたいですなぁ……

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA