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:
- Internal non reusable modules (usually specific to a client site) go under static-modules
- If we create a general reusable module which is ready for prime time we pull out to a new git repository.
- The extracted module is added back as a third party (using librarian-puppet module which reside under module folder.
Life cycle scheme: