Intro

Opskelaton is an opinionated bootstrap tool for local Sandbox projects.

Opsk aims to solve the following common issues:

  • Devops develop Puppet modules on master machines which results with 'It works on my (machine) master' approach.
  • Implicit/Missing dependencies, like ruby version used, operating system, gems, third party puppet module
  • Manual steps in setting up puppet modules and local sandboxes (like installing third party code).
  • Non standard layout, projects missing README and LICENSE files, no clear separation between developed and dependant code.
  • No clear development guidelines, for example extracting general modules and exporting them.

See it in action here.

Usage

Installing perquisites (on Ubuntu)

 $ sudo aptitude install ruby1.9.1 ruby1.9.1-dev
 # see https://rvm.io/rvm/install/
 $ curl -L https://get.rvm.io | bash -s stable --ruby
 # re-launch current terminal session, the following should work
 $ rvm use system
 $ sudo gem install opskeleton

Creating out first sandbox

 $ rvm use system 
 # parameters include name vagrant-box
 $ opsk generate redis ubuntu-12.10
 $ cd redis-sandbox
 # bundle installs gems in the background
 $ librarian-puppet install 
 $ vagrant up 

Layout

Opskelaton creates the complete folder structure fine tuned to match best practices:

Folder layout:

Lifecycle

Opskelaton defines a simple module life cycle:

  1. Internal non reusable modules (usually specific to a client site) go under static-modules
  2. If we create a general reusable module which is ready for prime time we pull out to a new git repository.
  3. The extracted module is added back as a third party (using librarian-puppet module which reside under module folder.

Life cycle scheme: