* WIP * Add config_template field to Device * Pre-fetch referenced templates * Correct up_to_date callable * Add config_template FK to Device * Update & merge migrations * Add config_template FK to Platform * Add tagging support for ConfigTemplate * Catch exceptions when rendering device templates in UI * Refactor ConfigTemplate.render() * Add support for returning plain text content * Add ConfigTemplate model documentation * Add feature documentation for config rendering
This commit is contained in:

committed by
jeremystretch

parent
db4e00d394
commit
73a7a2d27a
38
docs/features/configuration-rendering.md
Normal file
38
docs/features/configuration-rendering.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Configuration Rendering
|
||||
|
||||
One of the critical aspects of operating a network is ensuring that every network node is configured correctly. By leveraging configuration templates and [context data](./context-data.md), NetBox can render complete configuration files for each device on your network.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
ConfigContext & ConfigTemplate --> Config{{Rendered configuration}}
|
||||
|
||||
click ConfigContext "../../models/extras/configcontext/"
|
||||
click ConfigTemplate "../../models/extras/configtemplate/"
|
||||
```
|
||||
|
||||
## Configuration Templates
|
||||
|
||||
Configuration templates are written in the [Jinja2 templating language](https://jinja.palletsprojects.com/), and may be automatically populated from remote data sources. Context data is applied to a template during rendering to output a complete configuration file. Below is an example template.
|
||||
|
||||
```jinja2
|
||||
{% extends 'base.j2' %}
|
||||
|
||||
{% block content %}
|
||||
system {
|
||||
host-name {{ device.name }};
|
||||
domain-name example.com;
|
||||
time-zone UTC;
|
||||
authentication-order [ password radius ];
|
||||
ntp {
|
||||
{% for server in ntp_servers %}
|
||||
server {{ server }};
|
||||
{% endfor %}
|
||||
}
|
||||
}
|
||||
{% for interface in device.interfaces.all() %}
|
||||
{% include 'common/interface.j2' %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
```
|
||||
|
||||
When rendered for a specific NetBox device, the template's `device` variable will be populated with the device instance, and `ntp_servers` will be pulled from the device's available context data. The resulting output will be a valid configuration segment that can be applied directly to a compatible network device.
|
Reference in New Issue
Block a user