ネットワーク環境構築とネットワーク研修の現場が抱える「限界」
ネットワンパートナーズ株式会社の小堀泰樹氏は現在パートナー向けプリセールスをしているが、かつてはネットワークエンジニアでネットワーク環境構築作業に従事していた。「10年も15年も現場ではコマンドライン。手作業に頼って作業している。何も変わらない。このままではよくないと思いました」と述懐する。
基本的にネットワークエンジニアはコマンドラインから地味な作業を繰り返す。作業の流れは似ているものの、全く同じ環境はなく、現場ごとに手順が微妙に異なる。手作業なので、気をつけていてもミスは生じてしまう。ミスがあれば手戻りは大きく、痛い。運用フェーズでも近年では各種の運用監視ツールが登場し運用の自動化は進んでいるものの「トラブルが起きればエンジニアが経験に頼って1台ずつ機器にログインし力ずくで原因を探しているような運用体制がまだ多いのではないか」と小堀氏はネットワークエンジニアの厳しい実状を明かす。
西日本電信電話株式会社 芳政信氏は通信設備の維持管理業務のための研修プラットフォーム構築などを担当している。かつては自宅にスイッチを4台積み、独学に励んだという強者だ。さすがに自宅だとスイッチを一気に稼働すると「騒音でしかなかった」と苦笑いする。
アプリケーション開発と異なり、ネットワーク機器を勉強するとなると実機が必要になることが多い。自宅ではなく企業の研修環境だとしても「初期コストや設置場所の制限があります」と芳氏は言う。
近年ではネットワークプログラマビリティに関連した機能は充実し、自動化ツールも各種出ているものの「まだまだ敷居が高いようです」とシスコシステムズ合同会社 生田和正氏は言う。最新鋭技術を情報発信する人はいるものの、現場で構築や運用に携わる多くの方は日々の業務に忙殺されていて「ギャップが広がっている」と焦りを感じている。
ネットワーク環境構築や運用は何年も似たような状況が続いてきた。小堀氏は先述した課題意識について「どの手順も全く同じではないにしても、細分化すれば共通する要素はある。要素を組みあわせれば省力化ができるはず」と考えた。構築作業では、機器を導入した後に導通テストと呼ばれる確認作業もある。障害が起きた時を想定し、ケーブルを引き抜くなどして、経路が変更されるなど想定した動きになるか、前後でログを取得しての確認などを行う。
ネットワークの作業がコマンドではなくコーディングできるpyATS
こうした一連の作業を自動化するためのいい方法はないかと模索していたところ、小堀氏は「pyATS(パイエーティーエス)」にたどり着いた。pyATSはシスコが開発しているネットワーク自動化ツール。もともとはシスコ社内のテスト自動化フレームワークとして開発されてきたものだが、今ではPythonライブラリとして一般公開されており無料で使用することができる。
カナダにあるCisco Systems CanadaにてpyATSの開発に携わっている東村誉氏は「今では各方面からのコントリビューションのおかげで、シスコ製品だけではなく、他社製品でも使えるようにマルチベンダー化が進んでいます」と話す。
pyATSを駆使すれば、ネットワーク構築作業を自動化できるようになる。コマンドを手動で繰り出す作業に比べたら、かなり省力化が進む。コードで作業を記述できるようになれば省力化だけではなく、作業品質を均質化し、高めることも期待できる。
とはいえネットワークエンジニアにとってプログラミングは若干敷居が高い。小堀氏も最初は心配したようだがDevNetでの自己学習を始めて、ガイダンスに沿って進めてみると「プログラミングが分からないなりにもできそうだ」と勘づき、さらに「フレームワークに沿ってキーワードを並べればできる方法もある」と分かった。今では周囲やパートナーに「プログラミングが分からなくても大丈夫」と敷居の低さをアピールしている。
実際の構築現場では、構築作業の前後のログを取得し、差分確認までをpyATSで自動化することもできるそうだ。あるネットワークエンジニアは「これまで数時間かけていたログ取得や差分確認が30分で終わるようになりました。トラブルシューティングも時間短縮できています」と話しているそうだ。東村氏によると、数百台から数千台もデバイスがある大規模環境において、デバイスの検索や作業自動化にpyATSが使われているという。
pyATSはコマンドラインを使って主に作業するネットワークエンジニアには光明となる。pyATSについて学びたいなら王道はもちろんCisco DevNetだ。ラーニングラボなどいろいろな資料が提供されている。Qiitaにも多くの情報が掲載されている。小堀氏は「自分の業務に関係ないと学習意欲が続きません。よこしまかもしれませんが、自分の日ごろの業務を楽にするための情報を探してみるといいのでは」とアドバイスする。
芳氏はネットワークエンジニアがpyATSを学ぶメリットについて「ネットワーク機器を操作するためのコマンドはメーカーごとに微妙に異なりますが、pyATSを使えば抽象化されたモデルで設定できます。プログラミングの敷居があるように見えますが、ベンダー固有のコマンドという制限からも開放されます」と説明する。これは朗報ではないだろうか。