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
.