Description
As a template admin, I want to subject my whole template to version control to simplify change management. If/when #2958 is implemented, this becomes even more true. Let's also remember that our product is built around an IaaC tool, so our users probably prefer this method of configuration.
As a template admin, I sometimes forget what I've named my template. If I thoughtlessly run coder templates update
and my directory happens to correspond with the wrong template I just disrupted developers. In a world without #2958, it's possible that the last template doesn't exist anymore and users are offline for days while it is reconstructed.
As a template admin, I forget that there are distinct coder templates update
and coder templates edit
commands. I'm also confused that coder templates update
is the compliment to coder templates pull
. I expect push
/pull
like git, or doors.
Proposal
coder templates edit
and coder templates update
are unified as coder templates push
.
All the configuration in edit
is now in a template.yml
file that looks like:
version: 1
name: dogfood
description: "Our standard dogfood image"
schedule:
max_ttl: 12h
min_autostart_interval: 24h
# Some future knobs
deprecated_for: "dogfood-ts"
allow:
- all
deny:
- dean@coder.com
Why not HCL?
Our provisioner layer is abstract, and this template config sits above provisioning instead of within it. For example, we may have Docker, Pulumi and Kubernetes provisioners in the near future.