Packages

Simple, high-level API for managing cloud servers across multiple providers. This doesn't try to be everything, but instead provides two basic behaviours (server and DNS), for which additional providers can be added.

Current section

Files

Jump to

README.md

# DynamicServerManager

Simple, high-level API for managing cloud servers across multiple
providers from within [Elixir](http://elixir-lang.github.io).

This doesn't try to be everything, but instead provides two basic
behaviours, for which additional providers can be added:

 * Server:
   * Create based on snapshot
   * Destroy
   * Query for basic information

 * DNS:
   * Create/destroy A records for configured domains


## Installation

First, add to your `mix.exs` dependencies:

```elixir
def deps do
  [{:dynamic_server_manager, "~> 0.0.1"}]
end
```
Then, update your dependencies:

```sh
$ mix deps.get
```

## Configuration

See the [sample configuration](config/config.sample.exs)


## Usage

See the [example usage](lib/example.ex)


## Currently supported providers

 * Server:
   * [AWS EC2](https://aws.amazon.com/ec2)
   * [CloudSigma](https://www.cloudsigma.com)
   * [DigitalOcean](https://www.digitalocean.com)
   * [ProfitBricks](https://www.profitbricks.com)

 * DNS:
   * [AWS Route53](https://aws.amazon.com/route53)


## Writing new providers

They are based on the behaviours as defined in the following modules:

 * Server: DynamicServerManager.Server
 * DNS: DynamicServerManager.Dns

Hopefully between that and referencing the existing plugins you'll get the
idea.


### TODO

 * Better documentation (maybe, someday...)
 * Better plugin label/module mapping, possibly via registration