Skip to content
This repository has been archived by the owner on Oct 11, 2020. It is now read-only.

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}}}}
>>>