Bot にお願いして 手順書を書いてもらう
ネットワーク運用のなかに「手順書を書く」という業務がある.事業者によっては
- 書く
- レビュー
- 直す
- レビュー
- 直す
…
みたいな比較的コスト高い作業になる.
ネットワークは事前にテストしづらく「壊れるとヤバい」という側面から,日本では手作業による温かみのある作業が好まれる.Web アプリのような PRレビュー → Mergeボタン押す → 勝手にデプロイ みたいな自動ワークフローは,エンジニアにとってゴールではあるが,多くの場合まだ現実的でない.
Hubot に手順書を書いてもらう
じゃあ,ということで
GitHub に手順書のテンプレートを置いといて,パラメーターと一緒にお願いしたら,手順書つくってIssue にしてくれるHubot スクリプト
作った.
https://github.com/codeout/hubot-github-templated-issues
テンプレートエンジンはECT を選んだ.
トラブルが起こったときには,すでに手順書ができている
手順書作成のトリガーが人間でない場合もある.たとえばよくあるネットワークトラブルとか,パターン化できてるやつは「通知を受けたときにトラブル対応手順ができてる」のが望ましい.
使っているチャットやログ管理ツールによるが,たとえばHipChat + fluentd の場合:
- ネットワークデバイスがsyslog を吐く
- fluentd がsyslog をフィルター + 整形して,HipChat にHubot コマンド形式で書く
- Hubot が手順書をつくる
ような動作をさせることができる.ここまで自動.*1
# fluent.conf <source> type syslog tag network </source> <filter network.**> type grep regexp1 message SNMP_TRAP_LINK_DOWN </filter> <filter network.**> type record_transformer enable_ruby <record> message ${ message =~ /ifName (\S+)/; "hubot issue create templated-issues/intf-down\nhostname: " + host + "\nintfname: " + $1 } </record> </filter>