これまでスイッチなどのネットワーク機器の管理・運用は、CLIを使った管理者の人手に頼ってきた。しかし最近のスイッチ製品は管理用に様々なAPIを搭載しており、それを活用した管理の自動化が現場で導入されつつある。今回は、APIを使ったスイッチ管理の自動化を取り上げる。

現状のスイッチ管理の課題

 現在の一般的な管理手法であるCLIにはいくつかの課題がある。

 一つは、通常CLIは人間が見やすいように加工した状態で結果を出力するため、利用したい形式で出力するには正規表現や複雑な文字操作を駆使する必要があり、手間がかかる点だ(図1)。また、CLIの出力を基に作成したプログラムは多くの場合、作成した個人しか利用方法を知らないため、他の人がプログラムを再利用することが難しい。さらにベンダーによってCLIが異なるなどの理由で、一元管理が困難という課題もある。

図1 CLIによるスイッチ管理の問題点
これまでスイッチなどのネットワーク機器の操作にはCLI(Command Line Interface)を使うのが一般的だったが、様々な課題もあった。
[画像のクリックで拡大表示]

 これらの課題を解消し、一元管理する仕組みを提供するのがAPIだ。APIによりベンダーの違いを意識することなく機器を運用できる。さらに、API経由で他のシステムと連携させることにより、柔軟で拡張性の高いシステム構築が可能となる。

スイッチ管理向けの主なAPI

 ネットワーク機器管理のための代表的なAPIとして、NETCONF(ネットコンフ)、Ansible(アンシブル)、REST(レスト)APIが挙げられる。米シスコシステムズ、米ジュニパーネットワークス、米アリスタネットワークスの各APIへの対応状況をまとめた(表1)。

表1 スイッチ向けAPIへの対応状況
シスコシステムズのスイッチ製品はCatalystシリーズ、NexusシリーズともにREST APIに対応していない。
[画像のクリックで拡大表示]

 NETCONFはネットワーク機器の設定の確認・変更を行うためのプロトコルである。

 Ansibleはもともと米レッドハットが開発したツールである。サーバーの構成管理に使用されることが多いが、最新のネットワーク機器では対応製品が増えている

 REST APIはWeb APIの一種であり、従来のネットワーク機器ではあまり一般的ではなかった。こちらも最新のネットワーク機器で対応製品が増えてきている。

 これら3種類のAPIについて、順に見ていこう。

多くの製品が備えるNETCONF

 NETCONFはRFCとして標準化が行われている規格であり、RFC 6241が最新の仕様である。NETCONFはクライアントサーバーモデルを採用しており、サーバー(エージェント)がネットワーク機器、クライアント(マネージャー)がパソコンとなる。エージェントとマネージャーはメッセージをXMLでやり取りする。SSHを使って通信を暗号化するため安全である。また、設定のロールバックを行うことができるため、運用中にミスが生じた場合もすぐに復旧できるのが強みである。

 NETCONFを利用する場合、何らかのプログラミング言語でプログラムを作成し動作させる必要がある。NETCONFをPython(パイソン)で動作させた例を示す(図2)。スイッチ上で動作している設定を取得してくるだけの簡単なコードである。この中にはCLIで普段利用しているコマンド類は一切出てこない。

図2 NETCONFで設定情報を取得するサンプルコードと出力結果の例
NETCONFで設定情報(Confi guration)を取得するサンプルコード(Python)と、それを実行した出力結果の例を示した。一部の行は長いため折り返してある。
[画像のクリックで拡大表示]

 取得できる結果も普段見ているものとは異なる。XML形式で取得できるためプログラムで処理しやすい。取得した情報を基に自動化など新たな処理に利用できる。現在のスイッチ製品はほぼ対応しているため、スイッチ管理向けのAPIとして最も汎用的だといえる。

この先は有料会員の登録が必要です。「日経NETWORK」定期購読者もログインしてお読みいただけます。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら