All Projects → elasticdog → Puppet Sandbox

elasticdog / Puppet Sandbox

Licence: mit
A Vagrant-based Puppet development environment for creating new modules

Labels

Projects that are alternatives of or similar to Puppet Sandbox

Puppet Rbenv
Puppet manifest for rbenv installation
Stars: ✭ 138 (-38.12%)
Mutual labels:  puppet
Python Dev Bootstrap
A Vagrant VM based Python Development Bootstrap
Stars: ✭ 170 (-23.77%)
Mutual labels:  puppet
Puppet Puppetdbquery
Query functions for PuppetDB
Stars: ✭ 201 (-9.87%)
Mutual labels:  puppet
Puppet Retrospec
The only tool you need to generate puppet code, tests, modules, facts, types, providers, data and everything else.
Stars: ✭ 141 (-36.77%)
Mutual labels:  puppet
Sensu Puppet
Sensu Puppet module.
Stars: ✭ 167 (-25.11%)
Mutual labels:  puppet
Pentesting Playground
Code for installing various security minded tools onto Vagrant powered virtual machines
Stars: ✭ 171 (-23.32%)
Mutual labels:  puppet
Rails Starter Box
Base Vagrant box for development of Rails apps
Stars: ✭ 136 (-39.01%)
Mutual labels:  puppet
Octocatalog Diff
Compile Puppet catalogs from 2 branches, versions, etc., and compare them
Stars: ✭ 220 (-1.35%)
Mutual labels:  puppet
Foreman
an application that automates the lifecycle of servers
Stars: ✭ 2,102 (+842.6%)
Mutual labels:  puppet
Puppet
Wikimedia Foundation operates some of the largest collaborative projects in the world. This is our Puppet repo. This repository is a mirror; see https://www.mediawiki.org/wiki/Developer_access for contributing.
Stars: ✭ 200 (-10.31%)
Mutual labels:  puppet
Puppi
Puppet module to manage applications deployments and servers local management
Stars: ✭ 147 (-34.08%)
Mutual labels:  puppet
Control Repo
A control repository template
Stars: ✭ 158 (-29.15%)
Mutual labels:  puppet
Primary Vagrant
An Apache based Vagrant configuration for helping you get the most out of WordPress Development
Stars: ✭ 192 (-13.9%)
Mutual labels:  puppet
Vagrant Php Box
Set up super fast a PHP5 development box with apache, mysql, phpmyadmin and whatever else that you may need
Stars: ✭ 139 (-37.67%)
Mutual labels:  puppet
Puppet Python
Puppet module for installing and managing Python, pip, virtualenvs and Gunicorn virtual hosts.
Stars: ✭ 202 (-9.42%)
Mutual labels:  puppet
Perl Dist Strawberry
Stars: ✭ 138 (-38.12%)
Mutual labels:  puppet
Puppet Rabbitmq
RabbitMQ Puppet Module
Stars: ✭ 170 (-23.77%)
Mutual labels:  puppet
Phalcon Rest
A Base project for APIs using the Phalcon framework
Stars: ✭ 221 (-0.9%)
Mutual labels:  puppet
Hexagonal Symfony
Sandbox for experimenting with Cockburn's hexagonal ideas with Symfony2
Stars: ✭ 214 (-4.04%)
Mutual labels:  puppet
Pdk
The shortest path to better modules: Puppet Development Kit; Download:
Stars: ✭ 194 (-13%)
Mutual labels:  puppet

Description

Puppet Sandbox is a multi-VM Vagrant-based Puppet development environment used for creating and testing new modules outside of your production environment. It is prefered over the upstream Learning Puppet VM as it gives you more flexibility and allows you to use your own local editing environment and tools.

Puppet Sandbox will set up three separate virtual machines:

  • puppet.example.com - the Puppet master server
  • client1.example.com - the first Puppet client machine
  • client2.example.com - the second Puppet client machine

These VMs can be used in conjunction to segregate and test your modules based on node roles, Puppet environments, etc. You can even test modules on different Linux distributions or release versions to better match your production infrastructure.

Check out the Puppet Sandbox Demonstration screencast for a brief overview of the project.

Requirements

To use Puppet Sandbox, you must have the following items installed and working:

Puppet Sandbox has been designed for and tested with Vagrant base boxes running:

  • CentOS 6.3
  • CentOS 5.8
  • Ubuntu 12.04 - Precise Pangolin
  • Ubuntu 10.04 - Lucid Lynx

...although it may work just fine with other distributions/versions.

Usage

Make sure you have a compatible Vagrant base box (if you don't have one already, it will download a 64-bit Ubuntu 12.04 box for you), and then you should be good to clone this repo and go:

$ vagrant box list
precise64
$ git clone git://github.com/elasticdog/puppet-sandbox.git
$ cd puppet-sandbox/

If you want a CentOS base box to work from, I highly recommend the boxes published by Jan Vansteenkiste: http://packages.vstone.eu/vagrant-boxes/

Initial Startup

To bring up the Puppet Sandbox environment, issue the following command:

$ vagrant up

The following tasks will be handled automatically:

  1. The Puppet server daemon will be installed and enabled on the master machine.
  2. The Puppet client agent will be installed and enabled on all three machines.
  3. A host-only network will be set up with all machines knowing how to communicate with each other.
  4. All client certificate requests will be automatically signed by the master server.
  5. The master server will utilize the nodes.pp file and modules/ directory that exist outside of the VMs (in your puppet-sandbox Git working directory) by utilizing VirtualBox's shared folder feature.

All of this is handled using Vagrant's provisioning capabilities and is controlled by the manifests under the provision/ directory. In theory, you should never have to touch any of that code directly unless you're working to improve Puppet Sandbox.

If you wish to change the domain name of the VMs (it defaults to example.com), edit the "domain" variable at the top of Vagrantfile and reload the machines:

$ vim Vagrantfile
$ vagrant reload

Developing New Modules

To start developing a new Puppet module, just create the standard module structure under modules/ in your puppet-sandbox Git working directory (an example "helloworld" module should exist there already). This directory is automatically in the Puppet master server's modulepath, and any changes will be picked up immediately.

$ mkdir -p modules/users/manifests
$ vim modules/users/manifests/init.pp

To have your module actually applied to one or more of the nodes, edit the nodes.pp file and include your classes...that's it!

Check Your Handiwork

To log on to the virtual machines and see the result of your applied Puppet modules, just use standard Vagrant Multi-VM Environment commands, and provide the proper VM name (master, client1, or client2):

$ vagrant ssh client1

If you don't want to wait for the standard 30-minutes between Puppet runs by the agent daemon, you can easily force a manual run:

[[email protected] ~]$ sudo puppet agent --test

License

Puppet Sandbox is provided under the terms of The MIT License.

Copyright © 2012, Aaron Bull Schaefer.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].