Skip to main content

Reference

CMS / Single Droplet

Run the CMS on one Droplet with managed MySQL, VPC, firewall, DNS, and an optional bastion host.

Overview

Variant overview

Run the CMS on one Droplet with managed MySQL, VPC, firewall, DNS, and an optional bastion host.

Manifest file

Edit cms-vm.environment.yaml to change the scenario.

Rendered output

OPSd renders the manifest into OpenTofu under rendered/cms-vm.

Supported changes

The variant defines which add, remove, and scale operations are supported.

Good fit

you want a simple VM-based starting point; host-level access matters; the team is comfortable owning more operating detail directly

Tradeoff

More operating responsibility sits with the team from the start.

What gets created for this setup

This diagram shows the result you get after rendering the selected variant.

Infrastructure shape

Actor

Provider Zone

Edge

Network

Compute

Data

DNS
Firewall
Droplet
MySQL
Actor -> DNS · request 1 DNS -> Firewall · firewall 2 Firewall -> Droplet · ingress 3 Droplet -> MySQL · db 4

Before you start

Shared setup is covered in Installation and the Introduction. This section lists the minimum things you need before the first render for DigitalOcean.

  • Installation install the shared OPSd CLI.
  • Introduction understand the workflow boundary and required toolchain.
  • Have a container image or build artifact ready.

Initialize this variant

This is the first-run path when no scenario has been initialized yet.

Initialization sequence

opsd list blueprints
opsd init blueprint cms cms-vm.environment.yaml --variant vm
opsd validate manifest cms-vm.environment.yaml
opsd render manifest cms-vm.environment.yaml --output rendered/cms-vm
cd rendered/cms-vm
tofu init
tofu plan

# review the rendered output before planning
cd rendered/cms-vm
tofu init
tofu plan

Edit the manifest

After the first deployment, the supported path is still manifest first. Use the supported opsd add, remove, and scale commands for this variant, then validate and render again.

Supported change commands

Scale the primary compute group

Adjust the replica count on the existing group.

opsd scale compute-group cms-vm.environment.yaml primary --replicas 2

Add a support node

Add a bastion or helper node and remove it again if needed.

opsd add node vm cms-vm.environment.yaml --id bastion --role bastion --profile s-1vcpu-1gb

Remove a support node

Drop a helper node when the variant supports removal.

opsd remove node cms-vm.environment.yaml bastion

Add a load balancer

Add a public entrypoint in the manifest.

opsd add load-balancer cms-vm.environment.yaml --id lb-public --visibility public --port 80 --target-port 80

Remove a load balancer

Clear the load balancer list when the variant supports removal.

opsd remove load-balancer cms-vm.environment.yaml web-public

Edit, validate, render

# edit cms-vm.environment.yaml

# validate the config before rendering
opsd validate manifest cms-vm.environment.yaml

# render the updated output and review it
opsd render manifest cms-vm.environment.yaml --output rendered/cms-vm
cd rendered/cms-vm

# plan and apply only after the diff is clear
tofu plan
tofu apply

Supported changes

These examples come from the variant capability map and show the supported add, remove, and scale operations for this setup.

Scale the primary compute group

Adjust the replica count on the existing group.

opsd scale compute-group cms-vm.environment.yaml primary --replicas 2

Add a support node

Add a bastion or helper node and remove it again if needed.

opsd add node vm cms-vm.environment.yaml --id bastion --role bastion --profile s-1vcpu-1gb

Remove a support node

Drop a helper node when the variant supports removal.

opsd remove node cms-vm.environment.yaml bastion

Add a load balancer

Add a public entrypoint in the manifest.

opsd add load-balancer cms-vm.environment.yaml --id lb-public --visibility public --port 80 --target-port 80

Remove a load balancer

Clear the load balancer list when the variant supports removal.

opsd remove load-balancer cms-vm.environment.yaml web-public

Changes are not active yet

Editing the manifest changes the desired state. To make it real, validate the manifest, render the updated output, and then run `tofu apply` against the rendered directory.

opsd validate manifest cms-vm.environment.yaml
opsd render manifest cms-vm.environment.yaml --output rendered/cms-vm
cd rendered/cms-vm
tofu plan
tofu apply

Related variants

Use the scenario overview to compare the other supported variants for the same blueprint.