This repository has been archived by the owner on Oct 11, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Nornir inventory
Khelil Sator edited this page Oct 26, 2019
·
6 revisions
The Nornir inventory directory is inventory.
It has three files: hosts, groups, defaults
$ python
Python 3.6.8 (default, Oct 9 2019, 14:04:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> from nornir import InitNornir
>>> nr = InitNornir(config_file="config.yaml")
>>> print(nr.inventory.hosts)
{'ubuntu1': Host: ubuntu1, 'ubuntu2': Host: ubuntu2, 'vMX1': Host: vMX1, 'vMX2': Host: vMX2, 'vMX3': Host: vMX3, 'vMX4': Host: vMX4, 'vMX5': Host: vMX5, 'vMX6': Host: vMX6, 'vMX7': Host: vMX7}
>>>
>>> print(nr.inventory.groups)
{'network_device': Group: network_device, 'spine': Group: spine, 'leaf': Group: leaf, 'juniper': Group: juniper, 'common_settings': Group: common_settings}
>>>
>>> dev = nr.inventory.hosts["vMX1"]
>>> dev
Host: vMX1
>>>
>>> dev.name
'vMX1'
>>> dev.platform
'junos'
>>> dev.port
830
>>> dev.username
'jcluser'
>>> dev.groups
['juniper', 'spine', 'common_settings']
>>>
>>> dev.data
{'type': 'network_device', 'site': 'paris', 'local_asn': 101, 'neighbors': [{'interface': 'ge-0/0/0', 'interface_description': 'to leaf vMX4', 'asn': 104, 'peer_ip': '192.168.1.1', 'local_ip': '192.168.1.0'}, {'interface': 'ge-0/0/1', 'interface_description': 'to leaf vMX5', 'asn': 105, 'peer_ip': '192.168.1.3', 'local_ip': '192.168.1.2'}, {'interface': 'ge-0/0/2', 'interface_description': 'to leaf vMX6', 'asn': 106, 'peer_ip': '192.168.1.5', 'local_ip': '192.168.1.4'}, {'interface': 'ge-0/0/3', 'interface_description': 'to leaf vMX7', 'asn': 107, 'peer_ip': '192.168.1.7', 'local_ip': '192.168.1.6'}]}
>>>
>>> dev.data["site"]
'paris'
>>> dev.data["neighbors"][0]["peer_ip"]
'192.168.1.1'
>>>
>>> dev.keys()
dict_keys(['type', 'site', 'local_asn', 'neighbors', 'version', 'role', 'snmp_community', 'grpc_port', 'name_servers'])
>>> dev['site']
'paris'
>>> dev['type']
'network_device'
>>> dev['role']
'spine'
>>> dev['local_asn']
101
>>>
>>> dev['version']
'18.2R1.9'
>>>
>>> dev.values()
dict_values(['network_device', 'paris', 101, [{'interface': 'ge-0/0/0', 'interface_description': 'to leaf vMX4', 'asn': 104, 'peer_ip': '192.168.1.1', 'local_ip': '192.168.1.0'}, {'interface': 'ge-0/0/1', 'interface_description': 'to leaf vMX5', 'asn': 105, 'peer_ip': '192.168.1.3', 'local_ip': '192.168.1.2'}, {'interface': 'ge-0/0/2', 'interface_description': 'to leaf vMX6', 'asn': 106, 'peer_ip': '192.168.1.5', 'local_ip': '192.168.1.4'}, {'interface': 'ge-0/0/3', 'interface_description': 'to leaf vMX7', 'asn': 107, 'peer_ip': '192.168.1.7', 'local_ip': '192.168.1.6'}], '18.2R1.9', 'spine', 'public', 32768, ['8.8.8.8', '8.8.8.4']])
>>>
>>> dev.data["local_asn"]
101
>>> nr.dict()['inventory']['hosts']['vMX1']['data']['local_asn']
101
>>> from pprint import pprint as pp
>>> pp(nr.dict()['inventory']['hosts']['vMX1'])
{'connection_options': {},
'data': {'local_asn': 101,
'neighbors': [{'asn': 104,
'interface': 'ge-0/0/0',
'interface_description': 'to leaf vMX4',
'local_ip': '192.168.1.0',
'peer_ip': '192.168.1.1'},
{'asn': 105,
'interface': 'ge-0/0/1',
'interface_description': 'to leaf vMX5',
'local_ip': '192.168.1.2',
'peer_ip': '192.168.1.3'},
{'asn': 106,
'interface': 'ge-0/0/2',
'interface_description': 'to leaf vMX6',
'local_ip': '192.168.1.4',
'peer_ip': '192.168.1.5'},
{'asn': 107,
'interface': 'ge-0/0/3',
'interface_description': 'to leaf vMX7',
'local_ip': '192.168.1.6',
'peer_ip': '192.168.1.7'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper', 'spine', 'common_settings'],
'hostname': '100.123.1.0',
'password': None,
'platform': None,
'port': 830,
'username': None}
>>>
>>> pp(nr.dict())
{'data': {'dry_run': False, 'failed_hosts': set()},
'inventory': {'defaults': {'connection_options': {},
'data': {},
'hostname': None,
'password': 'Juniper!1',
'platform': None,
'port': None,
'username': 'jcluser'},
'groups': {'common_settings': {'connection_options': {},
'data': {'grpc_port': 32768,
'name_servers': ['8.8.8.8',
'8.8.8.4'],
'snmp_community': 'public'},
'groups': [],
'hostname': None,
'password': None,
'platform': None,
'port': None,
'username': None},
'juniper': {'connection_options': {},
'data': {'version': '18.2R1.9'},
'groups': [],
'hostname': None,
'password': None,
'platform': 'junos',
'port': None,
'username': None},
'leaf': {'connection_options': {},
'data': {'role': 'leaf'},
'groups': ['network_device'],
'hostname': None,
'password': None,
'platform': None,
'port': None,
'username': None},
'network_device': {'connection_options': {},
'data': {},
'groups': [],
'hostname': None,
'password': None,
'platform': None,
'port': None,
'username': None},
'spine': {'connection_options': {},
'data': {'role': 'spine'},
'groups': ['network_device'],
'hostname': None,
'password': None,
'platform': None,
'port': None,
'username': None}},
'hosts': {'ubuntu1': {'connection_options': {},
'data': {'site': 'paris',
'type': 'server'},
'groups': [],
'hostname': '100.123.35.0',
'password': None,
'platform': None,
'port': 22,
'username': None},
'ubuntu2': {'connection_options': {},
'data': {'site': 'paris',
'type': 'server'},
'groups': [],
'hostname': '100.123.35.1',
'password': None,
'platform': None,
'port': 22,
'username': None},
'vMX1': {'connection_options': {},
'data': {'local_asn': 101,
'neighbors': [{'asn': 104,
'interface': 'ge-0/0/0',
'interface_description': 'to '
'leaf '
'vMX4',
'local_ip': '192.168.1.0',
'peer_ip': '192.168.1.1'},
{'asn': 105,
'interface': 'ge-0/0/1',
'interface_description': 'to '
'leaf '
'vMX5',
'local_ip': '192.168.1.2',
'peer_ip': '192.168.1.3'},
{'asn': 106,
'interface': 'ge-0/0/2',
'interface_description': 'to '
'leaf '
'vMX6',
'local_ip': '192.168.1.4',
'peer_ip': '192.168.1.5'},
{'asn': 107,
'interface': 'ge-0/0/3',
'interface_description': 'to '
'leaf '
'vMX7',
'local_ip': '192.168.1.6',
'peer_ip': '192.168.1.7'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper',
'spine',
'common_settings'],
'hostname': '100.123.1.0',
'password': None,
'platform': None,
'port': 830,
'username': None},
'vMX2': {'connection_options': {},
'data': {'local_asn': 102,
'neighbors': [{'asn': 104,
'interface': 'ge-0/0/0',
'interface_description': 'to '
'leaf '
'vMX4',
'local_ip': '192.168.2.0',
'peer_ip': '192.168.2.1'},
{'asn': 105,
'interface': 'ge-0/0/1',
'interface_description': 'to '
'leaf '
'vMX5',
'local_ip': '192.168.2.2',
'peer_ip': '192.168.2.3'},
{'asn': 106,
'interface': 'ge-0/0/2',
'interface_description': 'to '
'leaf '
'vMX6',
'local_ip': '192.168.2.4',
'peer_ip': '192.168.2.5'},
{'asn': 107,
'interface': 'ge-0/0/3',
'interface_description': 'to '
'leaf '
'vMX7',
'local_ip': '192.168.2.6',
'peer_ip': '192.168.2.7'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper',
'spine',
'common_settings'],
'hostname': '100.123.1.1',
'password': None,
'platform': None,
'port': 830,
'username': None},
'vMX3': {'connection_options': {},
'data': {'local_asn': 103,
'neighbors': [{'asn': 104,
'interface': 'ge-0/0/0',
'interface_description': 'to '
'leaf '
'vMX4',
'local_ip': '192.168.3.0',
'peer_ip': '192.168.3.1'},
{'asn': 105,
'interface': 'ge-0/0/1',
'interface_description': 'to '
'leaf '
'vMX5',
'local_ip': '192.168.3.2',
'peer_ip': '192.168.3.3'},
{'asn': 106,
'interface': 'ge-0/0/2',
'interface_description': 'to '
'leaf '
'vMX6',
'local_ip': '192.168.3.4',
'peer_ip': '192.168.3.5'},
{'asn': 107,
'interface': 'ge-0/0/3',
'interface_description': 'to '
'leaf '
'vMX7',
'local_ip': '192.168.3.6',
'peer_ip': '192.168.3.7'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper',
'spine',
'common_settings'],
'hostname': '100.123.1.2',
'password': None,
'platform': None,
'port': 830,
'username': None},
'vMX4': {'connection_options': {},
'data': {'local_asn': 104,
'neighbors': [{'asn': 101,
'interface': 'ge-0/0/0',
'interface_description': 'to '
'spine '
'vMX1',
'local_ip': '192.168.1.1',
'peer_ip': '192.168.1.0'},
{'asn': 102,
'interface': 'ge-0/0/1',
'interface_description': 'to '
'spine '
'vMX2',
'local_ip': '192.168.2.1',
'peer_ip': '192.168.2.0'},
{'asn': 103,
'interface': 'ge-0/0/2',
'interface_description': 'to '
'spine '
'vMX3',
'local_ip': '192.168.3.1',
'peer_ip': '192.168.3.0'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper',
'leaf',
'common_settings'],
'hostname': '100.123.1.3',
'password': None,
'platform': None,
'port': 830,
'username': None},
'vMX5': {'connection_options': {},
'data': {'local_asn': 105,
'neighbors': [{'asn': 101,
'interface': 'ge-0/0/0',
'interface_description': 'to '
'spine '
'vMX1',
'local_ip': '192.168.1.3',
'peer_ip': '192.168.1.2'},
{'asn': 102,
'interface': 'ge-0/0/1',
'interface_description': 'to '
'spine '
'vMX2',
'local_ip': '192.168.2.3',
'peer_ip': '192.168.2.2'},
{'asn': 103,
'interface': 'ge-0/0/2',
'interface_description': 'to '
'spine '
'vMX3',
'local_ip': '192.168.3.3',
'peer_ip': '192.168.3.2'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper',
'leaf',
'common_settings'],
'hostname': '100.123.1.4',
'password': None,
'platform': None,
'port': 830,
'username': None},
'vMX6': {'connection_options': {},
'data': {'local_asn': 106,
'neighbors': [{'asn': 101,
'interface': 'ge-0/0/0',
'interface_description': 'to '
'spine '
'vMX1',
'local_ip': '192.168.1.5',
'peer_ip': '192.168.1.4'},
{'asn': 102,
'interface': 'ge-0/0/1',
'interface_description': 'to '
'spine '
'vMX2',
'local_ip': '192.168.2.5',
'peer_ip': '192.168.2.4'},
{'asn': 103,
'interface': 'ge-0/0/2',
'interface_description': 'to '
'spine '
'vMX3',
'local_ip': '192.168.3.5',
'peer_ip': '192.168.3.4'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper',
'leaf',
'common_settings'],
'hostname': '100.123.1.5',
'password': None,
'platform': None,
'port': 830,
'username': None},
'vMX7': {'connection_options': {},
'data': {'local_asn': 107,
'neighbors': [{'asn': 101,
'interface': 'ge-0/0/0',
'interface_description': 'to '
'spine '
'vMX1',
'local_ip': '192.168.1.7',
'peer_ip': '192.168.1.6'},
{'asn': 102,
'interface': 'ge-0/0/1',
'interface_description': 'to '
'spine '
'vMX2',
'local_ip': '192.168.2.7',
'peer_ip': '192.168.2.6'},
{'asn': 103,
'interface': 'ge-0/0/2',
'interface_description': 'to '
'spine '
'vMX3',
'local_ip': '192.168.3.7',
'peer_ip': '192.168.3.6'}],
'site': 'paris',
'type': 'network_device'},
'groups': ['juniper',
'leaf',
'common_settings'],
'hostname': '100.123.1.6',
'password': None,
'platform': None,
'port': 830,
'username': None}}}}
>>>