10年近く前に作ったやつなのですが、いまだ当時と同じ課題を抱えているシステムエンジニアが多いので、この記事を書きます。
以前に、DevLoveで発表した内容です(後述する手順読み上げ機能を、Windows7に対応させています)。
システムエンジニアの本番作業
システムエンジニアの本番作業は、オンライン停止後の深夜帯しかできないという現場も多いかと思います。より作業ミスも発生しやすくなるってもんです。私も若い頃は、そういう現場にいて当時飛び交っていた格言をメモっていたようです。
昔のEvernoteを見返していたら「移行」という謎メモが出てきた… ・準備の段階で勝負は決まっている。 ・「君はEnterキー押すのが早いな」 ・「パスワードってのは体で覚えるんだ」 ・慌ててCtrl+Cするんじゃない、落ち着いてrollbackだ。 ・「一回とめますか?」
— :SIer/kawasima (@kawasima) 2015, 12月 4
本番作業のこころえ
謎メモを読み解くと、以下のようなことが、本番作業およびスクリプトには求められます。
- 本番作業はリハーサルを入念におこなうべし。
- Enter押す前に、指差し確認をおこなうべし。
- 本番で流すスクリプトにパスワードを書かないこと。
- 期待する結果と違ったら、立ち止まって対策うつべし。
migrationTTL
さて、これらの本番作業をサポートするツールです。
もともと移行作業のために作ったので、migrationTTLという名前になっていますが、本番作業全般で使えます。
TeraTermマクロとして動作します。
使い方
本番作業前に、開発環境でリハーサルをおこない、手順のスクリプトを作ります。
# 景気づけにls
ls
# ホームに移動
# 複数行のコメントはまとめて表示されます
cd
cd work/devlove
# SQL*Plusもシームレスにいけます
sqlplus system
# *****と書いておくとパスワード入力ダイアログがでます
*****
# SQLを実行します
select * from tab;
# SQLを終了
exit
基本的には、シェルスクリプトと同じノリです。
あとは、TeraTermからmigrationTTLを実行し、手順をロードすると作業がスタートします。
実行前のコマンドの確認と、Enterを押す前の確認が順次おこなわれ、自動的にターミナルに打ち込まれます。
メリット
- 検証済みの手順をクリックしていくだけで、本番での作業を安全かつ速やかに実行できる。
- パスワードがスクリプトに入らずセキュア
- 変なことが起こったら、途中で止めてリカバリできる。
- ログも自動的に取得される
- サーバをまたいで作業する場合も同じスクリプトでいける(TeraTermマクロなので)
コマンドの読み上げ
目だけで手順を追うと、ミスに気づかないこともあります。そこでmigrationTTLでは、コメントを音声で読み上げる機能があります。
SAPIのセットアップ
昔のWindowsでは、イルカや魔法使いを簡単に喋らせることができたのですが、最近は音声合成機能は別途インストールすれば使えるようになっています。Windows7では「Speech Platform Server Runtime」をSAPI経由で使うのが簡単なので、これを使います。
デモ
これで、以下のような本番作業イメージになります。
もう深夜作業でも大丈夫ですね!