1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ansibleでrun_onceを付け忘れた話

Last updated at Posted at 2014-12-25

研究室のUbuntu Serverでaptを更新するのに,Ansibleを使っています.
そこで「今から更新するよ!」をTypetalkに通知しようとして失敗した話です.

Typetalkモジュール

AnsibleにはTypetalkに通知するためのモジュールがあります.

このモジュールは,こんな感じで使えます.

- typetalk:
    client_id=abcdefghijklmnopqrstuvwxyz123456
    client_secret=abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123
    topic=1234
    msg='サーバーアップデートを開始します!'

ただ,そのまま使ってしまうと,大変なことになります.
「対象ホストの数だけ通知を送ってしまう」のです.
(研究室のチャットに20件の通知を出してしまいました….)

run_onceオプション

このため、1.7から導入されたrun_onceを使います。run_onceは、グループ内の先頭で定義されたホストでのみ実行されるようにするためのパラメーターです。
Ansibleでの連番ホスト名をつけるなど — そこはかとなく書くよん。

先程のPlaybookにrun_onceを付けると,1度だけ通知されるようになります.

- typetalk:
    client_id=abcdefghijklmnopqrstuvwxyz123456
    client_secret=abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123
    topic=1234
    msg='サーバーアップデートを開始します!'
  run_once: true

まとめ

Ansibleから通知をする場合,run_onceを付け忘れないように,という教訓でした.
実際に使っているPlaybookは,GitHubに上げています.
TypetalkのTokenはhostsに書くなどの工夫をしています.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?