DEV Community

Franz Wong
Franz Wong

Posted on • Edited on

Create and delete Digital Ocean droplet with curl

Assumed you have already get the Digital Ocean API key and SSH key.

digitalocean_token="<your API key>"
ssh_key="<your ssh key fingerprint>"
Enter fullscreen mode Exit fullscreen mode

Create a droplet

Let's create a droplet. You can find values of available regions, size, distro images from https://slugs.do-api.dev/

droplet_name="<your droplet name>"

region="nyc1"
size="s-1vcpu-512mb-10gb"
image="ubuntu-22-04-x64"

# Create droplet
curl -s -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
-d '{"name":"'"${droplet_name}"'","region":"'"${region}"'","size":"'"${size}"'","image":"'"${image}"'","ssh_keys":["'"${ssh_key}"'"],"backups":false,"ipv6":false,"monitoring":false}' \
"https://api.digitalocean.com/v2/droplets"
Enter fullscreen mode Exit fullscreen mode

Get droplet status

We can get the status and wait until it becomes active.

curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}" | jq -r '.droplets[].status'
Enter fullscreen mode Exit fullscreen mode

Get the IP address

After it is provisioned, we can get the public IP address.

droplet_ip=$(curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}" | jq -r '.droplets[].networks.v4[] | select(.type == "public") | .ip_address')

# Login to droplet
ssh -i "${your_ssh_key_path}" root@${droplet_ip}
Enter fullscreen mode Exit fullscreen mode

Delete droplet

After we've done with the droplet, delete it to prevent from charging money.

# Get droplet id
droplet_id=$(curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}" | jq -r '.droplets[].id')

# Delete droplet
curl -s -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets/${droplet_id}"

# It should return no droplet details if it is deleted
curl -s -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${digitalocean_token}" \
"https://api.digitalocean.com/v2/droplets?name=${droplet_name}"
Enter fullscreen mode Exit fullscreen mode

Top comments (0)