Example !
#### Script1 #### from __future__ import unicode_literals, print_function from jinja2 import FileSystemLoader, StrictUndefined from jinja2.environment import Environment env = Environment(undefined=StrictUndefined) env.loader = FileSystemLoader([".", "./templates/"]) var_interfaces = {} var_template_file = "intf_config1.j2" var_template = env.get_template(var_template_file) var_output = var_template.render(**var_interfaces) print(var_output) #### template #### Single for loop, range can be set like (#) or a range (#,#) {%- for var_port_number in range(0, 25) %} interface GigabitEthernet0/1/{{ var_port_number }} ! {%- endfor %} --- #### Script2 #### from __future__ import unicode_literals, print_function from jinja2 import FileSystemLoader, StrictUndefined from jinja2.environment import Environment env = Environment(undefined=StrictUndefined) env.loader = FileSystemLoader(".") base_intf = "GigabitEthernet0/1/" intf_list = [] for intf_number in range(24): intf_name = f"{base_intf}{intf_number}" intf_list.append(intf_name) intf_vars = {"intf_list": intf_list} template_file = "intf_config2.j2" template = env.get_template(template_file) output = template.render(**intf_vars) print(output) #### template #### {%- for intf in intf_list %} interface {{ intf }} switchport access vlan 400 switchport mode access ! {%- endfor %} --- #### Script3 #### from __future__ import unicode_literals, print_function from jinja2 import FileSystemLoader, StrictUndefined from jinja2.environment import Environment env = Environment(undefined=StrictUndefined) env.loader = FileSystemLoader(".") intf_vars = {} template_file = "intf_config3.j2" template = env.get_template(template_file) output = template.render(**intf_vars) print(output) --- ####### Nested for loops {%- for slot in range(1, 4) %} {%- for port_number in range(1, 25) %} interface GigabitEthernet0/{{ slot }}/{{ port_number }} {%- endfor %} {%- endfor %} ####### For loop with conditional {%- for port_number in range(1, 25) %} {%- if port_number == 10 %} interface GigabitEthernet0/1/{{ port_number }} {%- endif %} {%- endfor %} ######## Jinja2 comment {# This is a comment in Jinja2 #} ******** more example ********* from __future__ import unicode_literals, print_function from jinja2 import FileSystemLoader, StrictUndefined from jinja2.environment import Environment env = Environment(undefined=StrictUndefined) env.loader = FileSystemLoader(".") base_intf = "GigabitEthernet0/1/" intf_list = [] for intf_number in range(24): intf_name = f"{base_intf}{intf_number}" intf_list.append(intf_name) intf_vars = {"intf_list": intf_list} template_file = "intf_config2.j2" template = env.get_template(template_file) output = template.render(**intf_vars) print(output) #template {%- for intf in intf_list %} interface {{ intf }} switchport access vlan 400 switchport mode access ! {%- endfor %}