IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Pythonでネットワーク自動化をしよう

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第20回 NAPALMライブラリ (小澤昌樹) 2024年4月

1. はじめに

みなさん、こんにちは。

前回は、ネットワーク自動化に利用できるライブラリの1つであるnetmikoライブラリについて説明しました。netmikoはSSHやTelnetを通じてネットワークデバイスに接続し、設定変更や操作を自動化するライブラリでしたね。netmikoを使用すると、ベンダーに依存しない管理が可能になります。

さて、今回は、NAPALMライブラリを取り上げましょう。NAPALMもネットワーク自動化に使えるPythonライブラリです。

2. NAPALMライブラリ

NAPALMは、「Network Automation and Programmability Abstraction Layer with Multivendor support」の頭文字を取ったもので、さまざまなネットワーク機器やOSに対応したAPIを提供しているPythonライブラリです。Cisco、Juniper、Aristaなど、異なるベンダーのネットワーク機器を統一的に管理でき、自動化することが可能です。具体的には、設定の取得や変更、状態の取得、構成の比較といった作業を簡単に行なえるような設計がされています。これによって、ネットワークエンジニアはマルチベンダー環境における作業効率を大幅に向上させることができます。

NAPALMには、ネットワーク自動化を通じて、異なるベンダーの機器間での操作の一貫性を確保するといった設計思想があります。従来、ネットワークエンジニアは、特定ベンダーのCLIやAPIに精通している必要がありました。そのため、異なるベンダーの機器を管理するには、それぞれの機器に搭載されている特有のコマンドや操作方法を学ぶ必要がありました。これは、マルチベンダー環境でのネットワーク管理を複雑にし、効率性を低下させる要因となっていました。

NAPALMがサポートする各ベンダーには、専用のドライバが用意されています。これらのドライバは、ベンダー固有のAPIやCLIコマンドを抽象化し、NAPALMの統一されたAPIを通じてアクセスできるようにすることで、マルチベンダー環境でのネットワーク自動化を実現しています。

NAPALMの使い所には、以下のようなケースがあります。

  1. マルチベンダーネットワーク環境の管理:異なるベンダーのネットワーク機器を統一的なインターフェースで操作する必要がある場合、さまざまなデバイスに対応したAPIが提供されています。
  2. ネットワーク構成の自動化:ネットワーク構成の変更や更新のような繰り返し行なう作業を自動化することで、手作業によるエラーを減らし、効率を大幅に向上させることができます。
  3. 構成のバックアップと復元:ネットワーク機器の構成を定期的にバックアップし、問題が発生した場合に迅速に復元できるようにします。
  4. 構成の差分比較:現在の構成とバックアップされた構成との間で差分を比較し、予期せぬ変更や非同期な構成の存在有無を特定します。
  5. 状態監視とレポート:ネットワークデバイスの状態やパフォーマンスデータを取得し、運用の可視化や問題解析に役立てます。
  6. コンプライアンスチェック:ネットワーク構成がポリシーや規格に準拠しているかどうかを自動的にチェックします。
  7. ネットワークの変更管理:構成の変更をプログラム的に適用し、変更前後の状態を自動的に記録します。

なお、NAPALMの公式サイトにて、NAPALMのインストール方法、使用方法、サポートされているデバイスなどの情報が提供されています。

3. NAPALMライブラリの使い方

NAPALMを使用する一般的な手順と、その使い方の例は、以下です。

NAPALMのインストール

NAPALMは、サードパーティ製ライブラリなので、pipを使用してインストールします。以下のコマンドをコマンドラインで実行してください。ここで、指定する「napalm」はすべて小文字です。


$ pip install napalm
NAPALMのインポート

>>> from napalm import get_network_driver

NAPALMライブラリから、get_network_driver関数をインポートします。この関数は、指定されたネットワーク機器のドライバを取得するために使用されます。

ドライバの取得

>>> driver = get_network_driver(’ios’)

NAPALMは複数のネットワーク機器ベンダーをサポートしているので、使用するネットワーク機器に合わせて、適切なドライバを選択します。例えば、CiscoのIOSを操作する場合は「ios」、JuniperのJunosを操作する場合は「junos」、AristaのEOSを操作する場合は「eos」となります。

ここでは、get_network_driver関数に「ios」を引数として渡すことで、CiscoのIOSデバイスを操作するためのドライバを取得しています。

デバイスへの接続設定

>>> device = driver(hostname=’192.168.1.1’, username=’admin’, password=’admin’, optional_args={’secret’: ’secret’})

取得したドライバを使用して、デバイスへの接続設定を行います。ここでは、デバイスのIPアドレス、ユーザー名、パスワード、および追加の引数を指定しています。optional_args に渡される secret は、特権モードにアクセスするためのパスワードなど、デバイスによって必要とされる追加情報を含めます。

デバイスへの接続

>>> device.open()

open() メソッドを呼び出すことで、ネットワーク機器に接続します。

設定の取得

>>> config = device.get_config()

接続が確立された後、get_config()メソッドを使用してデバイスの設定を取得します。このメソッドは、デバイスの「実行中の設定(running)」および「起動時の設定(startup)」を含む辞書を返します。

設定の表示

>>> print(config[’running’])

取得した設定の中から「実行中の設定(running)」を選択し、それを表示しています。

デバイスとの接続を閉じる

>>> device.close()

最後に、close()メソッドを呼び出してデバイスとの接続を正しく閉じます。これにより、セッションが終了し、リソースが解放されます。

4. まとめ

今回も、ネットワーク自動化に役立つライブラリの一つであるNAPALMを紹介しました。

さて、今回まで、ネットワーク機器を操作するライブラリについて説明してきましたが、次回は少し視点を変えて、エクセルファイルを操作するためのOpenPyXLライブラリについて説明していきたいと思います。OpenPyXLライブラリは、Pythonからエクセルを直接操作するためのライブラリです。次回はその基本的な使い方を紹介し、さらにその応用例も示していきたいと考えています。次回もお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes