Updating

Introduction

We present ways to update using Terraform. Note that this is not fully supported.

Some of the updates are working, but the code is not finished, use at your own risk.

Updating with Terraform

Updates are triggered by changing the deployments fields. So for example, if you have the following network resource:

resource "grid_network" "net" {
    nodes = [2]
    ip_range = "10.1.0.0/16"
    name = "network"
    description = "newer network"
}

Then decided to add a node:

resource "grid_network" "net" {
    nodes = [2, 4]
    ip_range = "10.1.0.0/16"
    name = "network"
    description = "newer network"
}

After calling terraform apply, the provider does the following:

  • Add node 4 to the network.
  • Update the version of the workload.
  • Update the version of the deployment.
  • Update the hash in the contract (the contract id will stay the same)

Adjustments

There are workloads that doesn't support in-place updates (e.g. Zmachines). To change them there are a couple of options (all performs destroy/create so data can be lost):

  1. terraform taint grid_deployment.d1 (next apply will destroy ALL workloads within grid_deployment.d1 and create a new deployment)
  2. terraform destroy --target grid_deployment.d1 && terraform apply --target grid_deployment.d1 (same as above)
  3. Remove the vm, then execute a terraform apply, then add the vm with the new config (this performs two updates but keeps neighboring workloads inside the same deployment intact). (CAUTION: this could be done only if the vm is last one in the list of vms, otherwise undesired behavior will occur)
Last change: 2024-10-29