diff --git a/examples/resources/gpu/main.tf b/examples/resources/gpu/main.tf index bc6f2aa1..00c0aa01 100644 --- a/examples/resources/gpu/main.tf +++ b/examples/resources/gpu/main.tf @@ -49,7 +49,7 @@ resource "grid_deployment" "d1" { SSH_KEY = file("~/.ssh/id_rsa.pub") } mounts { - disk_name = "data" + name = "data" mount_point = "/app" } mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex diff --git a/examples/resources/mattermost/main.tf b/examples/resources/mattermost/main.tf index ff0cae37..f758f542 100644 --- a/examples/resources/mattermost/main.tf +++ b/examples/resources/mattermost/main.tf @@ -5,6 +5,13 @@ terraform { } } } +resource "random_bytes" "mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} locals { solution_type = "Mattermost" @@ -36,6 +43,9 @@ resource "grid_network" "net1" { ip_range = "10.1.0.0/16" description = "newer network" add_wg_access = true + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["node"]) = random_bytes.mycelium_key.hex + } } resource "grid_deployment" "d1" { @@ -58,7 +68,7 @@ resource "grid_deployment" "d1" { SMTPSERVER = "smtp.gmail.com" SMTPPORT = 587 } - planetary = true + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex } } @@ -76,7 +86,7 @@ resource "grid_name_proxy" "p1" { solution_type = local.solution_type name = local.name node = grid_scheduler.sched.nodes["gateway"] - backends = [format("http://[%s]:8000", grid_deployment.d1.vms[0].planetary_ip)] + backends = [format("http://[%s]:8000", grid_deployment.d1.vms[0].mycelium_ip)] tls_passthrough = false } @@ -88,6 +98,6 @@ output "node1_zmachine1_ip" { value = grid_deployment.d1.vms[0].ip } -output "ygg_ip" { - value = grid_deployment.d1.vms[0].planetary_ip +output "mycelium_ip" { + value = grid_deployment.d1.vms[0].mycelium_ip } diff --git a/examples/resources/mounts/main.tf b/examples/resources/mounts/main.tf index 016b0cfa..a6cefb1c 100644 --- a/examples/resources/mounts/main.tf +++ b/examples/resources/mounts/main.tf @@ -9,6 +9,14 @@ terraform { provider "grid" { } +resource "random_bytes" "mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} + locals { name = "mountdeployment" } @@ -28,6 +36,9 @@ resource "grid_network" "net1" { ip_range = "10.1.0.0/16" name = local.name description = "newer network" + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["node1"]) = random_bytes.mycelium_key.hex + } } resource "grid_deployment" "d1" { @@ -40,12 +51,13 @@ resource "grid_deployment" "d1" { description = "volume holding app data" } vms { - name = "vm1" - flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" - cpu = 1 - publicip = true - memory = 1024 - entrypoint = "/sbin/zinit init" + name = "vm1" + flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" + cpu = 1 + publicip = true + memory = 1024 + entrypoint = "/sbin/zinit init" + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex mounts { name = "data" mount_point = "/app" @@ -55,11 +67,12 @@ resource "grid_deployment" "d1" { } } vms { - name = "anothervm" - flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" - cpu = 1 - memory = 1024 - entrypoint = "/sbin/zinit init" + name = "anothervm" + flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" + cpu = 1 + memory = 1024 + entrypoint = "/sbin/zinit init" + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex env_vars = { SSH_KEY = file("~/.ssh/id_rsa.pub") } @@ -74,6 +87,12 @@ output "node1_zmachine1_ip" { output "node1_zmachine2_ip" { value = grid_deployment.d1.vms[1].ip } +output "node1_zmachine1_mycelium_ip" { + value = grid_deployment.d1.vms[0].mycelium_ip +} +output "node1_zmachine2_mycelium_ip" { + value = grid_deployment.d1.vms[1].mycelium_ip +} output "computed_public_ip" { value = grid_deployment.d1.vms[0].computedip } diff --git a/examples/resources/multinode/main.tf b/examples/resources/multinode/main.tf index a08a5ab7..085d870f 100644 --- a/examples/resources/multinode/main.tf +++ b/examples/resources/multinode/main.tf @@ -9,6 +9,22 @@ terraform { provider "grid" { } +resource "random_bytes" "d1_mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "d2_mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "d1_mycelium_key" { + length = 32 +} + +resource "random_bytes" "d2_mycelium_key" { + length = 32 +} + locals { name = "multinodedeployment" } @@ -37,6 +53,10 @@ resource "grid_network" "net1" { ip_range = "172.20.0.0/16" name = local.name description = "new network" + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["node1"]) = random_bytes.d1_mycelium_key.hex + format("%s", grid_scheduler.sched.nodes["node2"]) = random_bytes.d2_mycelium_key.hex + } } resource "grid_deployment" "d1" { @@ -44,12 +64,13 @@ resource "grid_deployment" "d1" { node = grid_scheduler.sched.nodes["node1"] network_name = grid_network.net1.name vms { - name = "vm1" - flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" - cpu = 2 - memory = 1024 - publicip = true - entrypoint = "/sbin/zinit init" + name = "vm1" + flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" + cpu = 2 + memory = 1024 + publicip = true + entrypoint = "/sbin/zinit init" + mycelium_ip_seed = random_bytes.d1_mycelium_ip_seed.hex env_vars = { SSH_KEY = file("~/.ssh/id_rsa.pub") } @@ -60,12 +81,13 @@ resource "grid_deployment" "d2" { node = grid_scheduler.sched.nodes["node2"] network_name = grid_network.net1.name vms { - name = "vm2" - flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" - cpu = 1 - memory = 1024 - publicip = true - entrypoint = "/sbin/zinit init" + name = "vm2" + flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" + cpu = 1 + memory = 1024 + publicip = true + entrypoint = "/sbin/zinit init" + mycelium_ip_seed = random_bytes.d2_mycelium_ip_seed.hex env_vars = { SSH_KEY = file("~/.ssh/id_rsa.pub") } @@ -78,6 +100,9 @@ output "node1_zmachine1_ip" { output "node1_zmachine_computed_public_ip" { value = grid_deployment.d1.vms[0].computedip } +output "node1_zmachine_mycelium_ip" { + value = grid_deployment.d1.vms[0].mycelium_ip +} output "node2_zmachine1_ip" { value = grid_deployment.d2.vms[0].ip @@ -85,4 +110,7 @@ output "node2_zmachine1_ip" { output "node2_zmachine_computed_public_ip" { value = grid_deployment.d2.vms[0].computedip } +output "node2_zmachine_mycelium_ip" { + value = grid_deployment.d2.vms[0].mycelium_ip +} diff --git a/examples/resources/nixos-micro/main.tf b/examples/resources/nixos-micro/main.tf index ac22a908..eae2dff3 100644 --- a/examples/resources/nixos-micro/main.tf +++ b/examples/resources/nixos-micro/main.tf @@ -8,19 +8,31 @@ terraform { provider "grid" { } +resource "random_bytes" "mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} + locals { - name = "myvm" + name = "myvm" + node_id = 11 } resource "grid_network" "net1" { name = local.name - nodes = [34] + nodes = [local.node_id] ip_range = "10.1.0.0/16" description = "newer network" # add_wg_access = true + mycelium_keys = { + format("%s", local.node_id) = random_bytes.mycelium_key.hex + } } resource "grid_deployment" "d1" { - node = 34 + node = local.node_id network_name = grid_network.net1.name disks { name = "store" @@ -39,6 +51,7 @@ resource "grid_deployment" "d1" { name = "store" mount_point = "/nix" } + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex env_vars = { SSH_KEY = file("~/.ssh/id_rsa.pub") @@ -56,8 +69,6 @@ pkgs.mkShell { } EOT } - - planetary = true } } @@ -71,6 +82,6 @@ output "computed_public_ip" { value = split("/", grid_deployment.d1.vms[0].computedip)[0] } -output "ygg_ip" { - value = grid_deployment.d1.vms[0].planetary_ip +output "mycelium_ip" { + value = grid_deployment.d1.vms[0].mycelium_ip } diff --git a/examples/resources/peertube/main.tf b/examples/resources/peertube/main.tf index 0d1d9f91..dbd539bc 100644 --- a/examples/resources/peertube/main.tf +++ b/examples/resources/peertube/main.tf @@ -9,6 +9,14 @@ terraform { provider "grid" { } +resource "random_bytes" "mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} + resource "grid_scheduler" "sched" { requests { name = "peertube" @@ -43,12 +51,15 @@ data "grid_gateway_domain" "domain" { resource "grid_network" "net1" { solution_type = local.solution_type name = local.name - nodes = [grid_scheduler.sched.nodes["peertube"]] + nodes = [local.node] ip_range = "10.1.0.0/16" description = "peertube network" + mycelium_keys = { + format("%s", local.node) = random_bytes.mycelium_key.hex + } } resource "grid_deployment" "d1" { - node = grid_scheduler.sched.nodes["peertube"] + node = local.node solution_type = local.solution_type name = local.name network_name = grid_network.net1.name @@ -71,19 +82,19 @@ resource "grid_deployment" "d1" { PEERTUBE_SMTP_PASSWORD = "sendgridpassword" PEERTUBE_BIND_ADDRESS = "::", } - planetary = true + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex } } locals { - ygg_ip = try(length(grid_deployment.d1.vms[0].planetary_ip), 0) > 0 ? grid_deployment.d1.vms[0].planetary_ip : "" + mycelium_ip = try(length(grid_deployment.d1.vms[0].mycelium_ip), 0) > 0 ? grid_deployment.d1.vms[0].mycelium_ip: "" } resource "grid_name_proxy" "p1" { node = grid_scheduler.sched.nodes["domain"] solution_type = local.solution_type name = local.name - backends = [format("http://[%s]:9000", local.ygg_ip)] + backends = [format("http://[%s]:9000", local.mycelium_ip)] tls_passthrough = false } @@ -91,6 +102,6 @@ output "fqdn" { value = data.grid_gateway_domain.domain.fqdn } -output "ygg_ip" { - value = grid_deployment.d1.vms[0].planetary_ip +output "mycelium_ip" { + value = grid_deployment.d1.vms[0].mycelium_ip } diff --git a/examples/resources/presearch/main.tf b/examples/resources/presearch/main.tf index b9d6dcf3..f533f0e3 100644 --- a/examples/resources/presearch/main.tf +++ b/examples/resources/presearch/main.tf @@ -9,6 +9,14 @@ terraform { provider "grid" { } +resource "random_bytes" "mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} + locals { solution_type = "Presearch" name = "presearch" @@ -33,6 +41,9 @@ resource "grid_network" "net1" { ip_range = "10.1.0.0/16" description = "presearch network" add_wg_access = true + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["presearch"]) = random_bytes.mycelium_key.hex + } } # Deployment specs @@ -49,13 +60,13 @@ resource "grid_deployment" "d1" { } vms { - name = local.name - flist = "https://hub.grid.tf/tf-official-apps/presearch-v2.2.flist" - entrypoint = "/sbin/zinit init" - publicip = true - planetary = true - cpu = 1 - memory = 1024 + name = local.name + flist = "https://hub.grid.tf/tf-official-apps/presearch-v2.2.flist" + entrypoint = "/sbin/zinit init" + publicip = true + cpu = 1 + memory = 1024 + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex mounts { name = "data" @@ -99,6 +110,6 @@ output "computed_public_ip" { value = split("/", grid_deployment.d1.vms[0].computedip)[0] } -output "ygg_ip" { - value = grid_deployment.d1.vms[0].planetary_ip +output "mycelium_ip" { + value = grid_deployment.d1.vms[0].mycelium_ip } diff --git a/examples/resources/qsfs/main.tf b/examples/resources/qsfs/main.tf index 46468614..ed551ec6 100644 --- a/examples/resources/qsfs/main.tf +++ b/examples/resources/qsfs/main.tf @@ -9,6 +9,14 @@ terraform { provider "grid" { } +resource "random_bytes" "mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} + locals { metas = ["meta1", "meta2", "meta3", "meta4"] datas = ["data1", "data2", "data3", "data4"] @@ -29,6 +37,9 @@ resource "grid_network" "net1" { nodes = [grid_scheduler.sched.nodes["node"]] ip_range = "10.1.0.0/16" description = "qsfs network" + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["node"]) = random_bytes.mycelium_key.hex + } } resource "grid_deployment" "d1" { @@ -96,12 +107,12 @@ resource "grid_deployment" "qsfs" { } } vms { - name = "vm" - flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" - cpu = 2 - memory = 1024 - entrypoint = "/sbin/zinit init" - planetary = true + name = "vm" + flist = "https://hub.grid.tf/tf-official-apps/base:latest.flist" + cpu = 2 + memory = 1024 + entrypoint = "/sbin/zinit init" + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex env_vars = { SSH_KEY = file("~/.ssh/id_rsa.pub") } @@ -116,6 +127,6 @@ output "metrics" { value = grid_deployment.qsfs.qsfs[0].metrics_endpoint } -output "ygg_ip" { - value = grid_deployment.qsfs.vms[0].planetary_ip +output "mycelium_ip" { + value = grid_deployment.qsfs.vms[0].mycelium_ip } diff --git a/examples/resources/simple-dynamic/main.tf b/examples/resources/simple-dynamic/main.tf index d25aae26..c1f5b4ea 100644 --- a/examples/resources/simple-dynamic/main.tf +++ b/examples/resources/simple-dynamic/main.tf @@ -9,6 +9,14 @@ terraform { provider "grid" { } +resource "random_bytes" "server1_mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "server1_mycelium_key" { + length = 32 +} + resource "grid_scheduler" "sched" { # a machine for the first server instance requests { @@ -17,73 +25,78 @@ resource "grid_scheduler" "sched" { sru = 256 mru = 256 } - # a machine for the second server instance + # # a machine for the second server instance + # requests { + # name = "server2" + # cru = 1 + # sru = 256 + # mru = 256 + # } requests { - name = "server2" - cru = 1 - sru = 256 - mru = 256 + name = "balancer" + cru = 1 + sru = 256 + mru = 256 + public_config = true } - } resource "grid_network" "net1" { nodes = distinct([ grid_scheduler.sched.nodes["server1"], - grid_scheduler.sched.nodes["server2"] ]) ip_range = "10.1.0.0/16" name = "network2" description = "newer network" + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["server1"]) = random_bytes.server1_mycelium_key.hex + } } resource "grid_deployment" "server1" { node = grid_scheduler.sched.nodes["server1"] network_name = grid_network.net1.name vms { - name = "firstserver" - flist = "https://hub.grid.tf/tf-official-apps/simple-http-server-latest.flist" - cpu = 1 - memory = 256 - rootfs_size = 51200 - entrypoint = "/main.sh" + name = "firstserver" + flist = "https://hub.grid.tf/tf-official-apps/simple-http-server-latest.flist" + cpu = 1 + memory = 256 + rootfs_size = 51200 + entrypoint = "/main.sh" + mycelium_ip_seed = random_bytes.server1_mycelium_ip_seed.hex env_vars = { key = "SSH_KEY" value = file("~/.ssh/id_rsa.pub") } - - planetary = true } } -resource "grid_deployment" "server2" { - node = grid_scheduler.sched.nodes["server2"] - network_name = grid_network.net1.name - vms { - name = "secondserver" - flist = "https://hub.grid.tf/tf-official-apps/simple-http-server-latest.flist" - cpu = 1 - memory = 256 - rootfs_size = 51200 - entrypoint = "/main.sh" - env_vars = { - key = "SSH_KEY" - value = file("~/.ssh/id_rsa.pub") - } - - planetary = true - } -} +# resource "grid_deployment" "server2" { +# node = grid_scheduler.sched.nodes["server2"] +# network_name = grid_network.net1.name +# vms { +# name = "secondserver" +# flist = "https://hub.grid.tf/tf-official-apps/simple-http-server-latest.flist" +# cpu = 1 +# memory = 256 +# rootfs_size = 51200 +# entrypoint = "/main.sh" +# mycelium_ip_seed = random_bytes.server2_mycelium_ip_seed.hex +# env_vars = { +# key = "SSH_KEY" +# value = file("~/.ssh/id_rsa.pub") +# } +# } +# } resource "grid_fqdn_proxy" "balancer" { - node = 15 + node = grid_scheduler.sched.nodes["balancer"] name = "balancer" fqdn = "hamada1.3x0.me" - backends = [format("http://[%s]", grid_deployment.server1.vms[0].planetary_ip), format("http://[%s]", grid_deployment.server2.vms[0].planetary_ip)] + backends = [format("http://[%s]", grid_deployment.server1.vms[0].mycelium_ip)] tls_passthrough = false } - output "load_balancer_domain" { value = grid_fqdn_proxy.balancer.fqdn } diff --git a/examples/resources/singlenode/main.tf b/examples/resources/singlenode/main.tf index cb2e075f..1a3fdcb2 100644 --- a/examples/resources/singlenode/main.tf +++ b/examples/resources/singlenode/main.tf @@ -12,6 +12,18 @@ locals { name = "testvm" } +resource "random_bytes" "vm1_mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "vm2_mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} + resource "grid_scheduler" "sched" { requests { name = "node1" @@ -29,6 +41,9 @@ resource "grid_network" "net1" { nodes = [grid_scheduler.sched.nodes["node1"]] ip_range = "10.1.0.0/16" description = "newer network" + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["node1"]) = random_bytes.mycelium_key.hex + } } resource "grid_deployment" "d1" { name = local.name @@ -43,7 +58,7 @@ resource "grid_deployment" "d1" { env_vars = { SSH_KEY = file("~/.ssh/id_rsa.pub") } - planetary = true + mycelium_ip_seed = random_bytes.vm1_mycelium_ip_seed.hex } vms { name = "anothervm" @@ -54,14 +69,14 @@ resource "grid_deployment" "d1" { env_vars = { SSH_KEY = file("~/.ssh/id_rsa.pub") } - planetary = true + mycelium_ip_seed = random_bytes.vm2_mycelium_ip_seed.hex } } output "vm1_ip" { value = grid_deployment.d1.vms[0].ip } -output "vm1_ygg_ip" { - value = grid_deployment.d1.vms[0].planetary_ip +output "vm1_mycelium_ip" { + value = grid_deployment.d1.vms[0].mycelium_ip } output "vm1_console_url" { value = grid_deployment.d1.vms[0].console_url @@ -69,6 +84,6 @@ output "vm1_console_url" { output "vm2_ip" { value = grid_deployment.d1.vms[1].ip } -output "vm2_ygg_ip" { - value = grid_deployment.d1.vms[1].planetary_ip +output "vm2_mycelium_ip" { + value = grid_deployment.d1.vms[1].mycelium_ip } diff --git a/examples/resources/taiga/main.tf b/examples/resources/taiga/main.tf index ddd12212..4b249b88 100644 --- a/examples/resources/taiga/main.tf +++ b/examples/resources/taiga/main.tf @@ -13,6 +13,14 @@ locals { provider "grid" { } +resource "random_bytes" "mycelium_ip_seed" { + length = 6 +} + +resource "random_bytes" "mycelium_key" { + length = 32 +} + resource "grid_scheduler" "sched" { requests { name = "node" @@ -35,6 +43,9 @@ resource "grid_network" "net2" { ip_range = "10.1.0.0/16" description = "taiga network" add_wg_access = true + mycelium_keys = { + format("%s", grid_scheduler.sched.nodes["node"]) = random_bytes.mycelium_key.hex + } } resource "grid_deployment" "node1" { @@ -75,7 +86,7 @@ resource "grid_deployment" "node1" { EMAIL_HOST_USER = "", EMAIL_HOST_PASSWORD = "", } - planetary = true + mycelium_ip_seed = random_bytes.mycelium_ip_seed.hex } } @@ -87,7 +98,7 @@ resource "grid_name_proxy" "p1" { solution_type = local.solution_type name = local.name node = grid_scheduler.sched.nodes["gateway"] - backends = [format("http://[%s]:9000", grid_deployment.node1.vms[0].planetary_ip)] + backends = [format("http://[%s]:9000", grid_deployment.node1.vms[0].mycelium_ip)] tls_passthrough = false } @@ -95,8 +106,8 @@ output "node1_zmachine1_ip" { value = grid_deployment.node1.vms[0].ip } -output "node1_zmachine1_ygg_ip" { - value = grid_deployment.node1.vms[0].planetary_ip +output "node1_zmachine1_mycelium_ip" { + value = grid_deployment.node1.vms[0].mycelium_ip } output "fqdn" {