• Stars
    star
    113
  • Rank 310,115 (Top 7 %)
  • Language
    Ruby
  • License
    GNU Lesser Genera...
  • Created over 14 years ago
  • Updated over 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Do Puppet runs locally from a Git checkout. puppet-solo?!

Rump

Rump helps you run Puppet locally against a Git checkout.

Rump encourages a Puppet workflow where you quickly + iteratively develop your Puppet manifests on a single machine, then push your changes up to a repository to deploy to the rest of your infrastructure.

This workflow also complements a Capistrano or MCollective-style deployment, where you remotely instruct Rump to check out a copy of the latest manifests and run them.

Rump also has the ability to freeze Puppet in to the manifests repository, letting you quickly test different versions of Puppet without waiting for packages to appear, and reducing the dependencies on a system to run Puppet down to just Ruby and git.

Installing

$ gem install rump

Using Rump

Make sure you check out the man pages.

Check out your repository of Puppet manifests:

$ rump clone [email protected]:me_at_example_dot_org/puppet.git

Now cd into the directory, and do a Puppet run:

$ sudo rump go

When you make changes, run Puppet through Rump:

$ sudo rump go

You can append options you'd normally pass to the puppet command at the end of rump go:

$ sudo rump go --verbose --debug --noop

There's nothing stopping you from running Rump against different checkouts/branches of manifests. This is especially powerful when developing locally with the following workflow:

  1. rump clone [email protected]:me_at_example_dot_org/puppet.git
  2. rump go
  3. cd puppet && git checkout -b new_feature
  4. Make your changes && rump go --noop to see what will change.
  5. Apply the changes with rump go
  6. Iterate until everything's working
  7. git checkout master && git merge new_feature
  8. git push

Freezing Puppet

Alternatively, if you want to live on the bleeding edge and eschew your distribution's packages, you can run Rump entirely from RubyGems or Git. This gives you a whole bunch of advantages:

  • You only need Ruby installed on your system to run Puppet
  • A checkout of your manifests also gives you Puppet
  • Bind your manifests to a particular version of Puppet
  • Test your manifests against new versions of Puppet in a separate branch
  • Manage upgrades of Puppet outside your operating system's release cycle

You can freeze Puppet and it's dependencies very easily:

$ rump freeze

This will freeze Puppet + Facter under vendor/, using Bundler.

When you run rump go, Rump checks whether you have frozen Puppet + Facter, and runs the frozen Puppet if available.

You can manage the versions of Puppet you want frozen using the Gemfile at the root of your project. To use a specific version of Puppet, edit your Gemfile:

source :rubygems

gem "puppet", "2.6.4"

If you want to live on the bleeding edge, you can run Puppet out of git:

source :rubygems

gem "puppet", "2.6.7", :git => "git://github.com/puppetlabs/puppet.git", :tag => "2.7.0rc1"
gem "facter", "1.5.8", :git => "git://github.com/puppetlabs/facter.git", :tag => "1.5.9rc5"

Any dependency you bundle will automatically be added to the load path when you run rump go.

Developing + Testing Rump

Check out the repository, and run bundle install to suck down all the required development dependencies.

There's a suite of Cucumber tests to fully exercise Rump in features/:

$ cucumber features/

The scenarios are tagged with @offline and @online, depending on whether the test requires internet connectivity. Run all but @online tests with:

$ cucumber --tags ~@online features/

Quirks

  1. Puppet's fileserver (source => "puppet:///..." on File resources) doesn't behave as expected on Puppet < 2.6. If you are using Puppet < 2.6, all files need to be templates.

  2. Manifests need to be in modules so Puppet can pick them up correctly.

License

Unless otherwise specified, all content copyright ยฉ 2014, Rails Machine, LLC

More Repositories

1

moonshine

Simple Rails deployment and configuration management. 15 minute deploys of Rails 2, 3, or 4 apps.
Ruby
666
star
2

nagiosharder

Ruby API for scraping Nagios
Ruby
115
star
3

shadow_puppet

A Ruby DSL for Puppet
Ruby
84
star
4

railsmachine

RailsMachine is a collection of libraries for automating deployment and hosting configuration for Ruby on Rails applications using Capistrano and Rake.
Ruby
29
star
5

capistrano-cowboy

Deploy like a cowboy, pew pew!
Ruby
25
star
6

lita-ext

A collection of Lita extensions.
Ruby
18
star
7

moonshine_god

Simple installation and configuration management for god
Ruby
15
star
8

plover

Ruby
14
star
9

pagerduty-shift-announcer

Campfire and SMS announcer for pagerduty shift changes
Ruby
11
star
10

shadow_facter

ShadowFacter is a Ruby DSL for Facter
Ruby
8
star
11

moonshine_astrails_safe

Install and configure astrails-safe
Ruby
8
star
12

moonshine_wordpress

Configures a WordPress blog to run alongside your Rails app
Ruby
8
star
13

galera_cluster_migrations

A gem to help perform Rails database migrations with MariaDB Galera Cluster.
Ruby
8
star
14

plugger

We need plugins in Rails 4. So we put them back.
Ruby
7
star
15

moonshine_memcached

Install and configure memcached
Ruby
7
star
16

moonshine_sphinx

Install and configure sphinx
Ruby
7
star
17

utf8mb4_conversion_scripts

Scripts to help with converting a Rails database to utf8mb4
Ruby
6
star
18

libshadow

Provides /etc/shadow password management.
C
6
star
19

moonshine_scout

Install and configure the Scout agent
Ruby
6
star
20

moonshine_redis

A Moonshine plugin for installing and managing Redis, the advanced persistent key-value store.
HTML
5
star
21

moonshine_iptables

Iptables setup and configuration through your Moonshine manifest
Ruby
5
star
22

moonshine_mariadb

A Moonshine plugin for installing and configuring MariaDb Galera Cluster
Ruby
5
star
23

moonshine_ssh

A Moonshine plugin providing secure SSH defaults and simple configuration management
Ruby
4
star
24

parseconfig

simple config parser for files in the format of "param = value"
Ruby
4
star
25

moonshine_xsendfile

Install and configure mod_xsendfile
Ruby
3
star
26

moonshine_mysql_slave

Simple installation and configuration management for a MySQL slave.
Ruby
3
star
27

moonshine_ar_mailer

Simple installation and configuration management for ar_mailer
Ruby
3
star
28

moonshine_vagrant

A plugin for building all the configuration for a local version of an existing stage (like staging or production).
Ruby
3
star
29

moonshine_mmm

A plugin for installing and managing mysql_mmm
Ruby
3
star
30

moonshine_no_www

Moonshine plugin for handling no-www redirects
Ruby
3
star
31

moonshine_heartbeat

This Moonshine plugin allows you to easily integrate heartbeat into your deployment.
Ruby
2
star
32

moonshine_sidekiq

Moonshine plugin for basic Sidekiq configuration and deployment
Ruby
2
star
33

moonshine_omnipitr

Install and manage OmniPITR
Ruby
2
star
34

resque-oink

Resque extension to identify jobs which significantly increase VM heap size using oink
Ruby
2
star
35

moonshine_imagemagick

Ruby
2
star
36

moonshine_geoip

Duty-free, a Moonshine plugin for simple installation and configuration management of GeoIP
Ruby
2
star
37

moonshine_denyhosts

A denyhosts plugin for Moonshine
HTML
2
star
38

moonshine_haproxy

Simple installation and configuration management for haproxy
Ruby
1
star
39

moonshine_pagespeed

A Moonshine plugin for Google's mod_pagespeed Apache module
HTML
1
star
40

moonshine_vsftpd

Install and manage an FTP server
Ruby
1
star
41

moonshine_dj

Moonshine plugin for basic DelayedJob configuration and deployment
Ruby
1
star
42

moonshine_mysql_tools

A plugin for installing some commonly used mysql tools with Moonshine
Ruby
1
star
43

moonshine_moxi

Ruby
1
star
44

moonshine_ordered_hash

Ruby
1
star
45

moonshine_upload_progress

Install and configure mod_upload_progress
Ruby
1
star
46

moonshine_cijoe

Installs and configures cijoe using moonshine
Ruby
1
star
47

moonshine_sysctl

Tune kernel parameters with Moonshine.
Ruby
1
star
48

moonshine_msttcorefonts

A moonshine plugin for installing msttcorefonts
Ruby
1
star
49

moonshine_java

Moonshine plugin for configuring and installing Java
Ruby
1
star
50

moonshine_prince

Moonshine Plugin to Install Prince XML
Ruby
1
star
51

moonshine_pdfkit

Moonshine Plugin for managing PDFKit
Ruby
1
star
52

moonshine_syslog_ng

A syslog_ng recipe for Moonshine
Ruby
1
star
53

moonshine_passenger_monitor

Passenger Memory Monitor
Ruby
1
star
54

moonshine_couchdb

A moonshine plugin for installing and managing couchdb
Ruby
1
star