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

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

研修コース検索

コラム

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

CTC 教育サービス

 [IT研修]注目キーワード   Python  Power Platform  最新技術動向  生成AI  Docker  Kubernetes 

第30回 ネットワーク自動化実践レシピ(2) (小澤昌樹) 2025年2月

はじめに

みなさん、こんにちは。

前回は、ネットワーク機器の状態モニタリングやログの一括収集といった、ネットワーク管理の効率化を実現する2つの自動化レシピを紹介しました。NAPALMやnetmikoを活用した自動化の可能性をご理解いただけたのではないでしょうか。

今回は、ネットワーク構成のバージョン管理やExcelを活用したインベントリ管理に焦点を当てた自動化レシピを紹介しましょう。これらは、大規模なネットワークを一貫して管理し、ミスやトラブルを防ぐ上で欠かせない方法です。

ネットワーク構成変更のバージョン管理

ネットワーク運用において、デバイスの設定変更は日常的に発生します。しかし、変更履歴が管理されていないと、トラブル発生時の原因特定や復旧作業が困難になります。ここでは、NAPALMを使用してネットワーク構成を定期的に取得し、バージョン管理システム(Git)に保存する方法を紹介します。


import os
from napalm import get_network_driver
import subprocess
from datetime import datetime

# デバイス情報 devices = [ {’hostname’: ’192.168.1.1’, ’username’: ’admin’, ’password’: ’admin123’, ’platform’: ’ios’} ]
# バージョン管理ディレクトリ config_dir = "network_configs" os.makedirs(config_dir, exist_ok=True)
# 構成管理 for device_info in devices: driver = get_network_driver(device_info[’platform’]) device = driver(device_info[’hostname’], device_info[’username’], device_info[’password’]) device.open()
config = device.get_config() running_config = config[’running’]
filename = os.path.join(config_dir, f"{device_info[’hostname’]}_config_{datetime.now().strftime(’%Y%m%d%H%M%S’)}.cfg") with open(filename, ’w’) as f: f.write(running_config)
device.close()
# Gitにコミット subprocess.run(["git", "add", filename]) subprocess.run(["git", "commit", "-m", f"Update config for {device_info[’hostname’]}"])
print("構成のバックアップとバージョン管理が完了しました。")
  • NAPALMのget_config()メソッドを使用し、デバイスのランニング構成を取得します。
  • Gitによるバージョン管理を導入することで、いつどのように設定が変更されたのかを正確に把握できます。
  • 定期的にこのスクリプトを実行すれば、変更履歴を継続的に管理可能です。
Excelを活用したインベントリ管理

大規模なネットワーク環境では、デバイス情報(ホスト名、IPアドレス、シリアル番号、モデルなど)を一元管理することが重要です。ここでは、NAPALMとOpenPyXLを使って、ネットワーク機器の情報をExcelに記録する方法を紹介します。


import openpyxl
from napalm import get_network_driver
# デバイス情報
devices = [
    {’hostname’: ’192.168.1.1’, ’username’: ’admin’, ’password’: ’admin123’, ’platform’: ’ios’},
    {’hostname’: ’192.168.1.2’, ’username’: ’admin’, ’password’: ’admin123’, ’platform’: ’ios’}
]
# Excelファイル作成
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = "Inventory"
sheet.append(["Hostname", "IP Address", "Model", "OS Version", "Serial Number", "Uptime"])

# 情報収集 for device_info in devices: driver = get_network_driver(device_info[’platform’]) device = driver(device_info[’hostname’], device_info[’username’], device_info[’password’]) device.open()
facts = device.get_facts() sheet.append([ facts[’hostname’], device_info[’hostname’], facts[’model’], facts[’os_version’], facts[’serial_number’], facts[’uptime’] ])
device.close()
# Excel保存 wb.save("network_inventory.xlsx") print("network_inventory.xlsxに保存しました。")
  • NAPALMのget_facts()メソッドで、ネットワーク機器の基本情報を収集します。
  • OpenPyXLを活用 して、収集した情報をExcelファイルに記録します。
  • このExcelファイルを更新し続けることで、最新のネットワークインベントリを維持できます。
まとめ

今回は、ネットワーク運用に欠かせない「ネットワーク構成のバージョン管理」と「インベントリ管理」の2つのシナリオを紹介しました。

  • 構成のバージョン管理により、変更履歴を可視化してトラブル発生時の原因特定や迅速な復旧が可能になります。
  • インベントリ管理では、すべてのデバイス情報を一元的に管理することで、ネットワーク全体の可視性と管理効率を向上させることができます。

これらを活用すれば、ネットワーク運用の安定性が向上し、ヒューマンエラーのリスクを大幅に低減できます。

次回は、ネットワーク構成のコンプライアンスチェックやセキュリティ対策を自動化する方法について解説します。どうぞお楽しみに。

 

 [IT研修]注目キーワード   Python  Power Platform  最新技術動向  生成AI  Docker  Kubernetes