Configuration
The configuration is comprised of a set of sections and parameters for those sections. You can set the configuration programmatically using nornir by passing a dictionary of options for each section, by using a YAML file, by setting the corresponding environment variables or by a combination of the three. The order of preference from less to more preferred is “configuration file” -> “env variable” -> “code”.
An example using InitNornir would be:
nr = InitNornir(
core={"num_workers": 20},
logging={"file": "mylogs", "level": "debug"}
)
A similar example using a yaml file:
---
core:
num_workers: 20
inventory:
plugin: nornir.plugins.inventory.simple.SimpleInventory
options:
host_file: "advanced_filtering/inventory/hosts.yaml"
group_file: "advanced_filtering/inventory/groups.yaml"
Logging
By default, Nornir automatically configures logging when InitNornir is called. Logging configuration can be modified and available options are described in the section below. If you want to use Python logging module to configure logging, make sure to set logging.enabled parameter to False in order to avoid potential issues.
Next, you can find each section and their corresponding options.
core
num_workers
| Description |
Number of Nornir worker threads that are run at the same time by default |
| Type |
integer |
| Default |
20 |
| Required |
False |
| Environment Variable |
NORNIR_CORE_NUM_WORKERS |
inventory
plugin
| Description |
Import path to inventory plugin |
| Type |
string |
| Default |
nornir.plugins.inventory.simple.SimpleInventory |
| Required |
False |
| Environment Variable |
NORNIR_INVENTORY_PLUGIN |
options
| Description |
kwargs to pass to the inventory plugin |
| Type |
object |
| Default |
{} |
| Required |
False |
| Environment Variable |
NORNIR_INVENTORY_OPTIONS |
ssh
config_file
| Description |
Path to ssh configuration file |
| Type |
string |
| Default |
~/.ssh/config |
| Required |
False |
| Environment Variable |
NORNIR_SSH_CONFIG_FILE |
logging
enabled
| Description |
Whether to configure logging or not |
| Type |
boolean |
| Default |
None |
| Required |
False |
| Environment Variable |
NORNIR_LOGGING_ENABLED |
level
| Description |
Logging level |
| Type |
string |
| Default |
INFO |
| Required |
False |
| Environment Variable |
NORNIR_LOGGING_LEVEL |
file
| Description |
Logging file |
| Type |
string |
| Default |
nornir.log |
| Required |
False |
| Environment Variable |
NORNIR_LOGGING_FILE |
to_console
| Description |
Whether to log to console or not |
| Type |
boolean |
| Default |
False |
| Required |
False |
| Environment Variable |
NORNIR_LOGGING_TO_CONSOLE |
loggers
| Description |
Loggers to configure |
| Type |
array |
| Default |
['nornir'] |
| Required |
False |
| Environment Variable |
NORNIR_LOGGING_LOGGERS |
jinja2
filters
| Description |
Path to callable returning jinja filters to be used |
| Type |
string |
| Default |
|
| Required |
False |
| Environment Variable |
NORNIR_JINJA2_FILTERS |
user_defined
You can set any <k, v> pair you want here and you will have it available under your configuration object, i.e. nr.config.user_defined.my_app_option.