Want to automate your infrastructure leveraging the awesome Digital Ocean API V2, then the shell is your friend. Here we will learn about how to access the API from the command line using Elixir’s Escript tooling.
Doex, access Digital Ocean’s API through the shell and/or Elixir
First, if you don’t know Digital Ocean (my referral link should you wish to sign up, we both get a little kickback) is a cloud provider that helps you spin up new servers, quickly, to help get your application into production.
After setting up your DO account, you then need to generate a new Token through the API link from the top of your digital ocean dashboard.
Store that token safely, as it allows scripts to perform actions on your account without human intervention.
To install doex, run
mix escript.install github capbash/doex
You might see a warning like
warning: you must append "/Users/<username>/.mix/escripts" to your PATH if you want to invoke escripts by name
Heed the adashvice and add it to your path, for example (each system is slightly different, so don’t blindly follow, instead learn more about PATH)
vi ~/.bash_profile # add something like PATH="$HOME/.mix/escripts:$PATH" export PATH
If you are up and running, then you can get help by calling doex without any arugments.
The output will show you what’s available on the command line, at this time that includes
doex v0.3.1 doex is a API client for Digital Ocean's API v2. Available tasks: doex config # Reads, updates or deletes Doex config doex droplets.create # Create a droplet on Digital Ocean doex init # Initialize your doex config Further information can be found here: -- https://hex.pm/packages/doex -- https://github.com/capbash/doex
doex init && \ doex config token ABC123DEF456
Next, let’s create a new droplet.
mix doex.droplets.create mydroplet \ --region tor1 \ --tags myt \ --image ubuntu-14-04-x64 \ --size 512mb
It’s just that easy.
The command line script is still evolving, but all GET/POST DigitalOcean endpoints are available from the elixir doex library.
If you are looking for a feature-complete command line tool, then checkout DigitalOcean’s doctl command line tool. It is written in Go, and provides an excellent shell for interacting with the DO API.
doctl is a command line interface for the DigitalOcean API. Usage: doctl [command] Available Commands: account account commands auth auth commands completion completion commands compute compute commands version show the current version Flags: -t, --access-token string API V2 Access Token -c, --config string config file (default is $HOME/.config/doctl/config.yaml) -o, --output string output format [text|json] (default "text") --trace trace api access -v, --verbose verbose output Use "doctl [command] --help" for more information about a command.
There are also a few other Elixir specific libraries, but none that have gained much traction and none provide both elixir API access AND command line access.
Yep, that’s doex at the the bottom there with a ton of downloads; watch out!