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