Skip to content

Deploy the development environment template with OpenTofu

Deployment · Updated Jun 2026

Coming from another cloud?

▸AWS·Cloud9

This Quake AI feature maps to AWS’s Cloud9.

Deploy the development environment template with OpenTofu

Stand up a bastion host on a floating IP, development VMs on a private network, and a shared block volume exported over NFS at /srv/shared using the validated OpenTofu template dev-environment. Cloud-init installs a configurable dev_tools package set on every instance.

Monthly cost estimate

Pricing calculator ↗

Sized as a custom package on shared vCPU.

Starting template$90.30/mo

Monthly total for the required template above. Use the configurator below to add optional pieces and see the total update.

What each resource is for

Bastion host

s1a.small · 2 shared vCPU, 2 GiB RAM, 0.5 Gbps

$16.50/mo

2× Dev

s1a.medium · 4 shared vCPU, 4 GiB RAM, 0.5 Gbps

$66.00/mo

Compute shown per role at custom-package rates ($29/dedicated vCPU, $7.25/shared vCPU, $1/GiB RAM). The headline above is the billed total: the cheaper of a named plan and the custom package, plus add-ons.

Included in baseline

s1a.small

2 shared vCPU, 2 GiB RAM, 0.5 Gbps

$16.50

s1a.medium

4 shared vCPU, 4 GiB RAM, 0.5 Gbps

$33.00

s1a.medium

4 shared vCPU, 4 GiB RAM, 0.5 Gbps

$33.00

Compute + RAM rate basis

10 vCPU + 10 GiB RAM at $29/dedicated vCPU, $7.25/shared vCPU, $1/GiB RAM (regular). Totals apply the flat −$5/mo package promotion.

—

Block storage (160 GiB)

160 GiB at $0.08/GiB/mo

$12.80

Public IP (included)

1 included with the custom package

$0.00

Package promotional discount

Flat −$5.00/mo on the custom package (same promotion as named plans).

$-5.00

Included at no charge

These line items are zero on Quake AI. Many other providers meter them separately.

Data transfer (inbound and outbound)

Unlimited data transfer on every plan; Quake AI does not meter per-GB egress.

AWS, GCP, and Azure meter outbound transfer per GB. DigitalOcean and Hetzner include an allowance on compute plans, then charge overage.

Learn more
$0.00

Private networking

Private networks, subnets, Neutron routers, and security groups are included with the plan.

VPC objects are usually free to create elsewhere, but NAT gateways bill hourly plus per-GB processed. Quake AI uses router SNAT with no separate NAT line item.

$0.00

Control-plane API requests

OpenStack API calls for provisioning and management are included.

Some managed services on other clouds meter API calls or charge for premium control-plane features.

$0.00

Pricing data last validated: . For current rates, check quake.ai/pricing.

Quake AIFloating IP(1)BastionNFS clientPrivate networkBlock volume100 GBdev0dev1Dev VM 1NFS servershared volumeDev VM 2NFS client NFS /srv/sharedNFS /srv/shared
Click to zoom
Development environment topology: bastion with one floating IP, dev VMs, and a shared volume exported over NFS at /srv/shared

Prerequisites#

You need:

Step 1: Configure variables#

Copy terraform.tfvars.example to terraform.tfvars and set:

HCL
key_name = "YOUR_KEY_NAME"

Defaults for dev_vm_count, flavors, volume size, and dev_tools packages are documented on the Development Environment reference page.

Step 2: Apply the template#

From the template directory, run:

bash
tofu init
tofu plan
tofu apply

Type yes when prompted. Cloud-init on the dev VMs and bastion can take a few more minutes after tofu apply returns.

When the run finishes, note bastion_ip, dev_instance_ips, and nfs_server_ip from the outputs. Dev VM 1 always receives cidrhost(private_cidr, 10) and serves the NFS export from that address.

Step 3: Verify the shared mount and tooling on a dev VM#

SSH to dev VM 1 through the bastion floating IP:

bash
BASTION=$(tofu output -raw bastion_ip)
DEV1=$(tofu output -json dev_instance_ips | jq -r '.[0]')
ssh -i YOUR_PRIVATE_KEY_PATH -J ubuntu@${BASTION} ubuntu@${DEV1}

On dev VM 1, confirm the shared volume is mounted at /srv/shared:

bash
df -h /srv/shared
mount | grep /srv/shared
command -v git jq tmux python3

Write a marker file on the shared directory from dev VM 1:

bash
echo "shared from $(hostname)" | sudo tee /srv/shared/shared-check.txt
exit

SSH to dev VM 2 and confirm the same file is visible through NFS:

bash
DEV2=$(tofu output -json dev_instance_ips | jq -r '.[1]')
ssh -i YOUR_PRIVATE_KEY_PATH -J ubuntu@${BASTION} ubuntu@${DEV2} 'cat /srv/shared/shared-check.txt && mount | grep /srv/shared'

Next steps#

Clean up#

Run tofu destroy from the project directory when finished. Type yes to confirm. Verify in the Console that the instances, volume, and floating IP are gone.

Was this page helpful?