Skip to content

Instantly share code, notes, and snippets.

@ntimo
Last active April 15, 2022 07:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ntimo/6182df694b11222b1a0fcbb7011b9027 to your computer and use it in GitHub Desktop.
Save ntimo/6182df694b11222b1a0fcbb7011b9027 to your computer and use it in GitHub Desktop.
coder v2 terraform
terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.3.1"
}
docker = {
source = "kreuzwerker/docker"
version = "2.16.0"
}
}
}
provider "docker" {
host = "unix:///var/run/docker.sock"
}
data "coder_workspace" "me" {
}
resource "coder_agent" "dev" {
arch = "amd64"
os = "linux"
}
resource "docker_image" "coder" {
name = "timovibritannia/coder:latest"
}
resource "docker_volume" "coder_volume" {
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
}
resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = docker_image.coder.latest
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
dns = ["1.1.1.1"]
command = ["sh", "-c", coder_agent.dev.init_script]
env = ["CODER_TOKEN=${coder_agent.dev.token}"]
volumes {
container_path = "/home/coder/"
volume_name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
read_only = false
}
}
terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.3.1"
}
hcloud = {
source = "hetznercloud/hcloud"
version = "1.33.1"
}
}
}
variable "hcloud_token" {
description = <<EOF
Coder requires a Hetzner Cloud token to provision workspaces.
EOF
sensitive = true
}
variable "location" {
description = "What region should your workspace live in?"
default = "nbg1"
validation {
condition = contains(["nbg1", "fsn1", "hel1"], var.location)
error_message = "Invalid zone!"
}
}
provider "hcloud" {
token = var.hcloud_token
}
data "coder_workspace" "me" {
}
resource "hcloud_server" "root" {
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
server_type = "cx11"
location = var.location
image = "ubuntu-20.04"
user_data = <<EOF
#!/bin/bash
export CODER_TOKEN=${coder_agent.dev.token}
${coder_agent.dev.init_script}"
EOF
}
resource "coder_agent" "dev" {
arch = "amd64"
os = "linux"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment