# 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](https://www.youtube.com/watch?v=LNlHC54Ej8c). Usage ========= Installing perquisites (on Ubuntu) ```bash $ 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 ```bash $ 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](https://github.com/rodjek/librarian-puppet) module which reside under module folder. Life cycle scheme: