An assistant for chef to handle server provisioning and other related tasks.
In a config/cluster.rb file, you'll use a DSL to define your cluster, its environments and their roles.
# Start by defining and naming the cluster for the application. # You can have as many clusters as you like, and each can have # as many environments and roles as it needs. cluster :app_name do aws_access_key_id 'abc123' aws_secret_access_key 'cba321' # (TODO) set up properties that all environments will inherit # for example, credentials and default instance sizes environment :production do # (TODO) set up properties that apply only to this environment # and override the otherwise inherited cluster properties role :app do # (TODO) finally, set up any properties that are specific # to this role alone, such as number of instances end role :db role :worker end environment :staging do role :app role :db role :worker end end
- Cluster properties
- DSL support to set cluster, environment and role properties in cluster.rb
- Modeling to inherit/override properties
- Command-line interface
- List the instances already running, and show their status
- Provision instances for roles that do not have any running
- Bootstrap newly provisioned instances so they can run Chef
- Configure instances by syncing Chef cookbooks and running chef-solo
- Provisioning logic for all of the above, with Fog
Note on Patches/Pull Requests
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don't break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
Copyright (c) 2009 Nick Zadrozny. See LICENSE for details.