Templates allow network configurations to be defined separately from the configuration data. This makes configurations reusable, shareable, and easy to update. Jinja2 is a popular template language that allows variables, conditionals, loops, and inheritance in templates. Templates separate the "how" of the configuration syntax from the "what" of the configuration data values. This document provides examples of basic Jinja2 template features like variables, filters, includes, inheritance blocks, and using data sources.