初始化 Nornir
InitNornir
可以使用配置文件、代码或者两者结合起来使用来初始化一个 Nornir 对象。
先从配置文件开始看,下面是一个 Nornir 的配置文件。
# %load files/config.yaml
---
inventory:
plugin: SimpleInventory
options:
host_file: "files/inventory/hosts.yaml"
group_file: "files/inventory/groups.yaml"
defaults_file: "files/inventory/defaults.yaml"
runner:
plugin: threaded
options:
num_workers: 100
[2]:
from nornir import InitNornir
nr = InitNornir(config_file="files/config.yaml")
也可以不用配置文件,通过传参的方式来初始化 Nornir 对象,如下:
[3]:
或者两种方式混合使用:
from nornir import InitNornir
nr = InitNornir(
config_file="files/config.yaml",
runner={
"plugin": "threaded",
"options": {
"num_workers": 100,
},
},
)
[5]:
from pprint import pprint as print
print(nr.dict())
这里看到的是运行时指定的 data 参数和所有的主机信息,配置相关的信息则存储在 config 的 dict
方法里,这里可以看到包括默认配置在内的所有配置:
[6]:
print(nr.config.dict())
'group_file': 'files/inventory/groups.yaml',
'host_file': 'files/inventory/hosts.yaml'},
'plugin': 'SimpleInventory',
'transform_function': '',
'transform_function_options': {}},
'logging': {'enabled': True,
'format': '%(asctime)s - %(name)12s - %(levelname)8s - '
'%(funcName)10s() - %(message)s',
'level': 'INFO',
'log_file': 'nornir.log',
'loggers': ['nornir'],
'to_console': False},
'runner': {'options': {'num_workers': 100}, 'plugin': 'threaded'},
'ssh': {'config_file': 'C:\\Users\\xdai\\.ssh\\config'},
'user_defined': {}}
从这两个例子可以看出,Nornir 数据相关的字段都是封装成字典的格式来返回给用户。如果想要取某个部分的值,就可以直接使用字典的方式来取,比如查看配置中的并发数量(注:Nornir 默认的线程池并发是 20):
[7]: