# 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
# install vagrant [see](http://docs-v1.vagrantup.com/v1/docs/getting-started/) for latest package
$ wget http://files.vagrantup.com/packages/64e360814c3ad960d810456add977fd4c7d47ce6/vagrant_x86_64.deb
$ sudo dpkg -i vagrant_x86_64.deb
# 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:
# Copyright and license
Copyright [2013] [Ronen Narkis]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.