(この記事は 地平線に行く とのマルチポストです)
Ansible で Mackerel の設定を取得したり変更したりできたらなーと思う時があります。
例えば…
- アラートが鳴ってしまうのを防ぐために、Ansible 実行中はホストのステータスを standby にしたい
- 特定のロールが設定されているホストの場合だけ、ファイルをコピーしたい
でも、Ansible の command モジュールで mackerel-agent を実行してこのような処理をさせるのは手間がかかります。
そこで、 Ansible の設計にのっとった形で簡単に Mackerel を操作できるように、プラグインを作ってみました! 1
どういう風に使えるの?
例えば、Ansible 実行中はホストのステータスを standby にしたいとき。
- name: Set Mackerel Host Status
mackerel_host:
status: standby
# ~ホストの更新処理~
- name: Set Mackerel Host Status
mackerel_host:
status: working
ホストのロールを設定したいとき。
- name: Set Mackerel Host Role Fullnames
mackerel_host:
role_fullnames:
- test_project:web
ロールによって動作を変えたいとき。
- name: Get Mackerel host configuration
mackerel_host:
register: mackerel
- name: Copy file if roles has "test_project"
copy:
src: ../files/example.conf
dest: /etc/httpd/conf.d/
when: mackerel['host']['roles']['test_project'] is defined
こんな感じに使えます!
(ちなみに、API Key や Host ID はサーバ内にある mackerel-agent の設定ファイルをデフォルトで読み取るので、記述は不要です)
詳しい使い方は、GitHub の README をご覧ください!
まとめ
まだ ホストの情報取得/ステータス設定/ロール設定 しか対応していません。2
今後、JOJOに対応する操作を増やしていく予定です。
もし、こういうことができるようにしたい!という要望がありましたら、GitHub の Issues へ書き込んでいただければと思います。もしくは Up vote をお願いします。
https://github.com/YujiSoftware/ansible-mackerel-module/issues
ぜひご利用ください!
次の Mackerel Advent Calendar 2019 は @kazeburo さんです!
mackerel-plugin-pinging について - Hateburo: kazeburo hatenablog
-
すでに mackerelio/ansible-mackerel-agent というのがあるのですが、これは mackerel-agent をインストールするための Ansible テンプレートです。一方で、今回作ったプラグインは Mackerel API のラッパーです。 ↩
-
Mackerel Advent Calendar が空いてる!チャンスだ!と思って急いで作りました。 ↩