How nornir-automation/nornir works
Nornir is a Python framework for operating collections of devices: users initialize it with configuration and inventory, then submit Python tasks that run against selected hosts and return per-host results. Inventory loading and inheritance, host filtering, task execution, runner dispatch, processors, and device connections are distinct parts of that workflow. The README also emphasizes extensibility through plugins. The graph follows documented behavior and sampled source; unsampled modules are included only where their paths are present in the tree.
Main entry points: core/__init__.py Nornir Runtime · init_nornir.py Inventory Loading · register.py Plugin Registry · runners/__init__.py Task Runner
Components 21
Initialization
- Nornir Initialization
nornir/init_nornir.py - Configuration
nornir/core/configuration.py - Global State
nornir/core/state.py
Inventory
- Inventory Loading
nornir/init_nornir.py - Simple Inventory
nornir/plugins/inventory/simple.py - Inventory Model
nornir/core/inventory.py - Host Filtering
nornir/core/filter.py
Task Execution
- Nornir Runtime
nornir/core/__init__.py - Task Runner
nornir/plugins/runners/__init__.py - Task Execution
nornir/core/task.py - Task Processors
nornir/core/processor.py - Task Results
nornir/core/task.py - Host Connections
nornir/core/inventory.py
Plugin Interfaces
- Plugin Registry
nornir/core/plugins/register.py - Inventory Plugin API
nornir/core/plugins/inventory.py - Connection Plugin API
nornir/core/plugins/connections.py - Runner Plugin API
nornir/core/plugins/runners.py
Other components
- Python User
- Python Task
- Managed Devices
- Installed Plugins
Connections 29
- Python User → Nornir Initialization: initializes
- Nornir Initialization → Configuration: loads settings
- Nornir Initialization → Global State: creates state
- Nornir Initialization → Inventory Loading: loads inventory
- Inventory Loading → Configuration: reads settings
- Inventory Loading → Plugin Registry: resolves plugin
- Inventory Loading → Inventory Plugin API: uses interface
- Simple Inventory → Inventory Model: builds model
- Inventory Loading → Simple Inventory: instantiates
- Python User → Nornir Runtime: runs tasks
- Nornir Runtime → Inventory Model: selects hosts
- Nornir Runtime → Host Filtering: filters hosts
- Nornir Runtime → Task Runner: dispatches task
- Nornir Runtime → Task Processors: signals lifecycle
- Task Runner → Task Execution: starts per host
- Task Execution → Python Task: invokes
- Task Execution → Task Processors: signals lifecycle
- Task Execution → Task Results: records results
- Task Runner → Task Results: aggregates results
- Python Task → Host Connections: uses host access
- Host Connections → Plugin Registry: resolves plugin
- Host Connections → Connection Plugin API: uses interface
- Connection Plugin API → Managed Devices: connects to
- Inventory Plugin API → Plugin Registry: registered through
- Runner Plugin API → Plugin Registry: registered through
- Installed Plugins → Plugin Registry: advertises entries
- Task Runner → Runner Plugin API: implements interface
- Simple Inventory → Inventory Plugin API: implements interface
- Task Results → Nornir Runtime: returns results