インフラエンジニアの隙間時間 Infrastructure Engineer's Spare Time

2026.05.11

【ネットワーク】[RESTCONF]RESTCONFを使ってvlanインターフェースをまとめてに作る

やりたいこと

NWを構築する際にめんどくさいのが、インターフェースの作成だと思う。
しかもルールもGi1.(VLAN-ID)でIPも10.10.(VLAN-ID).0/24とかが多いと思う。
これをRESTCONFを使ってまとめて作成してみる。

作ってみる。

今回は、ループしてまとめて10個くらい作成してみたいので、クラスを作成してやってみる。
ルータ一台しか設定しないので、こんな感じ。
self.interfaces_url については、YANGモデルに従っていて、Ciscoではこんな感じになるらしい。
詳細は分からないので、知りたい人は、
https://tex2e.github.io/rfc-translater/html/rfc8040.html#3-3-1--restconfdata
とか
https://github.com/YangModels/yang/tree/main/vendor/cisco/xe
とか見てみてください。
self.headersについては、JSON形式でやり取りするよ的なことが書いてあると想定。呪文です。

そんな感じで、メソッドを作成していく。
作るメソッドは、インターフェース確認用get_intとインターフェース設定用put_int、設定値間違いないか確認する用check_dataの三つを作ってみた。
check_data
は設定値確認したいからputしないで作成したJSONをreturnしてもらうだけ。


import requests
import json
class interfaces:
    def __init__(self):
        self.HOST = '192.168.1.36'
        self.USER = 'admin'
        self.PS = 'admin'
        self.PORT = 443
        self.interfaces_url = f"https://{self.HOST}:443/restconf/data/Cisco-IOS-XE-native:native/interface/"
        self.headers = {'Content-Type': 'application/yang-data+json', 'Accept': 'application/yang-data+json'}
    def get_int(self):
        response = requests.get(self.interfaces_url, auth=(self.USER, self.PS), headers=self.headers, verify=False)
        return response
    
    def put_int(self, int, vlan):
        ip_num = f"10.10.{vlan}.1"
        vlan_int_url = f"https://{self.HOST}:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2.{vlan}"
        body_data = {
            "GigabitEthernet": {
                "name": int,
                "encapsulation":{
                    "dot1Q":{
                        "vlan-id":str(vlan)
                    }
                },
                "ip": {
                    "address": {
                    "primary": {
                        "address": str(ip_num),
                        "mask": "255.255.255.0"
                        }
                    }
                },
            }
        }
        response = requests.put(vlan_int_url, auth=(self.USER, self.PS), headers=self.headers, data=json.dumps(body_data), verify=False)
        return response
    def check_data(self, int, vlan):
        ip_num = f"10.10.{vlan}.1"
        vlan_int_uri = f"https://{self.HOST}:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2.{vlan}"
        body_data = {
            "GigabitEthernet": {
                "name": int,
                "encapsulation":{
                    "dot1Q":{
                        "vlan-id":str(vlan)
                    }
                },
                "ip": {
                    "address": {
                    "primary": {
                        "address": ip_num,
                        "mask": "255.255.255.0"
                        }
                    }
                },
            }
        }
        return ip_num, vlan_int_url, body_data

とりあえず、ちゃんと設定できそうか確認してみる。
適当な感じで実行!


def set_int():
    for i in range(100105):
        int_data = interfaces()
        int_num = f"2.{i}"
        print(int_data.check_data(int_num, i))
set_int()

ちゃんと設定値入ってそう。
なんか行けそうなので


('10.10.100.1', 'https://192.168.1.36:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2.100', {'GigabitEthernet': {'name': '2.100', 'encapsulation': {'dot1Q': {'vlan-id': '100'}}, 'ip': {'address': {'primary': {'address': '10.10.100.1', 'mask': '255.255.255.0'}}}}})
('10.10.101.1', 'https://192.168.1.36:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2.101', {'GigabitEthernet': {'name': '2.101', 'encapsulation': {'dot1Q': {'vlan-id': '101'}}, 'ip': {'address': {'primary': {'address': '10.10.101.1', 'mask': '255.255.255.0'}}}}})
('10.10.102.1', 'https://192.168.1.36:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2.102', {'GigabitEthernet': {'name': '2.102', 'encapsulation': {'dot1Q': {'vlan-id': '102'}}, 'ip': {'address': {'primary': {'address': '10.10.102.1', 'mask': '255.255.255.0'}}}}})
('10.10.103.1', 'https://192.168.1.36:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2.103', {'GigabitEthernet': {'name': '2.103', 'encapsulation': {'dot1Q': {'vlan-id': '103'}}, 'ip': {'address': {'primary': {'address': '10.10.103.1', 'mask': '255.255.255.0'}}}}})
('10.10.104.1', 'https://192.168.1.36:443/restconf/data/Cisco-IOS-XE-native:native/interface/GigabitEthernet=2.104', {'GigabitEthernet': {'name': '2.104', 'encapsulation': {'dot1Q': {'vlan-id': '104'}}, 'ip': {'address': {'primary': {'address': '10.10.104.1', 'mask': '255.255.255.0'}}}}})

