配置文件

初始化 Nornir 对象时需要加载配置,配置信息由一些配置块及其包含的参数组成,Nornir 默认情况下有 corerunnerinventorysshlogging 五个部分的默认配置,如果有额外的配置需要指定,可以直接添加配置块,并在代码里面进行调用。

Nornir 提供三种加载配置的方式:

  1. 在代码中以字典类型配置

  2. 使用系统环境变量

  3. 使用 YAML 配置文件

可以使用任意一种方式或者三种方式混合的方式提供配置信息,三种方式的优先级从高到低依次为:代码、系统环境变量、YAML 配置文件。

使用代码

  1. nr = InitNornir(
  2. # 使用字典的格式来进行配置
  3. runner={"plugin": "threaded", "options": {"num_workers": 20}},
  4. logging={"log_file": "mylogs", "level": "DEBUG"}
  5. )

使用环境变量

每个配置项都有对应的环境变量键值,可以在下一节查看具体的值,Nornir 初始化时如果相关配置信息没有从代码的字典中找到,则从系统环境变量中查找,下面示例使用 os 模块的相关配置来代替已经存在的环境变量,具体使用中应根据对应的系统进行配置。

  1. # 已经存在的系统环境变量
  2. import os
  3. os.environ.setdefault("NORNIR_RUNNER_OPTIONS","{'num_workers': 100}")
  4. os.environ.setdefault("NORNIR_INVENTORY_OPTIONS","{'host_file':'./hosts.yaml',}")
  5. # 初始化 Nornir,没有传递参数,环境变量中可以读取到相关配置
  6. from nornir import InitNornir
  7. nr=InitNornir()
  8. nr.config.runner.options # 查看线程数
  9. nr.inventory.hosts # 查看主机

使用配置文件

默认情况下 Nornir 会从程序运行的当前目录读取 hosts.yaml 文件,如果不存在则会报错;如果 hosts.yaml 中有关于 groups 的配置,还会继续加载 groups.yaml 文件。

  1. ---
  2. inventory:
  3. plugin: SimpleInventory
  4. options:
  5. host_file: "advanced_filtering/inventory/hosts.yaml"
  6. group_file: "advanced_filtering/inventory/groups.yaml"
  7. runner:
  8. plugin: threaded
  9. options:
  10. num_workers: 20