For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
    • NVIDIA Switch Infrastructure
    • I want to...
  • Quick Start
    • Start Here
    • Getting Started with Config Manager
    • TUI Wizard Reference
    • Configuration Samples
    • Interfaces
    • Local Development Quick Start
    • First Run Tour
  • Config Manager Overview
    • Config Manager Concepts
    • Getting Started with Nautobot
  • User Guides
    • New Site Bringup
    • Workflow Lifecycle
  • Deployment
    • Hosting Options
    • Network Topology Requirements
    • Firewall Ports
    • Airgapped Deployment
    • Troubleshooting
  • Services
      • Network Template Rendering System
      • Render Service
      • Filter quick reference
      • Template expansion
NVIDIANVIDIA
Developer-friendly docs for your API
Privacy Policy | Your Privacy Choices | Terms of Service | Accessibility | Corporate Policies | Product Security | Contact

Copyright © 2026, NVIDIA Corporation.

LogoLogo
On this page
  • Device information
  • Routing and BGP
  • Interface operations
  • Interface object properties
  • IP address manipulation
  • Location and site data
  • DHCP helper addresses
  • Secret management
  • ISIS
  • VRF operations
  • Specialized filters
  • Common patterns
  • Management interface
  • Conditional configuration
  • Error handling
  • Further reading
ServicesTemplate Rendering Service

Jinja2 filter quick reference

||View as Markdown|
Previous

Config Manager Render Service

Next

Template and Plugin Expansion Walkthrough

Quick lookup for common filters used in network templates. For Nautobot field mappings and narrative detail, see the Network Template Rendering System overview.

Device information

