これまでスイッチなどのネットワーク機器の管理・運用は、CLI▼を使った管理者の人手に頼ってきた。しかし最近のスイッチ製品は管理用に様々なAPI▼を搭載しており、それを活用した管理の自動化が現場で導入されつつある。今回は、APIを使ったスイッチ管理の自動化を取り上げる。
現状のスイッチ管理の課題
現在の一般的な管理手法であるCLIにはいくつかの課題がある。
一つは、通常CLIは人間が見やすいように加工した状態で結果を出力するため、利用したい形式で出力するには正規表現や複雑な文字操作を駆使する必要があり、手間がかかる点だ(図1)。また、CLIの出力を基に作成したプログラムは多くの場合、作成した個人しか利用方法を知らないため、他の人がプログラムを再利用することが難しい。さらにベンダーによってCLIが異なるなどの理由で、一元管理が困難という課題もある。
これらの課題を解消し、一元管理する仕組みを提供するのがAPIだ。APIによりベンダーの違いを意識することなく機器を運用できる。さらに、API経由で他のシステムと連携させることにより、柔軟で拡張性の高いシステム構築が可能となる。
スイッチ管理向けの主なAPI
ネットワーク機器管理のための代表的なAPIとして、NETCONF▼(ネットコンフ)、Ansible(アンシブル)、REST▼(レスト)APIが挙げられる。米シスコシステムズ、米ジュニパーネットワークス、米アリスタネットワークスの各APIへの対応状況をまとめた(表1)。
NETCONFはネットワーク機器の設定の確認・変更を行うためのプロトコルである。
Ansibleはもともと米レッドハットが開発したツールである。サーバーの構成管理に使用されることが多いが、最新のネットワーク機器では対応製品が増えている▼。
REST APIはWeb APIの一種であり、従来のネットワーク機器ではあまり一般的ではなかった。こちらも最新のネットワーク機器で対応製品が増えてきている。
これら3種類のAPIについて、順に見ていこう。
多くの製品が備えるNETCONF
NETCONFはRFC▼として標準化が行われている規格であり、RFC 6241が最新の仕様である。NETCONFはクライアントサーバーモデルを採用しており、サーバー(エージェント)がネットワーク機器、クライアント(マネージャー)がパソコンとなる。エージェントとマネージャーはメッセージをXML▼でやり取りする。SSH▼を使って通信を暗号化するため安全である。また、設定のロールバック▼を行うことができるため、運用中にミスが生じた場合もすぐに復旧できるのが強みである。
NETCONFを利用する場合、何らかのプログラミング言語でプログラムを作成し動作させる必要がある。NETCONFをPython(パイソン)で動作させた例を示す(図2)。スイッチ上で動作している設定を取得してくるだけの簡単なコードである。この中にはCLIで普段利用しているコマンド類は一切出てこない。
取得できる結果も普段見ているものとは異なる。XML形式で取得できるためプログラムで処理しやすい。取得した情報を基に自動化など新たな処理に利用できる。現在のスイッチ製品はほぼ対応しているため、スイッチ管理向けのAPIとして最も汎用的だといえる。