Skip to content
This repository was archived by the owner on Jun 26, 2025. It is now read-only.

Commit c899cf6

Browse files
committed
terraform experiment
1 parent 95a6acb commit c899cf6

File tree

3 files changed

+126
-1
lines changed

3 files changed

+126
-1
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ competition/comp.db
22
# ignore all rust target files
33
target/
44
deploy/inventory
5-
deploy/venv
5+
deploy/venv
6+
**/.terraform/*
7+
*.tfstate
8+
9+
*.tfstate.*

deploy/.terraform.lock.hcl

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deploy.tf

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
terraform {
2+
required_providers {
3+
docker = {
4+
source = "kreuzwerker/docker"
5+
version = "3.6.0"
6+
}
7+
}
8+
}
9+
10+
provider "docker" {
11+
host = "ssh://sebas@speed"
12+
ssh_opts = ["-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null"]
13+
}
14+
15+
data "docker_registry_image" "fuzzjudge" {
16+
name = "ghcr.io/progsoc/fuzzjudge:latest"
17+
}
18+
19+
20+
resource "docker_image" "fuzzjudge" {
21+
name = data.docker_registry_image.fuzzjudge.name
22+
pull_triggers = [data.docker_registry_image.fuzzjudge.sha256_digest]
23+
}
24+
25+
resource "terraform_data" "remote_docker_build" {
26+
depends_on = [ docker_image.fuzzjudge ]
27+
connection {
28+
type = "ssh"
29+
user = "sebas"
30+
host = "speed"
31+
}
32+
33+
provisioner "remote-exec" {
34+
inline = [
35+
"mkdir -p /opt/services/progcomp2025",
36+
"chmod 755 /opt/services/progcomp2025",
37+
"chown sebas:sebas /opt/services/progcomp2025"
38+
]
39+
40+
}
41+
42+
provisioner "file" {
43+
source = "../Dockerfile"
44+
destination = "/opt/services/progcomp2025/Dockerfile"
45+
}
46+
47+
provisioner "remote-exec" {
48+
inline = [
49+
"chmod 644 /opt/services/progcomp2025/competition",
50+
"cd /opt/services/progcomp2025",
51+
"docker build -t progcomp2025:latest ."
52+
]
53+
}
54+
}
55+
56+
resource "docker_image" "progcomp" {
57+
depends_on = [ terraform_data.remote_docker_build ]
58+
name = "progcomp2025:latest"
59+
}
60+
61+
resource "terraform_data" "copy_competition_files" {
62+
connection {
63+
type = "ssh"
64+
user = "sebas"
65+
host = "speed"
66+
}
67+
68+
provisioner "file" {
69+
source = "../competition/"
70+
destination = "/opt/services/progcomp2025/competition"
71+
}
72+
}
73+
74+
variable "progcomp_env" {
75+
type = set(string)
76+
default = [
77+
"COMPETITION_PATH=/app/competition",
78+
]
79+
}
80+
81+
82+
resource "docker_container" "progcomp" {
83+
name = "progcomp2025"
84+
image = docker_image.progcomp.image_id
85+
ports {
86+
internal = 1989
87+
external = 2025
88+
}
89+
volumes {
90+
host_path = "/opt/services/progcomp2025/competition"
91+
container_path = "/app/competition"
92+
}
93+
94+
env = var.progcomp_env
95+
restart = "always"
96+
97+
}
98+

0 commit comments

Comments
 (0)