aether icon indicating copy to clipboard operation
aether copied to clipboard

Cloud computing management console - initially for Chef Server with EC2

Aether

Summary

We use the Opscode Platform at PharmMD to manage our 50+ servers that we have on Amazon EC2. Sometimes it's nicer to have a web GUI tool that you can point non-techies to, instead of getting them to set up Chef commandline tools.

Aether is that web management interface for our Chef server managed servers. It runs on Rails 3, and currently uses HTTP Basic auth for 'logging in'.

Features

  • List the servers currently running
  • Show ssh and http links to those servers
  • Show ip addresses and instance ids.

Planned Features

  • A better auth system, possibly?
  • Manage servers (or clusters of servers) with a web interface
  • Monitor logs of the Chef runs from those servers (using http://pusherapp.com)
  • Show estimated costs of servers

Getting Started

Aether uses Chef::Knife to communicate with your Chef Server, it is configured in exactly the same manner. By default Aether will look for an /etc/chef/knife.rb file, which should contain your Chef::Knife details, you can use knife configure -i to create one. Obviously you will need your private keys and other details at hand.

Once that's configured and placed in /et/chef/knife.rb (this is configurable, see below) then you just need to run through the configuration options (see below) and you're good to go.

Configurable Options

We use an App config system to set up configurable options, default options are set in config/app.rb. If you want to override something, then you create a file in config/app/ that matches your RAILS_ENV. e.g. config/app/production.rb. There is a sample in that folder for you to copy and change. Here's an example of how you would override the method we use for grouping nodes into clusters.

class App < Configurable
  # node: the node information as given by Chef
  # name: the name that is being compared against  e.g. 'production'
  config.cluster_identification = lambda {|node,name| node[:cluster_name] == name }
end

Links

  • aether: Aether homepage
  • chef: Chef, the automated deployment tool
  • rails: Ruby on Rails

[8]: