Pontoon – A Digital Ocean CLI (and library) in Python

Digital Ocean has been an excellent way for me to spin up test Ubuntu VMs for testing my expanding collection of PPAs, build scripts, and various other bits and pieces.

While I do stack testing with kitchen, chef, vagrant, and frequently AWS, it is really nifty to be able to boot a fresh VM on the cheap with Digital Ocean, test, nuke, and repeat.
The 512MB Droplet boots more quickly and feels much nippier than its EC2 equivalent (micro), and can actually be a bit more convenient than a local VM because it doesn’t take up a CPU core or local disk space.

I wasn’t really happy with the available options for CLI tools; not featureful enough or require too much mental juggling of implementation details (like ID numbers), so I’ve written Pontoon.

One of the primary goals of Pontoon was that it be written for human consumption first. To me, this means safe defaults, intuitive usage and the option to do more complex things when required.

As a result, Pontoon is also a library, so more complex tasks can be hacked right into the tool if desired, or combined with others. The README is the primary source of documentation, though there is additional API documentation available.

Some quick examples of usage:

Creating a new Droplet:

$ pontoon droplet create foobar
Creating Droplet foobar (512MB using Ubuntu 12.04 x64 in Amsterdam 1)...
.......active

Listing available Droplets:

$ pontoon droplet list
foobar:         (512MB, Ubuntu 12.04 x64, Amsterdam 1, 192.0.2.128, active)

SSHing into a Droplet:

$ pontoon droplet ssh foobar
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-virtual x86_64)
 
 * Documentation:  https://help.ubuntu.com/
Last login: Fri May  3 18:23:56 2013
[email protected]:~#

This is also the first time it’s being published for use by anyone other than myself, so, while I’ve gone to some length to ensure it is well tested, it is most certainly in-development.

This entry was posted in Code. Bookmark the permalink. Both comments and trackbacks are currently closed.