bjcatar
By:
bjcatar

How do I create a droplet and capture its id to a variable?

May 24, 2016 640 views
API

I'm looking to automate as much as possible. I'm using curl to create a droplet. How can I capture the assigned id and save to a variable so that I can then issue other commands where I need this id?

Regards,
GH.

2 Answers

When you create a droplet via the API an event id for the creation process is returned. You can then poll the events endpoint for that event's status and once complete, the droplet's ID. That ID can then be used against the droplet endpoint to gather other details like IP addresses, etc.

Because the IPs and other details are only assigned once the droplet is created they cannot be polled directly from the creation event.

When you create a Droplet via the API, you receive a JSON response containing information about the Droplet. You can use the jq tool to parse that response and extract the specific value you want by piping the output to it. You can also assign it a variable at the same time. You could do it like this:

droplet_id=`curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $DO_TOKEN" \
    -d '{"name":"example","region":"nyc3","size":"512mb","image":"ubuntu-14-04-x64"}' \
    "https://api.digitalocean.com/v2/droplets" | jq .droplet.id`

Running echo $droplet_id will return the Droplet's ID if the request was successful.

Have another answer? Share your knowledge.