poseidon: tame the digital ocean
Python library for managing your Digital Ocean account
.. image:: https://pypip.in/v/poseidon/badge.png
:target: https://crate.io/packages/poseidon/
:alt: Latest PyPI version
.. image:: https://pypip.in/d/poseidon/badge.png
:target: https://crate.io/packages/poseidon/
:alt: Number of PyPI downloads
The DigitalOcean API allows you to manage Droplets and resources within the
DigitalOcean cloud in a simple, programmatic way using conventional HTTP
requests. The endpoints are intuitive and powerful, allowing you to easily make
calls to retrieve information or to execute actions.
This library starts with a python wrapper for the API and aims to build tools to
make it easier to manage, provision, and deploy to Digital Ocean.
Highlights
-
Full featured: API wrapper covering the published DigitalOcean API v2
-
Tested: integration test coverage against most of the API
-
SSH integration: integrates paramiko
library so you can SSH in and issue commands
-
Deployment conveniences: methods like apt
, pip
, and git
for easier deployment
Example
Deploy a new Flask app from github
.. code:: python
import poseidon as P
client = P.connect()
ssh_key_id = client.keys.list()[0]['id']
droplet = client.droplets.create('example.changshe.io', 'sfo1', '512mb',
'ubuntu-14-04-x64', ssh_keys=[ssh_key_id])
domain = client.domains.create('example.changshe.io', droplet.ip_address)
records = client.domains.records(domain['name'])
records.create('A', data=droplet.ip_address)
ssh = droplet.connect()
ssh.apt('git python-pip')
ssh.git(username='changhiskhan', repo='hello_world')
ssh.chdir('hello_world')
ssh.pip_r('requirements.txt')
ssh.nohup('python app.py') # DNS takes a while to propagate
print ssh.ps()