• This repository has been archived on 31/Aug/2019
  • Stars
    star
    101
  • Rank 330,988 (Top 7 %)
  • Language
    Ruby
  • License
    Other
  • Created about 14 years ago
  • Updated over 12 years ago

Reviews

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

Repository Details

DEPRECATED: the tool has been moved into core as of Puppet 2.7.12 and will no longer be maintained here. Raise bugs for the new tool in the project below under the category 'module tool'.

Important Note: Module merged into core puppet

This module has been converted to a puppet face and merged into the core puppet repository. Any further development should take place in puppetlabs/puppet.

You can find the code for the new tool here puppet/lib/puppet/face/module.


Puppet Module Tool

The Puppet Module Tool, puppet-module, creates, installs and searches for modules on the Puppet Forge at http://forge.puppetlabs.com

Dependencies

To run puppet-module, you must have the following installed:

Soure code

The source code for this tool is available online at http://github.com/puppetlabs/puppet-module-tool

You can checkout the source code by installing the git distributed version control system and running:

git clone git://github.com/puppetlabs/puppet-module-tool.git

Running

There are a number of ways to run the puppet-module program:

  1. From an official gem: Install it by running:

     sudo gem install puppet-module
    
  2. From a locally-built gem: Checkout the source code and from the checkout directory, run:

     # Build the gem
     rake gem
     # Install the file produced by the above command, e.g.:
     sudo gem install pkg/puppet-module-0.3.0.gem
    
  3. From a source code checkout: Checkout the source code and from the checkout directory, run:

     alias puppet-module=$PWD/bin/puppet-module
    

N.B. you must have Puppet installed locally for puppet-module to work.

If Puppet is not installed by your system's package manager, install the RubyGem with:

    sudo gem install puppet

Basics

Display the program's built-in help by running:

puppet-module help

Display information on a specific command by running a command like:

puppet-module help install

Many commands will use a specific repository if you pass it to the -r option at the end, like:

puppet-module search mymodule -r http://forge.puppetlabs.com/

Search for modules

Searching displays modules on the repository that match your query.

For example, search the default repository for modules whose names include the substring mymodule:

puppet-module search mymodule

Install a module release

Installing a module release from a repository downloads a special archive file. This archive is then automatically unpacked into a new directory under your current directory. You can then add this module directory to your Puppet configuration files to use it.

For example, install the latest release of the module named mymodule written by myuser from the default repository:

puppet-module install myuser-mymodule

Or install a specific version:

puppet-module install myuser-mymodule --version=0.0.1

Generate a module

Generating a new module produces a new directory prepopulated with a directory structure and files recommended for Puppet best practices.

For example, generate a new module:

puppet-module generate myuser-mymodule

The above command will create a new module directory called myuser-mymodule under your current directory with the generated files.

Please read the files in this generated directory for further details.

Build a module release

Building a module release processes the files in your module directory and produces a special archive file that you can share or install.

For example, build a module release from within the module directory:

puppet-module build

The above command will report where it created the module release archive file.

For example, if this was version 0.0.1 of myuser-mymodule, then this would have created a pkg/myuser-mymodule-0.0.1.tar.gz release file.

The build process reads a Modulefile in your module directory and uses its contents to build a metadata.json file. This generated JSON file is included in the module release archive so that repositories and installers can extract details from your release. Do not edit this metadata.json file yourself, because it's clobbered each time during the build process -- you should make all your changes to the Modulefile instead.

All the files in the pkg directory of your module directory are artifacts of the build process. You can delete them when you're done.

Write a valid Modulefile

The Modulefile resembles a configuration or data file, but is actually a Ruby domain-specific language (DSL), which means it's evaluated as code by the puppet-module tool. A Modulefile consists of a series of method calls which write or append to the available fields in the metadata object.

Normal rules of Ruby syntax apply:

name 'myuser-mymodule'
version '0.0.1'
dependency( 'otheruser-othermodule', '1.2.3' )
description "This is a full description
    of the module, and is being written as a multi-line string."

The following metadata fields/methods are available:

  • name -- The full name of the module (e.g. "username-module").
  • version -- The current version of the module.
  • dependency -- A module that this module depends on. Unlike the other fields, the dependency method accepts up to three arguments: a module name, a version requirement, and a repository. A Modulefile may include multiple dependency lines.
  • source -- The module's source. The use of this field is not specified.
  • author -- The module's author. If not specified, this field will default to the username portion of the module's name field.
  • license -- The license under which the module is made available.
  • summary -- One-line description of the module.
  • description -- Complete description of the module.
  • project_page -- The module's website.

Share a module

Sharing a module release with others helps others avoid reinventing the wheel, and encourages them to help with your work by improving it. For every module you share, we hope you'll find many modules by others that will be useful to you.

You can share your modules at http://forge.puppetlabs.com/

Building and sharing a new module version

To build and share a new module version:

  1. Edit the Modulefile and increase the version number.
  2. Run the puppet-module build as explained in the Build a module release section.
  3. Upload the new release file as explained in the Share a module section.

Cleaning the cache

Modules that you install are saved to a cache within your ~/.puppet directory. This cache can be cleaned out by running:

puppet-module clean

Deleting a module

The tool does not keep track of what modules you have installed. TO delete a module just delete the directory the module was extracted into.

Technical disclaimer for techies

This tool downloads untrusted code from the Internet. Please read the source code before executing it to avoid surprises. If it breaks, it's not our fault -- although we encourage you to contact the authors, file a bug report and send patches.

Legal disclaimer for lawyers

THE PROGRAM AND MODULES ARE DISTRIBUTED IN THE HOPE THAT THEY WILL BE USEFUL, BUT WITHOUT ANY WARRANTY. THEY ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM OR MODULES PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

IN NO EVENT WILL Puppet Labs Inc. BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THIS PROGRAM OR MODULES (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM OR MODULES TO OPERATE WITH ANY OTHER PROGRAMS OR MODULES), EVEN IF Puppet Labs Inc. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

License

This software is distributed under the GNU General Public License version 2 or any later version. See the LICENSE file for details.

Copyright

Copyright (C) 2010 Puppet Labs Inc.

More Repositories

1

razor-server

Razor is next generation provisioning software that handles bare metal hardware and virtual server provisioning
Ruby
514
star
2

lumogon

Get a complete picture of what your applications are made of *without* changing how you currently build and run containers. Just run and report.
Go
198
star
3

puppetlabs-aws

Puppet module for managing AWS resources to build out infrastructure
Ruby
187
star
4

wash

Wide Area SHell: a cloud-native shell for bringing remote infrastructure to your terminal.
Go
179
star
5

puppet-in-docker

Dockerfiles and build toolchain for Puppet software
Ruby
144
star
6

puppet-in-docker-examples

Examples to accompany the Puppet-in-Docker images
Ruby
137
star
7

puppetlabs-cloud_provisioner

Puppet Cloudpack
Ruby
105
star
8

puppetlabs-openstack

Puppet Labs Reference and Testing Deployment Module for OpenStack (master tracks Kilo)
Puppet
93
star
9

puppetlabs-dsc

Puppet module for PowerShell Desired State Configuration (DSC) integration
C#
69
star
10

puppetlabs-image_build

Build Docker images from Puppet code
Ruby
67
star
11

libral

A native Resource Abstraction Layer
C++
59
star
12

geppetto

Geppetto is an integrated toolset for developing Puppet modules and manifests.
Java
58
star
13

puppetlabs-git

module for installing git
Ruby
48
star
14

puppetlabs-razor

Puppet module to install Razor.
Puppet
46
star
15

puppet-quest-guide

Quest Guide for the Puppet Learning VM
Ruby
44
star
16

puppetlabs-ruby

Ruby
38
star
17

razor-el-mk

The discovery kernel for razor-server
Ruby
37
star
18

puppetlabs-certregen

Regenerate expiring Puppet certificates
Ruby
35
star
19

puppetcpp

A prototype Puppet compiler written in C++
C++
33
star
20

puppetlabs-cloudformation

CoudFormation template for installing PE
Ruby
32
star
21

pe-razor-vagrant-stack

This is a vagrant stack for testing Razor in PE
Puppet
27
star
22

puppetlabs-passenger

Puppet Labs Module for Passenger
Puppet
27
star
23

puppetlabs-libvirt

libvirt Puppet Module
Ruby
24
star
24

puppetlabs-activemq

Puppet ActiveMQ Module
Shell
24
star
25

puppetlabs-opennebula

OpenNebula Puppet Module
Ruby
24
star
26

puppetlabs-node_openstack

puppet cloud provisioner support for openstack
Ruby
23
star
27

puppetlabs-remote_resource

A simple way of providing dependencies on remote resources
Ruby
23
star
28

quest

Quest-driven learning with RSpec
Ruby
21
star
29

pct

Puppet Content Templates
Go
20
star
30

puppetlabs-dism

Ruby
18
star
31

rspec-system-serverspec

Couplings for rspec-system and serverspec
Ruby
17
star
32

razor-client

Command line client for razor-server
Ruby
17
star
33

puppetlabs-havana

Multi-node deployment for OpenStack Havana
Puppet
17
star
34

pltraining-classroom

Classroom module for Puppetlabs Training courses. Not intended for general use.
Puppet
17
star
35

ultipro-soap-python

Python wrapper for the UltiPro SOAP API
Python
17
star
36

puppetlabs-stunnel

A stunnel module.
Puppet
16
star
37

puppetlabs-shell

Puppet Shell - this tool is pre-release - use at your own risk!
Ruby
16
star
38

puppetlabs-mount_providers

New mount types/providers splitting fstab and actual mounts into separate types.
Ruby
16
star
39

py-awsaudit

Custom Python library that we use to audit our EC2 usage
Python
16
star
40

puppetlabs-vcenter

VMware vCenter management
Ruby
16
star
41

puppetlabs-netscaler

Puppet module for automating the configuration of Citrix Netscaler devices
Ruby
16
star
42

puppetlabs-gce_compute

native types for managing google compute instances
Ruby
16
star
43

puppetlabs-rpmbuilder

Puppet module to quickly and painlessly equip a host to build RPM packages
HTML
16
star
44

puppetlabs-tftp

Ruby
15
star
45

puppetlabs-catalog_preview

A Puppet module providing catalog preview and migration features
Ruby
15
star
46

Naginator

A Ruby parser and generator for Nagios
Ruby
15
star
47

puppet-webhooks

Sinatra service for GitHub WebHooks
Ruby
15
star
48

puppetlabs-netapp

Ruby
14
star
49

puppetlabs-limits

Module for managing pam limits in /etc/security/limits.conf
Puppet
14
star
50

puppetlabs-debbuilder

Module to build a debian package builder
Puppet
14
star
51

puppetlabs-inventory

outputs a data structure describing properties of the system on which it's run
Ruby
12
star
52

puppetlabs-rancher

Puppet module for installing Rancher Server and Agent
Ruby
12
star
53

lein-ubersource

A leiningen plugin that attempts to download all of the source code for all of a project's (transitive) dependencies
Clojure
12
star
54

puppetlabs-package_updates

Package update discovery Puppet Face and custom Facter fact
Ruby
12
star
55

pdk-planning

A repository of roadmaps, feature proposals, and other planning resources for the Puppet Development Kit
PowerShell
11
star
56

puppetlabs-logentries

Installs the logentries agent
Puppet
10
star
57

puppetlabs-sqlite

SQLite module to manage sqlite installation and database management
Puppet
10
star
58

