Hyrb

It's for bootstrapping projects. There's a lot left to do.

Setup

Prerequisites

  • Required: ruby 2.0
  • Optional: ansible, vagrant

Installation

As a CLI utility:

$ gem install hyrb

This will make the 'hyrb' command available to your shell.

Configuration

All optional, should work without any additional setup.

As you use it, it will prompt you for various pieces of information that it needs. This will all be stored in a ~/.hyfn directory, which it will create (this location is overridable via the HYFN_CONFIG_PATH env variable.)

Most the files in here can safely be edited by hand as well, with the exception of the cache directory, which gets overwritten a lot.

Usage

List available tasks with:

$ hyrb

Then go crazy.

Hacking

Adding New Tasks

  1. Create a new task module in the lib/hyrb/tasks dir. Use one of the existing ones as a template.
  2. Create a new command class in the lib/hyrb/commands dir. Again, use an existing command as a template. Add a method for every task you want to be callable via the CLI.
  3. Require and register your subommand in lib/hyrb/commands/main.rb

Todo

  • Add teams to ansible
  • Require dependencies (esp. fog) on-demand only.
  • Save environments correctly on project save.
  • Improve flavor selection stuff for Rackspace
  • Deal with rackspace pubkeys
  • Make a DSL for this
    • Automatically create Thor commands from tasks
    • This will allow lazy loading as well
  • Add coverage for at least the locals parts (config, etc)
  • Refactor model attributes to support documentation, constraints, etc
    • Allow a couple kinds of defaults
      • Within a model, so that like, server_name and repo_name will fall back to name if not defined.
      • For a project environment, so that an environment will use the project default for certain attributes if they're not defined on the current environment.
    • Can we dump the default list of users into the project file and let users trim it down?
      • Break project setup into two steps, first to prompt for everything needed in the config file, then let the user edit it, then create everything.
  • Use vagrant-hostmanager.
  • Thor task to install pre-reqs