Compute – Startup Scripts

Startup scripts allow you to run initialization logic automatically when a Verda compute instance is created. They are commonly used to install system packages, configure services, prepare machine learning environments, or perform other one-time setup tasks.

In Terraform, startup scripts are managed as first-class resources using verda_startup_script and then attached to compute instances. This separation makes startup scripts reusable across multiple instances and environments.


How startup scripts work

  • Startup scripts run once, during the first boot of an instance.

  • Scripts are executed as root.

  • Updating a startup script does not affect existing instances unless they are recreated.

  • A single startup script can be reused by multiple instances.


Defining a startup script

Create a startup script using the verda_startup_script resource. The script must include a valid shebang (for example, #!/bin/bash).

resource "verda_startup_script" "basic" {
  name = "basic-setup"
  script = <<-EOF
    #!/bin/bash
    set -e

    apt-get update
    apt-get install -y curl wget git
  EOF
}

For more complex setups, startup scripts can install Docker, ML frameworks, or perform custom configuration steps.


Attaching a startup script to an instance

Once defined, reference the startup script from a compute instance using startup_script_id:

The script will be executed automatically when the instance is created.


Common use cases

Startup scripts are typically used for:

  • Installing system packages and drivers

  • Setting up Python, CUDA, or ML frameworks

  • Configuring users, permissions, or SSH settings

  • Pulling application code or model artifacts

  • Starting background services or agents


Best practices

  • Use set -e to fail fast on errors.

  • Keep scripts idempotent where possible.

  • Store scripts in Terraform using heredocs or external files (file()).

  • Avoid hardcoding secrets — use environment variables or secure storage.

  • Treat startup scripts as immutable: recreate instances when scripts change.


Importing existing startup scripts

Existing startup scripts can be imported into Terraform state:


Notes and limitations

  • Startup scripts run only on initial creation.

  • Changes to startup_script_id typically require instance replacement.

  • Logs and side effects depend on your script implementation.

For the full schema and advanced examples, see the Verda Startup Script resource documentation.

Last updated

Was this helpful?