ネットワーク環境構築とネットワーク研修の現場が抱える「限界」
ネットワンパートナーズ株式会社の小堀泰樹氏は現在パートナー向けプリセールスをしているが、かつてはネットワークエンジニアでネットワーク環境構築作業に従事していた。「10年も15年も現場ではコマンドライン。手作業に頼って作業している。何も変わらない。このままではよくないと思いました」と述懐する。
基本的にネットワークエンジニアはコマンドラインから地味な作業を繰り返す。作業の流れは似ているものの、全く同じ環境はなく、現場ごとに手順が微妙に異なる。手作業なので、気をつけていてもミスは生じてしまう。ミスがあれば手戻りは大きく、痛い。運用フェーズでも近年では各種の運用監視ツールが登場し運用の自動化は進んでいるものの「トラブルが起きればエンジニアが経験に頼って1台ずつ機器にログインし力ずくで原因を探しているような運用体制がまだ多いのではないか」と小堀氏はネットワークエンジニアの厳しい実状を明かす。
西日本電信電話株式会社 芳政信氏は通信設備の維持管理業務のための研修プラットフォーム構築などを担当している。かつては自宅にスイッチを4台積み、独学に励んだという強者だ。さすがに自宅だとスイッチを一気に稼働すると「騒音でしかなかった」と苦笑いする。
アプリケーション開発と異なり、ネットワーク機器を勉強するとなると実機が必要になることが多い。自宅ではなく企業の研修環境だとしても「初期コストや設置場所の制限があります」と芳氏は言う。
近年ではネットワークプログラマビリティに関連した機能は充実し、自動化ツールも各種出ているものの「まだまだ敷居が高いようです」とシスコシステムズ合同会社 生田和正氏は言う。最新鋭技術を情報発信する人はいるものの、現場で構築や運用に携わる多くの方は日々の業務に忙殺されていて「ギャップが広がっている」と焦りを感じている。
ネットワーク環境構築や運用は何年も似たような状況が続いてきた。小堀氏は先述した課題意識について「どの手順も全く同じではないにしても、細分化すれば共通する要素はある。要素を組みあわせれば省力化ができるはず」と考えた。構築作業では、機器を導入した後に導通テストと呼ばれる確認作業もある。障害が起きた時を想定し、ケーブルを引き抜くなどして、経路が変更されるなど想定した動きになるか、前後でログを取得しての確認などを行う。
ネットワークの作業がコマンドではなくコーディングできるpyATS
こうした一連の作業を自動化するためのいい方法はないかと模索していたところ、小堀氏は「pyATS(パイエーティーエス)」にたどり着いた。pyATSはシスコが開発しているネットワーク自動化ツール。もともとはシスコ社内のテスト自動化フレームワークとして開発されてきたものだが、今ではPythonライブラリとして一般公開されており無料で使用することができる。
カナダにあるCisco Systems CanadaにてpyATSの開発に携わっている東村誉氏は「今では各方面からのコントリビューションのおかげで、シスコ製品だけではなく、他社製品でも使えるようにマルチベンダー化が進んでいます」と話す。
pyATSを駆使すれば、ネットワーク構築作業を自動化できるようになる。コマンドを手動で繰り出す作業に比べたら、かなり省力化が進む。コードで作業を記述できるようになれば省力化だけではなく、作業品質を均質化し、高めることも期待できる。
とはいえネットワークエンジニアにとってプログラミングは若干敷居が高い。小堀氏も最初は心配したようだがDevNetでの自己学習を始めて、ガイダンスに沿って進めてみると「プログラミングが分からないなりにもできそうだ」と勘づき、さらに「フレームワークに沿ってキーワードを並べればできる方法もある」と分かった。今では周囲やパートナーに「プログラミングが分からなくても大丈夫」と敷居の低さをアピールしている。
実際の構築現場では、構築作業の前後のログを取得し、差分確認までをpyATSで自動化することもできるそうだ。あるネットワークエンジニアは「これまで数時間かけていたログ取得や差分確認が30分で終わるようになりました。トラブルシューティングも時間短縮できています」と話しているそうだ。東村氏によると、数百台から数千台もデバイスがある大規模環境において、デバイスの検索や作業自動化にpyATSが使われているという。
pyATSはコマンドラインを使って主に作業するネットワークエンジニアには光明となる。pyATSについて学びたいなら王道はもちろんCisco DevNetだ。ラーニングラボなどいろいろな資料が提供されている。Qiitaにも多くの情報が掲載されている。小堀氏は「自分の業務に関係ないと学習意欲が続きません。よこしまかもしれませんが、自分の日ごろの業務を楽にするための情報を探してみるといいのでは」とアドバイスする。
芳氏はネットワークエンジニアがpyATSを学ぶメリットについて「ネットワーク機器を操作するためのコマンドはメーカーごとに微妙に異なりますが、pyATSを使えば抽象化されたモデルで設定できます。プログラミングの敷居があるように見えますが、ベンダー固有のコマンドという制限からも開放されます」と説明する。これは朗報ではないだろうか。
ネットワーク機器を仮想環境でシミュレートできるCML
ネットワークを扱うにあたり、pyATSと並んで覚えておきたいのが「Cisco Modeling Labs(CML)」、仮想的にネットワーク環境を構成するソフトウェアプラットフォームだ。かつてはVIRLと呼ばれていた。CMLは仮想環境でネットワーク機器のソフトウェアを実際に起動し、自由にトポロジーが構築できる。生田氏は「昔からシミュレーターはありましたが、操作練習用に環境を擬似的に模したようなものが中心でした。CMLはエミュレーターなので、いわば本物です。シスコジャパンのブログではCML(VIRL)記事のアクセス数は常に多く、いいねがつく割合も高くて好評です」とCMLを強く推す。
CMLは研修でも役立っている。研修で実機演習しようとすると、企業研修でもハードウェアを用意できる範囲は限られてしまう。ところがCMLを使えばその制限は払拭できてしまう。芳氏は「これまでは3台を2人で共有するなどしていましたが、CMLがあれば1人に10~20台を使う環境でもすぐに構築できます。どこでも質の高いトレーニングができます」と話す。
芳氏が構築した研修プラットフォームでは、受講者のアカウントを結びつけるとCMLが使えるように構築した。研修コンテンツには従来のスライド形式や動画形式に加えて、テスト形式で達成度や理解度の成果測定もできるようになっているという。受講生はテキストや動画を見ながら、CMLを使いコマンドを打つこともできる。かなり実践的でスキル習得に役立ちそうだ。
なおこの研修プラットフォームはコロナ禍前に構築したそうだ。自宅待機要請で研修もオンライン化が必須となったため、芳氏は「コロナ禍前に構築できてよかったです。タイムリーでした」と胸をなで下ろしている。何よりもハードウェアを用意する初期コストが抑えられることは大きい。
NetDevOpsが目指すものとは? 実現の鍵となりそうなのがpyATSやCML
生粋のネットワークエンジニアではなく、「ネットワークは詳しくないけど、ちょっと興味ある」と考えているアプリケーション開発者に向けて生田氏は次のようにアドバイスする。「CMLは外部のネットワークともつなぐことができますので、自分のネットワークやサーバーとつなげることで、ネットワークとアプリケーションをいろんな視点で見たり、組み合わせてデモを作り込んだりすることもできますよ」
アプリケーション開発者にとってネットワークはレイヤが違うものと考えがちだが、ネットワークの存在なしにアプリケーションを動かすことはできない。今では「DevOps」が浸透してきたが、これからはネットワークも加わり「NetDevOps」が注目されつつある。アプリケーション開発者とインフラの運用者が連携するDevOpsにネットワーク技術を加え、さらなる最適化や高度化へと進んでいる。
小堀氏は「昔、先輩から『運用者が楽になるようなネットワーク構築をするように』と教わっていました。DevOpsの運用(Ops)サイクルには、ネットワーク構築も含まれます。NetDevOpsはすぐには実践できないとしても、目指すものとして意識すべきだと思います。現場で作業するネットワークエンジニアは事前に仮想環境で確認できることは仮想環境ですませたほうが現場での不安は少なくなります」と話す。
NetDevOpsを実現するにあたり、欠かせないのがpyATSやCMLとなるだろう。生田氏は「pyATSやCMLは単体でも価値がありますが、真骨頂は組みあわせることです」と話す。ネットワーク構築は最終的には物理環境と向き合うことが必要になるものの、事前シミュレーションではCMLが大いに役に立つ。CMLで実環境をシミュレーションし、pyATSでのテストがOKであれば、物理環境に各種ツールでデプロイするといったこともできる。これはアプリケーション開発のCI/CDをネットワーク構築でやっているような感覚といえよう。
そしてpyATSやCMLはネットワークエンジニアにとってそんなに難しいものではない。日本の大学生が3カ月のインターン期間にpyATS、CML、GitLabを組みあわせたプロトタイプを構築したという。とてもよくできていたので後にグローバルイベントで発表したそうだ。敷居はそんなに高くはない。ネットワークの知識があるネットワークエンジニアなら、学んでおいて決して無駄にはならないはずだ。東村氏は「まだネットワーク自動化は成熟していないのが実状です。CMLのバーチャルルーターとpyATSを組み合わせれば自動化を進めていくことができます」と期待を語る。
ネットワークエンジニアが実際に作業する現場は複雑だ。事前にシミュレーションをしたとしても、現場ではいろんなことが起こるだろう。だからこそ、シミュレーションで分かる範囲のことは把握しておいて、自動化も進めておいたほうが安心だ。まだいろんなツールが進化する過程でもあるので生田氏は「技術者はフラットに評価し、現場作業で足りない穴を埋められるように適材適所でツールを取捨選択してくといいと思います」と実直に語った。