配置文件
初始化 Nornir 对象时需要加载配置,配置信息由一些配置块及其包含的参数组成,Nornir 默认情况下有 core
、 runner
、inventory
、ssh
、logging
五个部分的默认配置,如果有额外的配置需要指定,可以直接添加配置块,并在代码里面进行调用。
Nornir 提供三种加载配置的方式:
在代码中以字典类型配置
使用系统环境变量
使用 YAML 配置文件
可以使用任意一种方式或者三种方式混合的方式提供配置信息,三种方式的优先级从高到低依次为:代码、系统环境变量、YAML 配置文件。
使用代码
nr = InitNornir(
# 使用字典的格式来进行配置
runner={"plugin": "threaded", "options": {"num_workers": 20}},
logging={"log_file": "mylogs", "level": "DEBUG"}
)
使用环境变量
每个配置项都有对应的环境变量键值,可以在下一节查看具体的值,Nornir 初始化时如果相关配置信息没有从代码的字典中找到,则从系统环境变量中查找,下面示例使用 os
模块的相关配置来代替已经存在的环境变量,具体使用中应根据对应的系统进行配置。
# 已经存在的系统环境变量
import os
os.environ.setdefault("NORNIR_RUNNER_OPTIONS","{'num_workers': 100}")
os.environ.setdefault("NORNIR_INVENTORY_OPTIONS","{'host_file':'./hosts.yaml',}")
# 初始化 Nornir,没有传递参数,环境变量中可以读取到相关配置
from nornir import InitNornir
nr=InitNornir()
nr.config.runner.options # 查看线程数
nr.inventory.hosts # 查看主机
使用配置文件
默认情况下 Nornir 会从程序运行的当前目录读取 hosts.yaml
文件,如果不存在则会报错;如果 hosts.yaml
中有关于 groups
的配置,还会继续加载 groups.yaml
文件。
---
inventory:
plugin: SimpleInventory
options:
host_file: "advanced_filtering/inventory/hosts.yaml"
group_file: "advanced_filtering/inventory/groups.yaml"
runner:
plugin: threaded
options:
num_workers: 20