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
Current section
Files
dynamic_server_manager
README.md
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