CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさん、こんにちは。
前回は、ネットワーク自動化に利用できるライブラリの1つであるnetmikoライブラリについて説明しました。netmikoはSSHやTelnetを通じてネットワークデバイスに接続し、設定変更や操作を自動化するライブラリでしたね。netmikoを使用すると、ベンダーに依存しない管理が可能になります。
さて、今回は、NAPALMライブラリを取り上げましょう。NAPALMもネットワーク自動化に使えるPythonライブラリです。
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の使い所には、以下のようなケースがあります。
なお、NAPALMの公式サイトにて、NAPALMのインストール方法、使用方法、サポートされているデバイスなどの情報が提供されています。
NAPALMを使用する一般的な手順と、その使い方の例は、以下です。
NAPALMは、サードパーティ製ライブラリなので、pipを使用してインストールします。以下のコマンドをコマンドラインで実行してください。ここで、指定する「napalm」はすべて小文字です。
$ pip install 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()メソッドを呼び出してデバイスとの接続を正しく閉じます。これにより、セッションが終了し、リソースが解放されます。
今回も、ネットワーク自動化に役立つライブラリの一つであるNAPALMを紹介しました。
さて、今回まで、ネットワーク機器を操作するライブラリについて説明してきましたが、次回は少し視点を変えて、エクセルファイルを操作するためのOpenPyXLライブラリについて説明していきたいと思います。OpenPyXLライブラリは、Pythonからエクセルを直接操作するためのライブラリです。次回はその基本的な使い方を紹介し、さらにその応用例も示していきたいと考えています。次回もお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes