1
0
Fork 0
mirror of https://github.com/imjasonh/terraform-playground synced 2026-07-08 07:44:57 +00:00
terraform-playground/cf-worker-go/main.tf
Jason Hall 91e9eee26b
WIP: cf-worker-go; tf-cloudfuare doesn't work with wasm :(
Signed-off-by: Jason Hall <jason@chainguard.dev>
2023-12-30 15:47:37 -05:00

58 lines
1.6 KiB
HCL

terraform {
required_providers {
cloudflare = { source = "cloudflare/cloudflare" }
}
}
variable "name" { type = string }
variable "cloudflare_zone" { type = string }
variable "cloudflare_api_token" { type = string }
variable "cloudflare_account_id" { type = string }
provider "cloudflare" {
api_token = var.cloudflare_api_token
}
// TODO: need to manually enable the workers.dev route in the dashboard
// use cloudflare_worker_route instead to set up routing
resource "cloudflare_worker_script" "script" {
depends_on = [terraform_data.build]
account_id = var.cloudflare_account_id
name = var.name
content = file("${path.module}/build/worker.mjs")
// Error: error creating worker script: Wasm and blob bindings are not supported with modules; use imports instead (10021)
module = false
webassembly_binding {
name = "WASM"
module = filebase64("./build/app.wasm")
}
}
/*
resource "cloudflare_worker_route" "route" {
zone_id = data.cloudflare_zone.zone.id
pattern = "${var.name}.${var.cloudflare_zone}/*"
script_name = cloudflare_worker_script.script.name
}
data "cloudflare_zone" "zone" {
name = var.cloudflare_zone
}
*/
resource "terraform_data" "build" {
# Changes to *.go files requires re-building it.
input = {
# https://stackoverflow.com/questions/51138667/can-terraform-watch-a-directory-for-changes
dir_sha1 = sha1(join("", [for f in fileset("${path.module}", "*.go") : filesha1("${path.module}/${f}")]))
}
provisioner "local-exec" {
command = <<EOC
go run github.com/syumai/workers/cmd/workers-assets-gen@v0.18.0 -mode=go
GOOS=js GOARCH=wasm go build -o ./build/app.wasm .
EOC
}
}