2022: Towards a Declarative Definition of Network Configurations Custom Terraform Provider for Rest Apis

Bachelor's theses

Kilian Warmuth



Infrastructure as Code (IaC) is the state-of-the-art method of managing resources both on-premise and in the cloud. It is an approach to automate the complete lifecycle of any resource utilizing software development practices. The main goal is a consistent and repeatable representation of the entire developed system. One of the most popular IaC tools is Terraform. With Terraform, infrastructure requirements are formalized as declarative configuration files consisting of providers and resources. A provider is a plugin that allows interaction with external entities like AWS or other APIs. Each provider defines a set of data sources and resource types. A resource, on the other hand, describes some infrastructure object like a virtual machine, DNS record, or Network.

This thesis consists of two parts. First, you will develop and outline how REST APIs can be implemented in custom Terraform providers. During the second part, you will design and implement a REST API for an existing network stack and use your approach to implement the API in Terraform.


  • Design a general approach how REST APIs can be implemented as Terraform Providers
  • Design and implement a robust and secure REST API for an existing Python Library which controls DNS, DHCP, etc.
  • Design and implement a Terraform Provider for this REST API


  • Compulsory
    • Linux and networking knowledge
    • Comfortable with Python
    • Willing to learn Go and Terraform
  • Preferred
    • Good Python Knowledge
    • Good Go Knowledge
    • Experience in API design
    • Experience with Terraform and its workflow


Email to matthias.linhuber@tum.de with

  • A short motivation letter
  • A summary of your projects/experience
  • What ever you want to share with us

Head of Research Group

Prof. Dr. Stephan Krusche

Administrative office

Sophia Adelmeier

Office: 01.07.052
Phone: +49 (89) 289-18206
Fax: +49 (89) 289-18207 Boltzmannstraße 3
85748 Garching b. München