これまで機器が持つ機能やパッケージツールを使った自動化を説明しました。今回は、より柔軟な運用要件に対応するために、スクリプト言語であるPythonを使った自動化を紹介します。

 「ネットワークを自動化するには結局プログラミングが必要なのか」と思われた方、少し待ってください。たしかに自動化を考えるうえで、プログラミングの知識や経験があるに越したことはありません。しかし、最近ではライブラリが充実しているため、導入の障壁は低くなっています。コードを少し書くだけでかなりのことができます。まずはライブラリだけを使って、気軽にPythonと付き合い始めればいいのです。

 車の自動化と同様に、ネットワーク自動化をいきなり完全自動化のレベルまで持っていくことは困難です。まず運用の一部にスクリプトを導入するなど、やりやすいところから自動化に着手し、徐々にその割合を増やしていくアプローチが現実的です。今回は、ネットワークエンジニアの視点からPythonを紹介し、自動化の第一歩としてスクリプトを使った運用支援を紹介します。

ネットワークエンジニアから見たPython

 Pythonは、多様な機能を備えたオープンソースのプログラミング言語です。現在では、次のような用途に使われています。

  • Webプログラミング
  • ITシステム管理
  • 数値計算
  • Officeや3Dグラフィックなどのソフトウエアのマクロ言語
  • 機械学習 など

 世界中のエンジニアがPython向けに多様で充実したライブラリを開発しています。使いたい機能が既存のライブラリにない場合でも、C言語などを使って機能を追加できます。

 Pythonは書きやすく読みやすい言語です。ただし、あくまでプログラミング言語なので、使いこなすにはある程度のプログラミングスキルが必要になります。幸いなことに、最近はPython関連の書籍やオンライントレーニングが充実しており、学習環境が整ってきました。有志でPythonを学習する勉強会も多く開かれています。

 中にはプログラミングに抵抗を感じる方がいるかもしれません。しかし、ネットワークエンジニアが必ずしもプログラマになる必要はありません。ユーザーとしてライブラリを使う方法を覚えるだけでよいのです。

 ネットワーク運用のある部分を自動化するには、一般に複数の実現方法があります。前回紹介したAnsibleも、コンフィグ生成から適用、情報の取得といった運用フェーズをカバーする機能を持っています。ではどのような場合にPythonを選択するのが適切なのでしょうか?