-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.tf
More file actions
65 lines (51 loc) · 1.26 KB
/
main.tf
File metadata and controls
65 lines (51 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
terraform {
required_providers {
vers = {
source = "hdr/vers"
}
}
}
provider "vers" {
api_key = var.vers_api_key != "" ? var.vers_api_key : null
}
# --- Layer 0: Base VM ---
resource "vers_vm" "golden_base" {
vcpu_count = 2
mem_size_mib = 4096
fs_size_mib = 8192
wait_boot = true
}
# --- Provision the golden image ---
resource "vers_provision" "golden_setup" {
vm_id = vers_vm.golden_base.id
files = [
{
source = "${path.module}/scripts/bootstrap.sh"
destination = "/tmp/bootstrap.sh"
},
]
commands = [
"chmod +x /tmp/bootstrap.sh",
"bash /tmp/bootstrap.sh",
"mkdir -p /root/.swarm/status",
"echo '{\"vms\":[]}' > /root/.swarm/registry.json",
"touch /root/.swarm/registry.lock",
]
triggers = {
bootstrap = filesha256("${path.module}/scripts/bootstrap.sh")
}
}
# --- Commit as golden image ---
resource "vers_vm_commit" "golden" {
vm_id = vers_vm.golden_base.id
keep_paused = true
depends_on = [vers_provision.golden_setup]
triggers = {
provision_id = vers_provision.golden_setup.id
}
}
# --- Optional: spawn workers from golden image ---
resource "vers_vm_restore" "worker" {
count = var.worker_count
commit_id = vers_vm_commit.golden.commit_id
}