サーバー・システムやミドルウエア,ネットワーク機器など,いまだ多くのシステムのコンフィグレーションはテキスト形式で実装されているものが多い。WebによるGUI(グラフィカル・ユーザー・インタフェース)を備え,オペレータにリテラシを求めないインタフェースを提供している製品もあるが,その多くはコンシューマ向けの小規模製品である。事業者向け大規模システムの構成機器は複雑でシビアな運用を求められるため,いまだにインタフェースはテキスト形式が優勢である。
エンジニアはマニュアルや過去の設定事例,本人の記憶や経験を駆使して,キーボードから1ステートメントごとに入力していく。一方,運用経験の乏しいエンジニアがコンフィグレーションを行う場合,あらかじめ先輩や上司から与えられたコンフィグレーション・テキストをベースに作業を行うことも多いだろう。この場合,タイプ・ミスなどのヒューマン・エラーを避けるため,テキストに記述されているコンフィグレーション・テキストをそのままコピー&ペースト(コピペ)して機器の入力画面に設定していく作業をよく見かける。
これは大変危険な行為だ。
作業の途中で機器が誤作動することも
全く同じシステム上で過去に検証テストをしたコンフィグレーションをそのままコピペする分には問題無いだろうが,全く同じシステムというのはめったにない(図)。ほぼ同じような環境で動作しているシステムのコンフィグレーションを参考にできるだけである。
図●全く同じシステムはない |
それぞれのシステムにはループバック・アドレスやIPアドレス,ポート,インタフェース・デバイス名,モジュール番号など,それぞれの固体特有のパラメータが存在する。コピペのような機械的な転写作業だと,修正しなければならない個所に気づきにくい。まして複数行を一度にコピペしてしまうと,入力ステートメントに順番による設定シーケンスの制限があれば,機器が誤動作を起こす場合がある。
最近のネットワーク機器はコンフィグレーション・ステートメントを入力してもすぐには動作に反映されず,最後にコミットすることによって初めて反映されるタイプもあるが,中にはステートメントごとのリターン・キー入力によって実際のコンフィグレーションに反映させてしまうタイプもある。複数行のコピペによるコンフィグレーション入力を行っていると,コピペの途中で機器が想定外の動作をしてしまう可能性もある。
例えば,あるルーターのコンフィグレーション操作はステートメントを1行分入力し,改行した時点で即反映される。アクセス・コントロール・リスト(ACL)をいったん削除し,新しいACLをコピペするとどうなるだろう。ACLとはパケットの条件(プロトコル,IPアドレス,ポート番号)とその条件に応じた振る舞い(許可,拒否)を記述したものである。
このシステムのACLリストは1行でもpermit(許可)文が記述されると,許可された条件以外のすべてのパケットがdeny(拒否)されるというルールである。最初の行にPermit文がコピペされた瞬間に,それ以外のすべてのコネクションがたちまち遮断されるという現象が起こるのだ。常識的に考えて,このように適用中のACLリストをコピペで変更するということを現在のオペレータが行うはずもないであろうが,コピペによるコンフィグレーションとはこのような危険をはらんでいることは認識しておくべきである。
問題個所の特定に影響
別のシステムのコンフィグレーション・テキストを参考にコンフィグレーション作業を行なう際には,機械的にコピペするのではなく,一文一文のステートメントを確認しながら入力するとよい。今まで気づかなかったステートメントのスペル・ミスやコンフィグレーション・バグなどを見つけることもあり得る。何よりステートメントを読みながら,手で入力していくことは正確なコンフィグレーション作業を習得する上でも有効である。
また,入力直後には起こらなかった問題が後に発生した場合,コンフィグレーションを手入力していると,問題となる個所が脳裏に浮かびやすいものである。また,従来,ステートメントの意味は不明であるが,経験的にそのステートメントを挿入するとうまく動作するという謎のステートメントがあり,一般的に「おまじない」と呼ばれていた。最近ではメーカーのサポートやネット上でのドキュメントにより,おまじないは少なくなってきたが,経験の少ないエンジニアにとってはほとんどのステートメントがおまじないであることには変わりは無い。コンフィグレーションをコピペするのではなく,一つひとつのステートメントの意味,記入法,機能,効果を理解していくためにも,手入力によってコンフィグレーション作業を行なうことが重要である。
システムのコンフィグレーションとは,オペレータが目で見て,声に出し,そして,手で一文字一文字入力することによって,正しいコンフィグレーションを習得できると同時にヒューマン・エラーを減らすことができるのだ。
|