Coder logo

Templates

Template

Templates are written in Terraform and define the underlying infrastructure that all Coder workspaces run on.

The "Starter Templates" page within the Coder dashboard.

Learn the concepts

While templates are written in standard Terraform, it's important to learn the Coder-specific concepts behind templates. The best way to learn the concepts is by creating a basic template from scratch. If you are unfamiliar with Terraform, see Hashicorp's Tutorials for common cloud providers.

Starter templates

After learning the basics, use starter templates to import a template with sensible defaults for popular platforms (e.g. AWS, Kubernetes, Docker, etc). Docs: Create a template from a starter template.

Extending templates

It's often necessary to extend the template to make it generally useful to end users. Common modifications are:

Learn more about the various ways you can extend your templates.

Best Practices

We recommend starting with a universal template that can be used for basic tasks. As your Coder deployment grows, you can create more templates to meet the needs of different teams.

  • Image management: Learn how to create and publish images for use within Coder workspaces & templates.
  • Dev Containers integration: Enable native dev containers support using @devcontainers/cli and Docker.
  • Envbuilder: Alternative approach for environments without Docker access.
  • Template hardening: Configure your template to prevent certain resources from being destroyed (e.g. user disks).
  • Manage templates with Ci/Cd pipelines: Learn how to source control your templates and use GitOps to ensure template changes are reviewed and tested.
  • Permissions and Policies: Control who may access and modify your template.
  • External Workspaces: Learn how to connect your existing infrastructure to Coder workspaces.