puppetlabs-azure

Types and Providers to manage Azure resources with Puppet
Ruby
9
star
59

cljs-dashboard-widgets

A library of clojurescript widgets and utility code, intended for use in building developer / metrics dashboards.
Clojure
8
star
60

vmpooler-client

Python
7
star
61

puppetlabs-vswitch

RedHat-OpenStack VSwitch Module
Ruby
7
star
62

beaker-testmode_switcher

run your puppet module tests in master/agent, apply or local mode
Ruby
7
star
63

crossfader

Project to provide pre-compiled ruby versions for developers
C
7
star
64

puppetdb-javaclient

new Java client for PuppetDB
Java
6
star
65

puppetlabs-cve20113872

Puppet Module to help fix and migrate a Puppet deployment (CVE-2011-3872)
Ruby
6
star
66

ilt-getting-started-with-puppet-issues

6
star
67

puppetlabs-ldap_entry

Manages the creation, deletion, and synchronization of entries in an LDAP database.
Ruby
6
star
68

mcollective-zeromq-connector

0MQ connector for MCollective
Ruby
5
star
69

puppetlabs-openstack_admin

Administrative wrapper for the openstack module
Puppet
5
star
70

trapperkeeper-ruby

Ruby
5
star
71

puppet_community_data

Metrics and Graphs for Puppet Community Pull Requests: http://pullrequestmetrics.herokuapp.com/
JavaScript
5
star
72

puppetlabs-denyhosts

A module to provide basic DenyHosts capability
HTML
5
star
73

puppetlabs-apacheds

Puppet
5
star
74

mq

A simple clojure library to embed an ActiveMQ instance in your application
Clojure
5
star
75

puppet-reporter

A web-based reports application for Puppet
JavaScript
4
star
76

puppetwash

A Wash plugin for puppet
Ruby
4
star
77

action-litmus_spec

JavaScript
4
star
78

puppetlabs-tempest

Module for configuring the OpenStack test suite Tempest
Puppet
4
star
79

maintainers

A gem for maintaining MAINTAINERS files
Ruby
4
star
80

puppetlabs-azure_agent

The Azure module installs and configures the Windows Azure Linux agent
Ruby
3
star
81

boltwash

Navigate your Bolt inventory in Wash
Ruby
3
star
82

trapperkeeper-lein-template

Clojure
3
star
83

vmwr

Ruby
3
star
84

horsehead

Useful libraries for Go projects
Go
3
star
85

puppet-cloud_connection

A type for storing cloud credential information in the catalog.
Ruby
3
star
86

pltraining-bootstrap

Bootstrap files for Puppetlabs Training VMs
Shell
3
star
87

pl-clojure-style

Emacs Lisp
3
star
88

puppetserver-memmeasure

Clojure
3
star
89

trapperkeeper-rpc

RPC service and implementation library for TrapperKeeper services.
Clojure
3
star
90

puppetlabs-ldconfig

ldconfig Puppet module. Provides ability to model ldconfig configuration files
3
star
91

prm

Puppet Runtime Manager
Go
3
star
92

puppetlabs-pe_bulk_agent_install

A module for bulk installation of puppet agents on Linux and Windows hosts
Ruby
3
star
93

velocity_puppet_workshop_2009

Velocity Puppet Workshop 2009
Ruby
3
star
94

puppetlabs-puppetserver_gem

This module provides management of Ruby gems for Puppet Server.
Ruby
3
star
95

rust-kitchensink

Rust
2
star
96

bdcisco-module-evpn_vxlan

Puppet
2
star
97

chloride

Simple abstraction layer around NetSSH: For all of your SSH-in-a-for-loop needs!
Ruby
2
star
98

openrobby

Robby helps you find people and places
Elixir
2
star
99

detect_wannacry

PowerShell
2
star
100

puppetlabs-docker_ucp

Puppet module for installing Docker Universal Control Plane
Ruby
2
star