Mulder
A deploy-time helper for your AWS AutoScaling groups, and servers. Discover the IP addresses of your instances by AutoScalingGroup.
Installation
Add this line to your application's Gemfile:
gem 'mulder'
And then execute:
$ bundle
Or install it yourself as:
$ gem install mulder
Usage
CLI
To see the web servers for an app, and environment:
mulder search banana_sandwich production WebServerGroup
Example output:
[
{
:id => "i-ididid",
:dns_name => "web.prod.example.com",
:public_ip_address => "1.0.1.0",
:private_ip_address => "0.1.0.1",
:availability_zone => "us-east-1a",
:created_at => 2013-08-08 18:21:05 UTC
}
]
To change the configration file:
mulder search banana_sandwich production WebServerGroup human foo.yml
Capistrano
At the top of your deploy.rb
file, add:
require 'mulder/capistrano'
Configure some variables for later use:
set :application, 'banana_sandwich'
set :environment, 'production'
set :aws_creds, '/foo/config/aws.yml'
set :mulder, { Mulder::Capistrano.new(aws_creds, environment, application) }
Setting up your worker
role:
role :worker, *mulder.ips('WorkerServerGroup')
And your app
role:
role(:app, *mulder.ips('AppServerGroup')
And your web
role:
role :web, *mulder.ips('WebServerGroup')
And your db
role:
role :db, mulder.ips('WorkerServerGroup').first, primary: true
You can ask for private IPs as well:
role :app, *mulder.ips('WorkerServerGroup', true)
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request