2017年12月16日

kansible

※この記事はAnsible Advent Calendar 2017の記事です。

この記事について


世の中の流れに乗ってansibleはじめました。

仕事での使い方で言うと
インフラの設定や作業をplaybookにして運用して
そのままgit管理して運用しています。

今回取り扱うのはzabbix周り。
監視をansibleで設定。つまりkansible

主にansibleでやってること
  • ansibleでzabbix serverを構築
  • zabbix agentをansibleでインストゥール
  • 監視設定をansibleで投入
  • 場合によってはzabbix proxyも構築


本当はAWSのモジュールとかも扱いたかったのですが
ansible覚えたての頃に触ったもの
(roleとかを理解せず、取りあえず動く書き方で書いてた)だったりで
執筆に時間がかかりそうなので断念しました。
クッ、仕事とFGOとマギレコさえなければ…

参考情報


ぶっちゃけリンク先の記事を見たほうがいいよ!
Ansible ZabbixモジュールでZabbix設定を自動化
こちらの記事を参考にさせていただきましたm(_ _)m
(Zabbix Module)

zabbix moduleの公式はこちら(zabbix_host)

あと、こちらの role を使っています。
READMEとか見れば全部必要なこと載ってるよ


使い方



前準備的なところ


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などの定義
・アラート先のメール設定

nanodayo at 14:40コメント(0) 
ansible 

コメントする

名前
URL
 
  絵文字