check_data1をコメントアウトして、put_intを実行。


def set_int():
    for i in range(100105):
        int_data = interfaces()
        int_num = f"2.{i}"
        # print(int_data.check_data(int_num, i))
        int_data.put_int(int_num, i)

ちゃんと作成できてた!こうやってうまく動いてくれると嬉しいですね!


GigabitEthernet2.100   10.10.100.1     YES other  down                  down    
GigabitEthernet2.101   10.10.101.1     YES other  down                  down    
GigabitEthernet2.102   10.10.102.1     YES other  down                  down    
GigabitEthernet2.103   10.10.103.1     YES other  down                  down    
GigabitEthernet2.104   10.10.104.1     YES other  down                  down

最後に

最近は自動化見たいなところに手を出してますが、同じNWの分野なのに全くわからないです。
英語しか情報がないので読むのつらいです。
でも以外と面白いです。
面白すぎてインターフェース作りすぎるくらい面白いです。
IPアドレスのせいで255個しか作れないことを今知りました。

以上です。


RT1#show ip interface brief 
Interface              IP-Address      OK? Method Status                Protocol
GigabitEthernet1       192.168.1.36    YES DHCP   up                    up      
GigabitEthernet2       unassigned      YES NVRAM  up                    up      
GigabitEthernet2.100   10.10.100.1     YES NVRAM  up                    up      
GigabitEthernet2.101   10.10.101.1     YES NVRAM  up                    up      
GigabitEthernet2.102   10.10.102.1     YES NVRAM  up                    up      
GigabitEthernet2.103   10.10.103.1     YES NVRAM  up                    up      
GigabitEthernet2.104   10.10.104.1     YES NVRAM  up                    up      
GigabitEthernet2.105   10.10.105.1     YES NVRAM  up                    up      
GigabitEthernet2.106   10.10.106.1     YES NVRAM  up                    up      
GigabitEthernet2.107   10.10.107.1     YES NVRAM  up                    up      
GigabitEthernet2.108   10.10.108.1     YES NVRAM  up                    up      
GigabitEthernet2.109   10.10.109.1     YES NVRAM  up                    up      
GigabitEthernet2.110   10.10.110.1     YES NVRAM  up                    up      
GigabitEthernet2.111   10.10.111.1     YES NVRAM  up                    up      
GigabitEthernet2.112   10.10.112.1     YES NVRAM  up                    up      
GigabitEthernet2.113   10.10.113.1     YES NVRAM  up                    up      
GigabitEthernet2.114   10.10.114.1     YES NVRAM  up                    up      
GigabitEthernet2.115   10.10.115.1     YES NVRAM  up                    up      
GigabitEthernet2.116   10.10.116.1     YES NVRAM  up                    up      
GigabitEthernet2.117   10.10.117.1     YES NVRAM  up                    up      
GigabitEthernet2.118   10.10.118.1     YES NVRAM  up                    up      
GigabitEthernet2.119   10.10.119.1     YES NVRAM  up                    up      
GigabitEthernet2.130   10.10.130.1     YES NVRAM  up                    up      
GigabitEthernet2.131   10.10.131.1     YES NVRAM  up                    up      
GigabitEthernet2.132   10.10.132.1     YES NVRAM  up                    up      
GigabitEthernet2.133   10.10.133.1     YES NVRAM  up                    up      
GigabitEthernet2.134   10.10.134.1     YES NVRAM  up                    up      
GigabitEthernet2.135   10.10.135.1     YES NVRAM  up                    up      
GigabitEthernet2.136   10.10.136.1     YES NVRAM  up                    up      
GigabitEthernet2.137   10.10.137.1     YES NVRAM  up                    up      
GigabitEthernet2.138   10.10.138.1     YES NVRAM  up                    up      
GigabitEthernet2.139   10.10.139.1     YES NVRAM  up                    up      
GigabitEthernet2.140   10.10.140.1     YES NVRAM  up                    up      
GigabitEthernet2.141   10.10.141.1     YES NVRAM  up                    up      
GigabitEthernet2.142   10.10.142.1     YES NVRAM  up                    up      
GigabitEthernet2.143   10.10.143.1     YES NVRAM  up                    up      
GigabitEthernet2.144   10.10.144.1     YES NVRAM  up                    up      
GigabitEthernet2.145   10.10.145.1     YES NVRAM  up                    up      
GigabitEthernet2.146   10.10.146.1     YES NVRAM  up                    up      
GigabitEthernet2.147   10.10.147.1     YES NVRAM  up                    up      
GigabitEthernet2.148   10.10.148.1     YES NVRAM  up                    up      
GigabitEthernet2.149   10.10.149.1     YES NVRAM  up                    up      
GigabitEthernet2.150   10.10.150.1     YES NVRAM  up                    up      
GigabitEthernet2.151   10.10.151.1     YES NVRAM  up                    up      
GigabitEthernet2.152   10.10.152.1     YES NVRAM  up                    up      
GigabitEthernet2.153   10.10.153.1     YES NVRAM  up                    up      
GigabitEthernet2.154   10.10.154.1     YES NVRAM  up                    up      
GigabitEthernet2.155   10.10.155.1     YES NVRAM  up                    up      
GigabitEthernet2.156   10.10.156.1     YES NVRAM  up                    up      
GigabitEthernet2.157   10.10.157.1     YES NVRAM  up                    up      
GigabitEthernet2.158   10.10.158.1     YES NVRAM  up                    up      
GigabitEthernet2.159   10.10.159.1     YES NVRAM  up                    up      
GigabitEthernet2.160   10.10.160.1     YES NVRAM  up                    up      
GigabitEthernet2.161   10.10.161.1     YES NVRAM  up                    up      
GigabitEthernet2.162   10.10.162.1     YES NVRAM  up                    up      
GigabitEthernet2.163   10.10.163.1     YES NVRAM  up                    up      
GigabitEthernet2.164   10.10.164.1     YES NVRAM  up                    up      
GigabitEthernet2.165   10.10.165.1     YES NVRAM  up                    up      
GigabitEthernet2.166   10.10.166.1     YES NVRAM  up                    up      
GigabitEthernet2.167   10.10.167.1     YES NVRAM  up                    up      
GigabitEthernet2.168   10.10.168.1     YES NVRAM  up                    up      
GigabitEthernet2.169   10.10.169.1     YES NVRAM  up                    up      
GigabitEthernet2.170   10.10.170.1     YES NVRAM  up                    up      
GigabitEthernet2.171   10.10.171.1     YES NVRAM  up                    up      
GigabitEthernet2.172   10.10.172.1     YES NVRAM  up                    up      
GigabitEthernet2.173   10.10.173.1     YES NVRAM  up                    up      
GigabitEthernet2.174   10.10.174.1     YES NVRAM  up                    up      
GigabitEthernet2.175   10.10.175.1     YES NVRAM  up                    up      
GigabitEthernet2.176   10.10.176.1     YES NVRAM  up                    up      
GigabitEthernet2.177   10.10.177.1     YES NVRAM  up                    up      
GigabitEthernet2.178   10.10.178.1     YES NVRAM  up                    up      
GigabitEthernet2.179   10.10.179.1     YES NVRAM  up                    up      
GigabitEthernet2.180   10.10.180.1     YES NVRAM  up                    up      
GigabitEthernet2.181   10.10.181.1     YES NVRAM  up                    up      
GigabitEthernet2.182   10.10.182.1     YES NVRAM  up                    up      
GigabitEthernet2.183   10.10.183.1     YES NVRAM  up                    up      
GigabitEthernet2.184   10.10.184.1     YES NVRAM  up                    up      
GigabitEthernet2.185   10.10.185.1     YES NVRAM  up                    up      
GigabitEthernet2.186   10.10.186.1     YES NVRAM  up                    up      
GigabitEthernet2.187   10.10.187.1     YES NVRAM  up                    up      
GigabitEthernet2.188   10.10.188.1     YES NVRAM  up                    up      
GigabitEthernet2.189   10.10.189.1     YES NVRAM  up                    up      
GigabitEthernet2.190   10.10.190.1     YES NVRAM  up                    up      
GigabitEthernet2.191   10.10.191.1     YES NVRAM  up                    up      
GigabitEthernet2.192   10.10.192.1     YES NVRAM  up                    up      
GigabitEthernet2.193   10.10.193.1     YES NVRAM  up                    up      
GigabitEthernet2.194   10.10.194.1     YES NVRAM  up                    up      
GigabitEthernet2.195   10.10.195.1     YES NVRAM  up                    up      
GigabitEthernet2.196   10.10.196.1     YES NVRAM  up                    up      
GigabitEthernet2.197   10.10.197.1     YES NVRAM  up                    up      
GigabitEthernet2.198   10.10.198.1     YES NVRAM  up                    up      
GigabitEthernet2.199   10.10.199.1     YES NVRAM  up                    up      
GigabitEthernet2.200   10.10.200.1     YES NVRAM  up                    up      
GigabitEthernet2.201   10.10.201.1     YES NVRAM  up                    up      
GigabitEthernet2.202   10.10.202.1     YES NVRAM  up                    up      
GigabitEthernet2.203   10.10.203.1     YES NVRAM  up                    up      
GigabitEthernet2.204   10.10.204.1     YES NVRAM  up                    up      
GigabitEthernet2.205   10.10.205.1     YES NVRAM  up                    up      
GigabitEthernet2.206   10.10.206.1     YES NVRAM  up                    up      
GigabitEthernet2.207   10.10.207.1     YES NVRAM  up                    up      
GigabitEthernet2.208   10.10.208.1     YES NVRAM  up                    up      
GigabitEthernet2.209   10.10.209.1     YES NVRAM  up                    up      
GigabitEthernet2.210   10.10.210.1     YES NVRAM  up                    up      
GigabitEthernet2.211   10.10.211.1     YES NVRAM  up                    up      
GigabitEthernet2.212   10.10.212.1     YES NVRAM  up                    up      
GigabitEthernet2.213   10.10.213.1     YES NVRAM  up                    up      
GigabitEthernet2.214   10.10.214.1     YES NVRAM  up                    up      
GigabitEthernet2.215   10.10.215.1     YES NVRAM  up                    up      
GigabitEthernet2.216   10.10.216.1     YES NVRAM  up                    up      
GigabitEthernet2.217   10.10.217.1     YES NVRAM  up                    up      
GigabitEthernet2.218   10.10.218.1     YES NVRAM  up                    up      
GigabitEthernet2.219   10.10.219.1     YES NVRAM  up                    up      
GigabitEthernet2.220   10.10.220.1     YES NVRAM  up                    up      
GigabitEthernet2.221   10.10.221.1     YES NVRAM  up                    up      
GigabitEthernet2.222   10.10.222.1     YES NVRAM  up                    up      
GigabitEthernet2.223   10.10.223.1     YES NVRAM  up                    up      
GigabitEthernet2.224   10.10.224.1     YES NVRAM  up                    up      
GigabitEthernet2.225   10.10.225.1     YES NVRAM  up                    up      
GigabitEthernet2.226   10.10.226.1     YES NVRAM  up                    up      
GigabitEthernet2.227   10.10.227.1     YES NVRAM  up                    up      
GigabitEthernet2.228   10.10.228.1     YES NVRAM  up                    up      
GigabitEthernet2.229   10.10.229.1     YES NVRAM  up                    up      
GigabitEthernet2.230   10.10.230.1     YES NVRAM  up                    up      
GigabitEthernet2.231   10.10.231.1     YES NVRAM  up                    up      
GigabitEthernet2.232   10.10.232.1     YES NVRAM  up                    up      
GigabitEthernet2.233   10.10.233.1     YES NVRAM  up                    up      
GigabitEthernet2.234   10.10.234.1     YES NVRAM  up                    up      
GigabitEthernet2.235   10.10.235.1     YES NVRAM  up                    up      
GigabitEthernet2.236   10.10.236.1     YES NVRAM  up                    up      
GigabitEthernet2.237   10.10.237.1     YES NVRAM  up                    up      
GigabitEthernet2.238   10.10.238.1     YES NVRAM  up                    up      
GigabitEthernet2.239   10.10.239.1     YES NVRAM  up                    up      
GigabitEthernet2.240   10.10.240.1     YES NVRAM  up                    up      
GigabitEthernet2.241   10.10.241.1     YES NVRAM  up                    up      
GigabitEthernet2.242   10.10.242.1     YES NVRAM  up                    up      
GigabitEthernet2.243   10.10.243.1     YES NVRAM  up                    up      
GigabitEthernet2.244   10.10.244.1     YES NVRAM  up                    up      
GigabitEthernet2.245   10.10.245.1     YES NVRAM  up                    up      
GigabitEthernet2.246   10.10.246.1     YES NVRAM  up                    up      
GigabitEthernet2.247   10.10.247.1     YES NVRAM  up                    up      
GigabitEthernet2.248   10.10.248.1     YES NVRAM  up                    up      
GigabitEthernet2.249   10.10.249.1     YES NVRAM  up                    up      
GigabitEthernet2.250   10.10.250.1     YES NVRAM  up                    up      
GigabitEthernet2.251   10.10.251.1     YES NVRAM  up                    up      
GigabitEthernet2.252   10.10.252.1     YES NVRAM  up                    up      
GigabitEthernet2.253   10.10.253.1     YES NVRAM  up                    up      
GigabitEthernet2.254   10.10.254.1     YES NVRAM  up                    up      
GigabitEthernet2.255   10.10.255.1     YES NVRAM  up                    up

記事一覧に戻る