Description

Giving Chef a hand in the provisional kitchen, aussie style. Assumes Fog's API for connecting to and creating instances.

Usage

Provision and converge an instance:

connection = Fog::Compute.new(:provider => 'AWS', :aws_access_key_id => 'KEY', :aws_secret_access_key => 'SECRET')

# Second arg is a hash passed to Fog::Compute::AWS::Servers.create
instance = Slushy::Instance.launch(connection, :flavor_id => 'm1.large', :more => :keys)

# Install ruby and Chef
instance.bootstrap

# Converge using your Chef cookbooks
instance.converge Rails.root.join('provision')

TODO

  • Speed up slow Instance.launch tests caused by Fog's mocking
  • Add SystemTimer for a working 1.8.7 timeout
  • Support providers other than AWS
  • Support OSes other ubuntu
  • Don't hardcode path to chef, caused by ubuntu installing weirdness
  • Fix Instance#wait_for_connectivity occasionally hanging