Skip to content
bash scripts with chef like syntax
Ruby Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
spec
.gitignore
Gemfile
LICENSE
README.rdoc
Rakefile
VERSION.yml
sous_chef.gemspec

README.rdoc

Sous Chef

This gem is now unused and will likely go unmaintained.

File issues if you wish to attempt revival.

Thank you for your interest.

  • Engine Yard Team

Description

Create bash scripts with chef-like syntax

Example

Given this code:

config = {:dir => '/home'}

SousChef.prep(:verbose, :shebang) do
  halt_on_failed_command

  log do
    stdout "/root/stdout.log"
    stderr "/root/stderr.log"
  end

  file "/etc/config.yml" do
    content config.to_yaml
    mode 0600
  end

  execute 'rvm' do
    creates "/usr/local/rvm/scripts/rvm"
    command "gem install rvm && rvm-install"
  end

  execute "source rvm" do
    command <<-EOS
RUBYOPT=""
source /usr/local/rvm/scripts/rvm
    EOS
  end

  gemfile config[:dir] do
    source "http://gemcutter.org/"

    gem 'chef'
    gem 'dbi',          '0.4.3'
    gem 'dbd-mysql',    '0.4.3'
    gem 'open4',        '0.9.6'
  end

  execute 'install bundler' do
    command "gem install bundler --no-ri --no-rdoc"
  end

  execute 'bundle gems' do
    cwd config[:dir]
    command "gem bundle"
  end
end

the return value will be:

#!/bin/bash

# halt on failed command
set -e

exec 1>/root/stdout.log 2>/root/stderr.log

# /etc/config.yml
if ! test -e /etc/config.yml; then
  echo '--- 
:dir: /home
' > /etc/config.yml
fi
chmod 0600 /etc/config.yml

# rvm
if ! test -e /usr/local/rvm/scripts/rvm; then
  gem install rvm && rvm-install
fi

# source rvm
RUBYOPT=""
source /usr/local/rvm/scripts/rvm

# /home
if ! test -e /home/Gemfile; then
  echo 'source "http://gemcutter.org/"

gem "chef"
gem "dbd-mysql", "0.4.3"
gem "dbi",       "0.4.3"
gem "open4",     "0.9.6"' > /home/Gemfile
fi

# install bundler
gem install bundler --no-ri --no-rdoc

# bundle gems
cd /home
gem bundle
Something went wrong with that request. Please try again.