uses puppet to build out application stack
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Stack builder is a tool for building stacks of systems using Puppet Cloud Provisioner tool. This project is an experimental prototype so expect changes.

Installation and configuration

EC2 Account

Create EC2 account. Create keypair in appropriate EC2 region. Create the following security groups:

  • default: TCP 22, icmp all.
  • puppetmaster: TCP 443, TCP 8140.


Install the latest version of puppet from or or use envpuppet script to run from source.

Puppet Cloud Provisioner

Stack builder requires Puppet Cloud Provisioner. Cloud Provisioner with VMware support can be obtained by installing Puppet Enterprise 2.0+.

The following instructions are for users using cloud provisioner from source. For users of module see getting started documentation, for Puppet Enterprise users see cloud provisioning documentation.

Install ruby and rubygems:

apt-get install ruby rubygems
yum install ruby rubygems

Install guid and fog ruby gems:

gem install guid
gem install fog

Git clone puppet cloud provisioner and add its lib directory to RUBYLIB

mkdir ~/src/
cd ~/src/
git clone
export RUBYLIB=~/src/puppetlabs-cloud-provisioner/lib:$RUBYLIB

Configure fog credentials in ~/.fog:

  :aws_access_key_id: ...
  :aws_secret_access_key: ...

Verify cloud provisioner Puppet face is loaded and working:

puppet help node_aws

Install stack builder

Git clone stack deployer and add its lib directory to RUBYLIB

cd ~/src
git clone
export RUBYLIB=~/src/stack_builder/lib:$RUBYLIB

Verify stack_builder Puppet face is loaded and working:

puppet help stack


Stack builder supports default setting in Puppet[:confdir]/stack_builder.yaml (puppet agent --configprint confdir).

    keyname: stack_keys
    type: m1.small
    region: us-west-2
    image: ami-06c54936
    group: default
    keyfile: ~/.ssh/stack_keys.pem
    login: ubuntu


stack builder supports the following action:

build      Build nodes in stack by performing create, install, test action.
connect    Establish connection to all nodes in the stack via tmux.
create     Create a nodes specified in stack configuration.
destroy    Destroy nodes created by stack builder.
install    Performs install action for nodes in stack configuration.
list       List stacks created by stack_builder.
test       Performs test action for nodes in stack configuration.


Create a 4 node openstack swift stack:

puppet stack build --name demo_stack --config config/swift/oneiric_swift_multi

Connect to swift stack:

puppet stack connect --name demo_stack --config config/swift/oneiric_swift_multi

Destroy swift stack:

puppet stack destroy --name demo_stack

Working AMI


  • Ubuntu Oneric: ami-a0ba68c9 (i386), ami-baba68d3 (x86_64)
  • Fedora 16: ami-5f16d836 (i386), ami-0316d86a (x86_64)
  • I would like to be able to specify a master from a different file