1{{ device_data|hostname }} {# Device hostname #}
2{{ device_data|site_name }} {# Site name #}
3{{ device_data|platform }} {# Platform (e.g., "Cumulus Linux") #}
4{{ device_data|role }} {# Device role (e.g., "TAN-Leaf") #}
5{{ device_data|model }} {# Device model #}
6{{ device_data|desired_firmware }} {# Target firmware version #}
7{{ device_data|uuid }} {# Nautobot UUID #}
8{{ device_data|device_tags }} {# List of device tags #}
9{{ device_data|has_tag("tag-name") }} {# Check for specific tag #}

Routing and BGP

1{{ device_data|router_id }} {# Router ID (loopback IP without mask) #}
2{{ device_data|asn }} {# BGP ASN for default VRF #}
3{{ device_data|asn("VRF-NAME") }} {# BGP ASN for specific VRF #}
4{{ device_data|local_asn }} {# Local ASN (Azure) #}
5
6{% for peer in device_data|bgp_peers %}
7 neighbor {{ peer.peer_ipv4 }} remote-as {{ peer.asn }}
8 neighbor {{ peer.peer_ipv4 }} description {{ peer.description }}
9 neighbor {{ peer.peer_ipv4 }} peer-group {{ peer.peer_group }}
10{% endfor %}
11
12{{ "1.100"|asplain }} {# Convert ASDOT to ASPLAIN (→ 65636) #}

Interface operations

1{# Get all interfaces #}
2{% for intf in device_data|interfaces %}
3 {{ intf.name }} - {{ intf.description }}
4{% endfor %}
5
6{# Filter by prefix #}
7{% for intf in device_data|interfaces(prefix="swp") %}
8 interface {{ intf.name }}
9{% endfor %}
10
11{# Filter by role #}
12{% for intf in device_data|interfaces(role="Uplink") %}
13 interface {{ intf.name }}
14{% endfor %}
15
16{# Filter by tags #}
17{% for intf in device_data|interfaces(tags=["qos-enabled"]) %}
18 interface {{ intf.name }}
19{% endfor %}
20
21{# Get specific interface #}
22{% set intf = device_data|interface_by_name("eth0") %}
23{{ intf.name }} - {{ intf.primary_ipv4 }}
24
25{# Get breakout count #}
26{{ device_data|breakout_count("swp1") }} {# Returns 0, 2, 4, or 8 #}
27
28{# Loopback parent prefix #}
29{{ device_data|loopback_prefix }} {# Parent prefix of loopback IP #}

Interface object properties

1{{ intf.name }} {# Interface name #}
2{{ intf.description }} {# Description #}
3{{ intf.primary_ipv4 }} {# Primary IPv4 (with prefix) #}
4{{ intf.primary_ipv6 }} {# Primary IPv6 (with prefix) #}
5{{ intf.enabled }} {# Admin state (true/false) #}
6{{ intf.mtu }} {# MTU #}
7{{ intf.vrf }} {# VRF name (default if none) #}
8{{ intf.role }} {# Interface role #}
9{{ intf.untagged_vlan }} {# Untagged VLAN ID (or None) #}
10{{ intf.tagged_vlans }} {# List of tagged VLAN IDs #}
11{{ intf.tags }} {# List of interface tags #}
12{{ intf.has_bgp_peer() }} {# True if BGP-eligible #}
13
14{# Connected device info #}
15{% if intf.connected_interface %}
16 {{ intf.connected_interface.name }}
17 {{ intf.connected_interface.device.name }}
18 {{ intf.connected_interface.device.role }}
19 {{ intf.connected_interface.device.asn }}
20 {{ intf.connected_interface.device.peer_ipv4 }}
21{% endif %}

IP address manipulation

1{{ "10.0.0.5/24"|gateway }} {# → "10.0.0.1" (first usable) #}
2{{ "10.0.0.5/31"|get_peer_ip }} {# → peer in /31 #}
3{{ "10.0.0.5/24"|network_address }} {# → "10.0.0.0/24" #}
4
5{# Subnet operations #}
6{% for subnet in "10.0.0.0/16"|subnet(24) %}
7 {{ subnet }} {# /24 subnets #}
8{% endfor %}
9
10{{ "10.0.0.0/24"|supernet(16) }} {# → "10.0.0.0/16" #}
11
12{# All IPs in range #}
13{% for ip in "10.0.0.0/29"|ips %}
14 {{ ip }} {# Each IP in subnet #}
15{% endfor %}
16
17{# Netmask notation #}
18{% set addr, mask = "10.0.0.0/24"|netmask_notation %}
19{{ addr }} {# → "10.0.0.0" #}
20{{ mask }} {# → "255.255.255.0" #}
21
22{# DHCP host range #}
23{% set first, last = "10.0.0.0/24"|host_range %}
24range {{ first }} {{ last }}; {# → range 10.0.0.2 10.0.0.254 #}
25
26{# RFC3442 static route for DHCP #}
27{{ "10.1.0.0/16"|rfc3442_classless_static_route("10.0.0.1") }}

Location and site data

1{{ location_data|site_asn }} {# Site BGP ASN #}
2
3{% for prefix in location_data|site_aggregates("Aggregate") %}
4 network {{ prefix }}
5{% endfor %}
6
7{% for prefix in location_data|site_aggregates("Aggregate", tags=["bgp-advertise"]) %}
8 network {{ prefix }}
9{% endfor %}
10
11{% for prefix in location_data|site_aggregates("Infrastructure", exclude_tags=["do-not-advertise"]) %}
12 network {{ prefix }}
13{% endfor %}
14
15{% for rs in location_data|route_server_peers %}
16 neighbor {{ rs.peer_ipv4 }} remote-as {{ rs.asn }}
17{% endfor %}
18
19{% for name, loopback in location_data|wan_loopbacks %}
20 router {{ name }} loopback {{ loopback }}
21{% endfor %}
22
23{% for prefix in location_data|uc_jumphost_prefixes %}
24 ip prefix-list JUMPHOSTS permit {{ prefix }}
25{% endfor %}

DHCP helper addresses

1{# By VLAN: { vlan_id: [helpers] } for device VLANs #}
2{% set vlan_helpers = device_data|helper_addresses_by_vlan(location_data) %}
3{% for vlan_id, helpers in vlan_helpers.items() %}
4 vlan {{ vlan_id }}:
5 {% for helper in helpers %}
6 dhcp-server {{ helper }}
7 {% endfor %}
8{% endfor %}
9
10{# By VRF: { vrf_name: { vlans: [], helpers: [] } } #}
11{% set vrf_configs = device_data|helper_addresses_by_vrf(location_data) %}
12{% for vrf_name, config in vrf_configs.items() %}
13 vrf {{ vrf_name }}:
14 vlans: {{ config.vlans }}
15 {% for helper in config.helpers %}
16 dhcp-server {{ helper }}
17 {% endfor %}
18{% endfor %}

Secret management

1{% set secret = "secret_key"|load_secret(site=device_data|site_name) %}
2{% set secret = "secret_key"|load_secret(region="US-WEST") %}
3
4{% for user in device_data|users %}
5 {# user.username, user.role (optional), user.password_key #}
6 {% set password = user.password_key|load_secret(site=device_data|site_name) %}
7 username {{ user.username }} secret {{ password|encrypt("sha512", site=device_data|site_name) }}{% if user.role %} role {{ user.role }}{% endif %}
8{% endfor %}
9
10{% set password = "root_password_r1"|load_secret(site=device_data|site_name) %}
11username admin secret {{ password|encrypt("sha512", site=device_data|site_name) }}
12tacacs-server key {{ ("tacacs_key_r1"|load_secret(site=device_data|site_name))|encrypt("ciscot7", site=device_data|site_name) }}

In development or testing, set NV_CONFIG_MANAGER_SKIP_VAULT=1 to use dummy secret values.

ISIS

1{{ device_data|router_id|isis_system_id }}

VRF operations

1{% for vrf in device_data|tenant_vrfs %}
2 vrf {{ vrf.name }}
3 vni {{ vrf.vni }}
4 {% for rt in vrf.export_targets %}
5 route-target export {{ rt }}
6 {% endfor %}
7 {% for rt in vrf.import_targets %}
8 route-target import {{ rt }}
9 {% endfor %}
10{% endfor %}

Specialized filters

1{% for entry in device_data|spx_subnets(ip_version=4) %}
2 route {{ entry.subnet }} via {{ entry.rail_prefix }}
3{% endfor %}
4
5{% for port in device_data|console_server_ports %}
6 console-port {{ port.name }} connects to {{ port.device.name }}
7{% endfor %}

Common patterns

Management interface

1{% set mgmt = device_data|interface_by_name("eth0") %}
2interface eth0
3 description {{ mgmt.description }}
4 ip address {{ mgmt.primary_ipv4 }}
5 ip gateway {{ mgmt.primary_ipv4|gateway }}
6 vrf mgmt

Conditional configuration

1{% if device_data|has_tag("enable-feature") %}
2feature-x enable
3{% endif %}

Error handling

Most filters raise FilterException when data is missing. Use fail_if_missing=False on interface_by_name to get None instead:

1{% set intf = device_data|interface_by_name("eth1", fail_if_missing=False) %}
2{% if intf %}
3 {# configure interface #}
4{% endif %}

Further reading

For detailed explanations, examples, and Nautobot field mappings, see Network Template Rendering System.