Create and delete Digital Ocean droplet with curl

franzwong

Franz Wong

Posted on September 23, 2023

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
💖 💪 🙅 🚩
franzwong
Franz Wong

Posted on September 23, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related