Skip to content

Commit fe47dcd

Browse files
committed
Setup base template
1 parent 5e63201 commit fe47dcd

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed

dogfood/README.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# dogfood template
2+
3+
## How is this hosted?
4+
5+
Coder dogfoods on a beefy, single Teraswitch machine. We decided to use
6+
a bare metal provider for best-in-class cost-to-performance. We decided to
7+
use a single machine for crazy fast parallelized builds.
8+
9+
# How is the provisioner configured?
10+
11+
Our dogfood VM runs an SSH tunnel to our dogfood Docker host's docker socket.
12+
The socket is mounted on `/var/run/dogfood-docker.sock`.
13+
14+
The SSH command can be found hanging out in the screen session named
15+
`docker-dogfood-tunnel`.
16+
17+
The tunnel and corresponding SSH key is under the root user.

dogfood/main.tf

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
terraform {
2+
required_providers {
3+
coder = {
4+
source = "coder/coder"
5+
version = "0.4.2"
6+
}
7+
docker = {
8+
source = "kreuzwerker/docker"
9+
version = "~> 2.16.0"
10+
}
11+
}
12+
}
13+
14+
# Admin parameters
15+
16+
provider "docker" {
17+
host = "unix:///var/run/dogfood-docker.sock"
18+
}
19+
20+
provider "coder" {
21+
}
22+
23+
data "coder_workspace" "me" {
24+
}
25+
26+
resource "coder_agent" "dev" {
27+
arch = "amd64"
28+
os = "linux"
29+
startup_script = <<EOF
30+
#!/bin/sh
31+
# install and start code-server
32+
curl -fsSL https://code-server.dev/install.sh | sh
33+
code-server --auth none --port 13337
34+
EOF
35+
}
36+
37+
resource "coder_app" "code-server" {
38+
agent_id = coder_agent.dev.id
39+
name = "code-server"
40+
url = "http://localhost:13337/?folder=/home/coder"
41+
icon = "/icon/code.svg"
42+
}
43+
44+
45+
resource "docker_volume" "home_volume" {
46+
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-home"
47+
}
48+
49+
resource "docker_container" "workspace" {
50+
count = data.coder_workspace.me.start_count
51+
image = "gcr.io/coder-dogfood/master/coder-dev-ubuntu:latest"
52+
# Uses lower() to avoid Docker restriction on container names.
53+
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
54+
# Hostname makes the shell more user friendly: coder@my-workspace:~$
55+
hostname = lower(data.coder_workspace.me.name)
56+
dns = ["1.1.1.1"]
57+
# Use the docker gateway if the access URL is 127.0.0.1
58+
command = [
59+
"sh", "-c",
60+
<<EOT
61+
trap '[ $? -ne 0 ] && echo === Agent script exited with non-zero code. Sleeping infinitely to preserve logs... && sleep infinity' EXIT
62+
${replace(coder_agent.dev.init_script, "localhost", "host.docker.internal")}
63+
EOT
64+
]
65+
# CPU limits are unnecessary since Docker will load balance automatically
66+
memory = 8192
67+
runtime = "sysbox-runc"
68+
env = ["CODER_AGENT_TOKEN=${coder_agent.dev.token}"]
69+
host {
70+
host = "host.docker.internal"
71+
ip = "host-gateway"
72+
}
73+
volumes {
74+
container_path = "/home/coder/"
75+
volume_name = docker_volume.home_volume.name
76+
read_only = false
77+
}
78+
}

0 commit comments

Comments
 (0)