この記事では、SaltStackを使用するときにTelegramチャットに通知を送信する方法について説明します。 バージョン2015.5.0から、SaltStackはすぐにSlackとの統合を提供しますが、Telegramも人気のメッセンジャーであり、ロシアのユーザーの間で積極的に使用されています。 したがって、この記事が読者に役立つことを願っています。
はじめに
一般的に、SaltStackはコンストラクターであり、他の多くのツールと同様に、カスタマイズと拡張のオプションを提供します。 特に、独自の実行可能モジュール 。
PythonでTelegramボットを作成する方法については、 ここで詳しく説明します 。 さらに、小さなPythonモジュールを使用して、このアプローチをSaltStackに結び付ける方法を説明します。
設定プロセス
次の後にモジュールの作成を開始します。
- ボットが作成されました
- チャットに追加されたボット
- chat_idを受信しました
ご注意 次のPythonスクリプトを使用してチャットIDを取得できます。
import requests URL = 'https://api.telegram.org/bot' TOKEN = < > try: request = requests.post('{url}{token}/getUpdates'.format(url=URL, token=TOKEN)) print request.json()['result'][0]['message']['chat']['id'] except Exception,e: print str(e)
だから、私たちは主なものに渡します。 ドキュメントで説明されているように、SaltStackモジュールは_modules/
ディレクトリにあり、 _modules/
ようになっている必要があります。
import requests URL='https://api.telegram.org/bot' def notify(message, token, chat_id): message_data = { 'chat_id': chat_id, 'text': message } try: request = requests.post('{url}{token}/sendMessage'.format(url=URL, token=token), data=message_data) except Exception,e: return False, str(e) if not request.status_code == 200: return False, "Return status is unsuccessful" # . return True, "Message was successfully sent"
次に、モジュール同期コマンドを実行して、それらがミニオンに表示されるようにする必要があります。
salt '*' saltutil.sync_modules
すべてが正常に完了すると、結果は次のようになります。
最後に、ステータスファイル(この例ではsend_telegram.sls
)を作成します
send message about minion id: module.run: # telegram - python-, notify - - name: telegram.notify - kwargs: message: command executed on minion with id {{ grains['id'] }} token: < > chat_id: <id Telegram>
作成されたモジュールの機能を確認します。
salt '*' state.apply send_telegram
マスターの側で:
チャットで: