README.md in opskeleton-0.6.5 vs README.md in opskeleton-0.6.6

- old
+ new

@@ -2,160 +2,41 @@ # Intro Opskelaton is an opinionated bootstrap tool for local Sandbox projects. -Opsk aims to solve the following common issues: +Opskeleton 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. +Opskeleton comes to solve these issues by introducing a decentralized development workflow with pre-defined layout, packaging and dependency management. See it in action [here](https://www.youtube.com/watch?v=LNlHC54Ej8c). [![Build Status](https://travis-ci.org/opskeleton/opskeleton.png)](https://travis-ci.org/opskeleton/opskeleton) -Usage -========= +# Usage + +## Installation + Perquisites (on Ubuntu): -* Vagrant 1.4.x +* Vagrant 1.6.x * RVM * Ruby 1.9.x ```bash $ rvm use system $ sudo gem install opskeleton ``` -Creating out first sandbox +Now Follow either [Chef](chef.md) or [Puppet](puppet.md). -```bash - $ rvm use system - # parameters include name vagrant-box - $ opsk generate_puppet redis ubuntu-13.10 - $ cd redis-sandbox - $ bundle install - $ librarian-puppet install - $ vagrant up -``` - -## Layout - -Opskelaton creates the complete folder structure fine tuned to match best practices: - -Folder layout: - -<img src="https://raw.github.com/narkisr/vagrant-sketching-board/master/images/opsk-folders.png" width='30%' hight='50%' alt="" /> - - -## Module 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 resides under modules folder. - -Life cycle scheme: - -<img src="https://raw.github.com/narkisr/vagrant-sketching-board/master/images/module-lifecycle-black.png" width='30%' hight='50%' alt="" /> - -Creating new (static) modules is easy as: - -```bash -$ opsk module foo -``` - -Each generated module will contain puppet-rspec with matching Rakefile (see [testing](https://github.com/opskeleton/opskeleton#testing)). - -## Testing - -Opskelaton supports two levels of testing: - -* Static module testing that includes rspec and linting. -* Integration testing using [serverspec](http://serverspec.org/) and Vagrant. - -```bash -# linting all static modules -$ rake lint -# rspecing -$ rake modspec -# running serverspec -$ rake spec -``` - -## Packaging -Opskelaton fully supports deployment and portable execution of sandboxes on non Vagrant environments: - -```bash -$ opsk generate_puppet foo ubuntu-13.10 -$ cd foo-sandbox -# The package version file -$ cat opsk.yaml ---- - version: '0.0.1' - name: foo - -# post bundle and gem install .. -$ opsk package - create pkg/foo-sandbox-0.0.1 - create pkg/foo-sandbox-0.0.1/scripts - create pkg/foo-sandbox-0.0.1/scripts/lookup.rb - chmod pkg/foo-sandbox-0.0.1/scripts/lookup.rb - create pkg/foo-sandbox-0.0.1/scripts/run.sh - chmod pkg/foo-sandbox-0.0.1/scripts/run.sh - create pkg/foo-sandbox-0.0.1/manifests/site.pp - exist pkg -$ ls pkg -foo-sandbox-0.0.1 foo-sandbox-0.0.1.tar.gz -``` -The packaging process creates a portable tar file that can be run on any machine with puppet installed via the bundled run.sh: - -```bash -$ tar -xvzf foo-sandbox-0.0.1.tar.gz -$ cd foo-sandbox-0.0.1 -$ sudo ./run.sh -``` - -An external node classifier based runner is also available under scripts/run.sh, this runner expects to get a <hostname>.yaml input file with the required node classes. - - -## Deployment - -The packaged tar files can be consumed using any tool and protocol however http is recommended, opsk has built in support for deploying public sandboxes into bintray: - -```bash -$ opsk package -$ opsk deploy <bintray-repo> -deployed foo-sandbox-0.0.1.tar.gz to http://dl.bintray.com/narkisr/<bintray-repo>/foo-sandbox-0.0.1.tar.gz -``` - -Make sure to [configure](https://github.com/narkisr/bintray-deploy#usage) configure the bintray API key. - -## Updating -Keeping you box up to date with latest opsk version is easy, just re-generate it again and resolve conflicts by answering y/n: -```bash -# Moving to latest opsk -$ gem update opskeleton -# foo box already exists -$ opsk generate foo <vagrant-box> - exist foo-sandbox - conflict foo-sandbox/Vagrantfile -Overwrite /home/ronen/code/foo-sandbox/Vagrantfile? (enter "h" for help) [Ynaqdh] -``` - -## Vagrant -Opskeleton generates a Vagrant file with couple of enhancements: - -* VAGRANT_BRIDGE (default eth0) for setting up public bridge on the go. -* PUPPET_ENV (default dev) for setting puppet environment. -* Puppet options preset to match modules and hiera folders. - -## Boxes +# Boxes Opskeleton recommends the use of [box-cutter](https://github.com/box-cutter) in order to create Vagrant boxes in a consistent manner (as no free hosting solution currently exist): ```bash # make sure to have latest packer $ packer version Packer v0.6.0