2017年12月16日
kansible
※この記事はAnsible Advent Calendar 2017の記事です。
世の中の流れに乗ってansibleはじめました。
仕事での使い方で言うと
インフラの設定や作業をplaybookにして運用して
そのままgit管理して運用しています。
今回取り扱うのはzabbix周り。
監視をansibleで設定。つまりkansible。
主にansibleでやってること
本当はAWSのモジュールとかも扱いたかったのですが
ansible覚えたての頃に触ったもの
(roleとかを理解せず、取りあえず動く書き方で書いてた)だったりで
執筆に時間がかかりそうなので断念しました。
クッ、仕事とFGOとマギレコさえなければ…
ぶっちゃけリンク先の記事を見たほうがいいよ!
Ansible ZabbixモジュールでZabbix設定を自動化
こちらの記事を参考にさせていただきましたm(_ _)m
(Zabbix Module)
zabbix moduleの公式はこちら(zabbix_host)。
あと、こちらの role を使っています。
READMEとか見れば全部必要なこと載ってるよ
ansibleを実行するホストにはzabbix-apiが必要です。(pipで入れる)
pip自体のインストールに癖がありますが割愛
Zabbixが使用するデータベースサーバも別途構築する必要があります。
(そういうroleを読ませて一緒に構築すればOK)
あとはroleでdefineされているvalueのうち、変更が必要なものを
host_varsでオーバーライドして必要なroleを読み込むだけ!
なるほどわからん!
まぁリンク先に書いてあるからいいよね
具体的には、zabbix proxyのDBをsqliteにしたかったんですが
READMEの情報だけではできませんでした。
・必要なことはだいたいREADME記載されていると思ったが別にそんなことはなかった
READMEに全部の変数が乗ってなかったので
roleをダウンロードして、その中のdefaultsとかtasksの中を見たりしてました…\(^o^)/
まず、tasksをみるとたしかにsqlite3.ymlがある。
そしてtasks/main.ymlの記述を見る限り
database_type_longにsqlite3を設定すればやってくれそう。
tasks/sqlite3.ymlの中身を見るに zabbix_proxy_dbname を zabbix_proxy にすれば良さそう
・galaxyで拾ってくるrole自身が更新されていて、これまでのplaybookで動かなくなることがある
コーディング規約的に、role名_hogehoge みたいな変数名を使っているのですが
初めて使ったときは database_name みたいにrole名と関係のない
名前がついていて、衝突の危機がありました…。
規約に合わせるために zabbix_database_name とかの名前で定義すれば使える
ラッパーroleを作ったりしたんですが
ちょうど、出来上がった頃にdj-wasabiさんのroleでも
zabbix_database_name とかを使う仕様に変わっちゃいまして…
Zabbix特有の点で言うと、この辺がまだplaybookからできず
結局手動作業を併用してやってます
・zabbix-serverのパスワード変更
・監視設定に使うHost Groupなどの定義
・アラート先のメール設定
この記事について
世の中の流れに乗ってansibleはじめました。
仕事での使い方で言うと
インフラの設定や作業をplaybookにして運用して
そのままgit管理して運用しています。
今回取り扱うのはzabbix周り。
監視をansibleで設定。つまりkansible。
主にansibleでやってること
- ansibleでzabbix serverを構築
- zabbix agentをansibleでインストゥール
- 監視設定をansibleで投入
- 場合によってはzabbix proxyも構築
本当はAWSのモジュールとかも扱いたかったのですが
ansible覚えたての頃に触ったもの
(roleとかを理解せず、取りあえず動く書き方で書いてた)だったりで
執筆に時間がかかりそうなので断念しました。
クッ、仕事
参考情報
Ansible ZabbixモジュールでZabbix設定を自動化
こちらの記事を参考にさせていただきましたm(_ _)m
(Zabbix Module)
zabbix moduleの公式はこちら(zabbix_host)。
あと、こちらの role を使っています。
使い方
前準備的なところ
ansibleを実行するホストにはzabbix-apiが必要です。(pipで入れる)
# pip install zabbix-api
pip自体のインストールに癖がありますが割愛
Zabbixが使用するデータベースサーバも別途構築する必要があります。
(そういうroleを読ませて一緒に構築すればOK)
あとはroleでdefineされているvalueのうち、変更が必要なものを
host_varsでオーバーライドして必要なroleを読み込むだけ!
なるほどわからん!
ハマったところ・感想
具体的には、zabbix proxyのDBをsqliteにしたかったんですが
READMEの情報だけではできませんでした。
・必要なことはだいたいREADME記載されていると思ったが別にそんなことはなかった
READMEに全部の変数が乗ってなかったので
roleをダウンロードして、その中のdefaultsとかtasksの中を見たりしてました…\(^o^)/
まず、tasksをみるとたしかにsqlite3.ymlがある。
そしてtasks/main.ymlの記述を見る限り
database_type_longにsqlite3を設定すればやってくれそう。
- name: "Installing the database"
include: "{{ database_type_long }}.yml"
tasks/sqlite3.ymlの中身を見るに zabbix_proxy_dbname を zabbix_proxy にすれば良さそう
- name: "Sqlite3 | Default Database Path"
set_fact:
proxy_dbname: /var/lib/zabbix/zabbix_proxy.db
when:
- zabbix_proxy_dbname == "zabbix_proxy"
・galaxyで拾ってくるrole自身が更新されていて、これまでのplaybookで動かなくなることがある
コーディング規約的に、role名_hogehoge みたいな変数名を使っているのですが
初めて使ったときは database_name みたいにrole名と関係のない
名前がついていて、衝突の危機がありました…。
規約に合わせるために zabbix_database_name とかの名前で定義すれば使える
ラッパーroleを作ったりしたんですが
ちょうど、出来上がった頃にdj-wasabiさんのroleでも
zabbix_database_name とかを使う仕様に変わっちゃいまして…
残課題
Zabbix特有の点で言うと、この辺がまだplaybookからできず
結局手動作業を併用してやってます
・zabbix-serverのパスワード変更
・監視設定に使うHost Groupなどの定義
・アラート先のメール設定