CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
前回は、ネットワーク機器の状態モニタリングやログの一括収集といった、ネットワーク管理の効率化を実現する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("構成のバックアップとバージョン管理が完了しました。")
大規模なネットワーク環境では、デバイス情報(ホスト名、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に保存しました。")
今回は、ネットワーク運用に欠かせない「ネットワーク構成のバージョン管理」と「インベントリ管理」の2つのシナリオを紹介しました。
これらを活用すれば、ネットワーク運用の安定性が向上し、ヒューマンエラーのリスクを大幅に低減できます。
次回は、ネットワーク構成のコンプライアンスチェックやセキュリティ対策を自動化する方法について解説します。どうぞお楽しみに。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes