Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

terraform-digital-ocean

Terraform configuration for provisioning a DigitalOcean droplet. Uses cloud-init to bootstrap the server on first boot, including installation of the sysinfo CLI tool.

Requirements

  • Terraform >= 1.5.0
  • DigitalOcean account with an API token
  • SSH key registered in your DigitalOcean account

Project Structure

terraform-digital-ocean/
├── main.tf                  # Provider, SSH key lookup, droplet resource
├── variables.tf             # Input variables
├── outputs.tf               # Droplet IP, ID, SSH command
├── cloud-init.yaml          # First boot provisioning script
├── terraform.tfvars         # Your values — never commit this
└── .gitignore

Usage

1. Clone the repo

git clone https://github.com/zemation/terraform-digital-ocean.git
cd terraform-digital-ocean

2. Create your tfvars file

cp terraform.tfvars.example terraform.tfvars

Edit terraform.tfvars with your values:

do_token        = "YOUR_DIGITALOCEAN_API_TOKEN"
ssh_key_name    = "YOUR_KEY_NAME"
droplet_name    = "server-zemation"
droplet_image   = "ubuntu-24-04-x64"
droplet_size    = "s-1vcpu-1gb"
region          = "nyc3"
sysinfo_version = "v1.0.0"

3. Deploy

terraform init
terraform plan
terraform apply

4. Connect

After apply completes, Terraform outputs the SSH command:

ssh_command = "ssh root@<droplet_ip>"

5. Destroy

terraform destroy

What Gets Installed

On first boot cloud-init runs and installs:

Tool Version Location
sysinfo Configurable via sysinfo_version /usr/local/bin/sysinfo

Variables

Name Description Default
do_token DigitalOcean API token required
ssh_key_name SSH key name registered in DO zemation
droplet_name Name for the droplet server-zemation
droplet_image OS image slug ubuntu-24-04-x64
droplet_size Droplet size slug s-1vcpu-1gb
region DigitalOcean region nyc3
sysinfo_version sysinfo release tag to install v1.0.0

Outputs

Name Description
droplet_ip Public IP address
droplet_id DigitalOcean droplet ID
droplet_name Droplet name
droplet_region Deployed region
ssh_command Ready-to-run SSH command

Notes

  • terraform.tfvars is gitignored — never commit your API token
  • ssh_key_name is case sensitive and must match exactly what is stored in DigitalOcean
  • cloud-init runs once on first boot — to re-run provisioning destroy and reapply

About

Configuring a digital ocean droplet using terraform to setup basic server and download our sysinfo app

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages