
こんにちは、穂苅智哉と申します。
このコラムでは主に、Pythonを使ったネットワークの自動化をしたいというエンジニアの方向けに、Pythonとネットワークの自動化についての最新情報やPythonとネットワークの自動化基礎検定に関する内容を取り上げていきます。
「Pythonでネットワークを自動化できるって言われたけど、何から始めたらいいかわからない」
そう感じているネットワークエンジニアの方は、きっと少なくないはずです。実際、ルーティングやスイッチング、設定変更など日々の業務は、いまだに手作業が多くを占めています。しかし、手動作業はミスを生み、作業時間もコストもかかることも事実です。それを解決する手段として注目されているのが、「Pythonによるネットワーク自動化」です。
なぜPythonが選ばれるのか?
まず前提として、「なぜPythonなのか?」という点について触れておきます。
Pythonは「可読性が高く」「学習コストが低い」「豊富なライブラリが揃っている」という特長を持っており、プログラミング初心者にもやさしい言語です。加えて、ネットワーク機器ベンダー各社(Cisco、Juniperなど)も、Pythonによる操作に対応したAPIやSDKを提供しており、インフラ領域での自動化言語として定番になっています。
代表的なネットワーク自動化ライブラリ4選
■ netmiko:CLI操作の自動化に最適
netmikoは、CiscoやJuniperなど多くのネットワーク機器にSSHで接続し、コマンドを実行できるライブラリです。たとえば、数十台のルーターに対して一括で設定変更をしたいとき、for文で一気に処理できます。
以下は、公式ドキュメントに記載されているサンプルのスクリプトですが、おおよそのイメージは掴めると思います。
from netmiko import ConnectHandler
device = {
‘device_type’: ‘cisco_ios’,
‘host’: ‘192.0.2.1’,
‘username’: ‘admin’,
‘password’: ‘password’,
}
net_connect = ConnectHandler(**device)
output = net_connect.send_command(‘show ip int brief’)print(output)
(参考:netmiko)
CLI操作に慣れているネットワークエンジニアなら、すぐに応用できるはずです。
■ NAPALM:マルチベンダー対応の抽象化ライブラリ
NAPALMは「Network Automation and Programmability Abstraction Layer with Multivendorsupport」の略で、機器ごとのCLI差異を吸収し、統一的なインターフェースでネットワーク機器を操作できます。
「CiscoでもJuniperでも同じコードで設定取得・変更したい」というときに力を発揮します。設定の差分取得やロールバック機能なども備えており、運用の信頼性が高まります。
(参考:NAPALM)
■ paramiko:より自由度の高いSSH操作
NetmikoのベースにもなっているParamikoは、PythonでSSH通信を扱える低レベルライブラリです。
自動化の幅は広いですが、接続やセッション管理を自分で制御する必要があるため、柔軟性と引き換えにやや玄人向けと言われます。
自動バックアップやログ取得など、「自由度重視の自動化」に向いています。
(参考:paramiko)
■ PySNMP:SNMPを使った情報収集
SNMPベースで機器情報を取得・管理したいときには、PySNMPが便利です。たとえば、トラフィックの監視や状態監視に活用できます。
GUI監視ツールと連携したバックエンド処理や、障害検知の自動対応にもつなげられます。(参考:pysnmp)
自動化は「コードを書く」より「手間を減らす」ためにある
ここまでいくつかのライブラリを紹介してきましたが、共通して言えるのは「繰り返し作業を自動化する」ことに特化しているという点です。Pythonで一度スクリプトを作れば、設定変更、監視、バックアップなど多くのタスクが「ボタン1つで完了する世界」が待っています。
自動化は魔法ではありません。しかし、正しく使えば、これまで数時間かかっていた作業が、数分、数秒で終わることも可能です。
Pythonを使ったネットワーク自動化のスキルを身につけるためには、体系的な学習と実践が必要です。そこでおすすめなのが、「Pythonとネットワークの自動化基礎検定」です。この検定は、Pythonを用いたネットワーク自動化の基礎から応用までを体系的に学ぶための認定試験です。受験することで、実務に役立つスキルを身につけることができ、キャリアアップにもつながります。
この検定試験は、主に配属前から配属3年目程度のネットワークエンジニアで、ネットワーク自動化の構築・運用を担当する方が自分の知識を試していただくものになっていますので、基礎部分の理解がしっかりできているかどうかを確認するためにおすすめです。
ご興味のある方は、ぜひこちらのページもご覧ください。
https://network-engineer.jp/pynet_basic
Pythonとネットワークの自動化基礎検定では、合格体験記を合格者の方に頂いております。これから試
験を受験されたいと思っている方はぜひ参考にしてみてください。