Objects matching the expression 'puppet'
- #526 [PATCH] null schedule, a schedule that will never run. (puppet, schedules)
- #595 puppet choke on non english LANG settings (facter, lang, puppet)
- #704 schedule failing in 0.23.0 (puppet)
- #1010 puppet/puppetmaster randomly corrupts file{} resources, seemingly after leaking RAM for some time (corrupt, file, puppet, puppetmaster)
- #1073 --show_diff is not implied by --noop (noop, puppet, show_diff)
- #1240 Graphing does not work with puppet (as opposed to puppetd) (graph, graphing, puppet)
- AdvancedPuppetRecipe When we left off in the Simplest Puppet Install Recipe_, we had two files, our site manifest and a class configuring the sudo tool. Our initial site manifest ------------------------- The site manifest, /etc/puppet/manifests/site.pp, contained: :: # /etc/puppet/manifests/site.pp import "classes/*" node default { include sudo } This file imports all the .pp files in the classes directory and then specifies a special node, called default, whose configuration will be applied to all nodes. In this case the default node only contains a single class: sudo. Our first class --------------- The sudo class contained: :: # /etc/puppet/manifests/classes/sudo.pp class sudo { file { "/etc/sudoers": owner (advanced, introduction, puppet, recipe)
- BigPicture Big picture (bigpicture, introduction, puppet)
- BracketEditor The Bracket Editor (design, proposal, puppet)
- CodeNames Puppet code names (development, documentation, download, package, planned, puppet)
- CompleteConfiguration Complete Configuration (complete, configuration, module, modules, puppet)
- CookBook Puppet Cookbook (cookbook, puppet)
- DevelopmentLifecycle The Puppet Development Life Cycle (buildbot, cycle, development, git, lifecycle, puppet, repository, tickets)
- DocumentationStart Puppet Documentation (documentation, index, puppet, start.)
- DownloadingPuppet * The stable version is 0.24.7. * The latest version is 0.24.7. There is an upgrade document_ that details the major feature and language changes between versions. We recommend you read this if upgrading Puppet from an earlier version. There is also a list of planned and released versions with their numbers_. .. _list of planned and released versions with their numbers: /trac/puppet/wiki/CodeNames .. _upgrade document: /trac/puppet/wiki/UPGRADE Tarball ------- * Stable - Puppet 0.24.7 (tar+gzip)_ -- 1063 kb * Latest - Puppet 0.24.7 (tar+gzip)_ -- 1063 kb * Stable - Facter 1.5.2 (tar+gzip)_ -- 47 kb .. _Puppet 0.24.7 (tar+gzip): http://reductivelabs.com/downloads/puppet/puppet-0.24.7.tgz .. _Facter 1.5.2 (tar+gzip): http://reductivelabs.com/downloads/facter/facter-1.5.2.tgz Ruby Gems --------- * Stable - Puppet 0.24.7 (Ruby Gem)_ -- 1061 kb * Latest - Puppet 0.24.7 (Ruby Gem)_ -- 1061 kb * Stable - Facter 1.5.2 (Ruby Gem)_ -- 51 kb .. _Puppet 0.24.7 (Ruby Gem): https://reductivelabs.com/downloads/gems/puppet-0.24.7.gem .. _Facter 1.5.2 (Ruby Gem): http://reductivelabs.com/downloads/gems/facter-1.5.2.gem Solaris Packages ---------------- Solaris packages are available as part of the Blastwave Project_ .. _Blastwave Project: http://blastwave.org/packages.php RPM Packages ------------ Puppet is available in RPM_ form as part of Fedora_ and EPEL_. A simple yum install puppet or yum install puppet-server on such systems should be all you need. David Lutterkort_ also maintains a yum repository_ of Puppet RPMS. You can find the yum repo configuration file_ and a Puppet class_ that adds the repo to your hosts. Packages from that repository should be considered experimental and used mostly for testing. Debian Packages --------------- Debian_ packages are available from the Debian Packages_ site. .. _debian: http://www.debian.org/ .. _debian packages: http://packages.debian.org/src:puppet SuSE Packages ------------- Martin Vuk has set up the SuSE build service to create Puppet and Facter `SuSE packages_. Older versions of Puppet can still be retrieved from Martin's old yum repository`_. .. _SuSE Packages: http://software.opensuse.org/download/system:management/ .. _martin's old yum repository: http://lmmri.fri.uni-lj.si/suse/ Gentoo Packages --------------- Thanks to José González Gómez, Puppet is now officially in Portage_. .. _Portage: http://packages.gentoo.org/package/app-admin/puppet Mandriva Packages ----------------- Mandriva_ packages are available from the Mandriva contrib repository. .. _Mandriva: http://www.mandriva.com/ OpenBSD Packages ---------------- Puppet is included in OpenBSD_'s ports tree, and packages are available in the appropriate packages directory on OpenBSD mirrors_. Some unofficial (but more recent) packages are provided as is for a limited set of OpenBSD releases and architectures on openbsd.glei.ch_. .. _OpenBSD: http://www.openbsd.org/ .. _mirrors: http://www.openbsd.org/ftp.html .. _openbsd.glei.ch: http://openbsd.glei.ch Mac OS X Packages ------------------ Mac OS X packages are hosted at explanatorygap.net_, as are instructions for building pkgs from the source repository. Please contact Nigel Kersten there for issues with Puppet/Facter packages on Mac OS X. .. _explanatorygap.net: https://sites.google.com/a/explanatorygap.net/puppet/ Arch Linux? Packages ------------------ Arch Linux? now contains packages for Puppet and Facter. You can find ArchLinux Puppet_ and ArchLinux Facter_ packages in the Arch Linux? AUR. .. _ArchLinux Puppet: http://aur.archlinux.org/packages.php?ID (documentation, download, install, puppet, source)
- FrequentlyAskedQuestions Puppet is an open-source next-generation server automation tool. It is composed of a declarative language for expressing system configuration, a client and server for distributing it, and a library for realizing the configuration. The primary design goal of Puppet is that it have an expressive enough language backed by a powerful enough library that you can write your own server automation applications in just a few lines of code. With Puppet, you can express the configuration of your entire network in one program capable of realizing the configuration. The fact that Puppet has open source combined with how easily it can be extended means that you can add whatever functionality you think is missing and then contribute it back to the main project if you desire. For more about the capabilities of Puppet, take a look at the documentation_. [back_] Who maintains this FAQ and where can I find an updated version? (asked, certificates, configuration, docs, facter, faq, frequently, gpl, graphing, installation, manifests, puppet, questions, tls)
- IrcChannel Pasting configuration files (IRC, documentation, puppet, support)
- Lab42Infrastructure Lab42 Puppet Infrastructure (infrastructure, lab42, module, modules, puppet)
- ManagedByPuppet (applications, apps, managed, modules, puppet, recipes, software, solutions)
- MultipleCertificateAuthorities NOTE (SSL, certificates, documentation, puppet, security)
- PuppetBookErrata Please post errata for "Pulling Strings with Puppet - System Administration Made Easy" by James Turnbull. Please post errata by chapter with page references. Errata should also be submitted at the Apress site_. General Notes ------------- *Where you see a ~CCC - this is a code continuation character that means the line is broken and continued on the next line.* Should all be fixed 23/2. Cover Page ---------- *The front cover states 192 pages, but there are only 169.* - This is a print versus PDF issue. They are different page counts. Chapter 1 --------- Chapter 2 --------- *Page 17, David Lutterkort, not David Lutter.* Fixed 23/2 - apologies David. *Page 25, After this paragraph* "Puppet detects if you have any nodes defined. If you don’t have any defined, as we have here, Puppet turns off node designation. With node designation turned off, all configuration resources (excluding configuration in classes and definitions, which we’ll talk about in Chapter 3) defined will be applied to all nodes that connect to the master. As we don’t have any nodes, nor any substantive configuration, it’s easiest to turn off nodes until we’re ready to define our first node. We’ll look at node definition in Chapter 3." There should be this note: NOTE In versions older than 0.24.x you will also need to add the --nonodes option to disable node definition. This option is deprecated in 0.24 and later. *Page 25, After this paragraph* "This time we’ve started puppetmasterd with the --verbose and --no-daemonize options. The --verbose option turns on verbose logging, and the --no-daemonize option forces the master daemon to run in the foreground. This mode is ideal for troubleshooting your master daemon." There should be this note: NOTE The --no-daemonize option was introduced in version 0.24 of Puppet. Prior to this the --verbose option alone causes the puppetmasterd not to daemonize. Chapter 3 --------- *Page 59, Listing 3-11, Conditional Selectors, "name" in the selector should be "$name" as used in later examples.* - Example is correct. *Page 60, Listing 3-13, Case Statements, each conditional statement is missing a closing brace.* Fixed 23/2 *Page 61, Example Case statement , "true" (book, errata, james, pulling, puppet, strings, turnbull)
- PuppetBooks Pulling Strings with Puppet: Configuration Management Made Easy_ ------------------------------------------------------------------ Competent system administrators know their success hinges upon being able to perform often tedious tasks with rigor and punctuality. Such metrics are often achieved only by instituting a considerable degree of automation, something that has become even more crucial as IT environments continue to scale both in terms of size and complexity. One of the most powerful system administration tools to be released is Puppet, a solution capable of automating nearly every aspect of a system administrator’s job, from user management, to software installation, to even configuring server services such as FTP and LDAP. Pulling Strings with Puppet: Configuration Management Made Easy_ is the first book to introduce the powerful Puppet system administration tool. Author James Turnbull will guide you through Puppet’s key features, showing you how to install and configure the software, create automated Puppet tasks, known as recipes, and even create reporting solutions and extend Puppet further to your own needs. A bonus chapter is included covering the Facter library, which makes it a breeze to automate the retrieval of server configuration details such as IP and MAC addresses. What you’ll learn +++++++++++++++++ * Properly install and configure Puppet in order to begin immediately maximizing its capabilities. * Create reporting solutions to more easily monitor automated outcomes. * Extend Puppet to perform tasks that are capable of suiting your organization’s specific needs. * Use Facter to query server operating systems for key data such as IP addresses, server names, and MAC addresses. .. _Pulling Strings with Puppet: Configuration Management Made Easy: http://www.amazon.com/gp/product/1590599780?ie (book, books, publication, puppet)
- PuppetContinuousIntegration (Hudson, build, continuous, git, integration, puppet, testing)
- PuppetDebian Running Puppet on Debian (debian, installation, packages, puppet, testing, unstable)
- PuppetIntroduction Introduction to Puppet (documentation, introduction, puppet)
- PuppetMacOSX Puppet on Mac OS X (documentation, osx, package, provider, puppet)
- PuppetManifestDocumentation Starting with version 0.24.7, Puppet ships with an enhanced puppetdoc executable that allows user to generate browser readable HTML or direct to console output of documentation embedded in Puppet manifests. Documentation format -------------------- The idea was to have something that mimics RDoc, Javadoc and other Perldoc system. Documentation is written in comments (either consecutive line comments starting with # or block comments delimited by /* and */) that appears next to the manifest statement. For example:: # Class: users # # This class installs our default set of users in our servers # # Parameters: # $starting_uid: # this global variable is used to set the minimum uig used for our users # # Actions: # Install the default set of users: [dana,fox] # # Requires: # - Packagezsh? # # Sample Usage: # class users { ... } Direct to Console Output ------------------------ The first mode for puppetdoc is to output the documentation contained in the the various comments of a sole manifest *without any post-processing* to the console. This mode of running puppetdoc is perfect if you want to post process the documentation by another system to produce man pages from ReST (for instance with Pandoc: http://johnmacfarlane.net/pandoc/) Usage:: $ puppetdoc [-all] <file-spec> Argument:: <file-spec>: path to a manifest file, for instance /etc/puppet/manifests/site.pp By default, it outputs documentation from nodes, classes and definitions contained into the manifest given as argument. Option:: --all or -a: produces also documentation attached to resources. RDoc HTML Generation -------------------- The second mode of puppetdoc is to generate a set of HTML files like RDoc does for ruby or Javadoc for Java. The system is based on RDoc, and as such uses RDoc markup. Usage:: $ puppetdoc [--all] --mode rdoc [--outputdir <path-spec>] [--debug|--verbose] [--trace] [--modulepath <path-list>] [--manifestdir <path-spec>] [--config <file-spec>] Options: --all produces documentation for all the resources along with the other documentations produced. --outputdir store the result into the given directory instead of 'doc' in the current directory. --debug display debug and greater level messages --verbose display info and greater level messages --trace display Ruby stack trace in case of error --modulepath override the puppet.conf modulepath. See puppetmasterd modulepath option. --manifestdir override the puppet.conf manifestdir. See puppetmasterd manifestdir option. --config override the default puppet.conf location. See puppetmasterd config option. The puppetdoc binary in RDoc mode supports most of the puppetmasterd options related to module or manifest location, including environments. If no --config or --configdir options are used, then puppetdoc uses the default puppetmasterd configuration file for the current user (usually ~/.puppet or /etc/puppet/). If one puppet.conf file can be found in --configdir or --config, then the modulepath and manifestdir of the [puppetmasterd] section are used. Passing the --modulepath or the --manifestdir options on command line overrides their respective values found in the puppet.conf file. By default, puppetdoc generates documentation with comments associated with classes, nodes, definitions, nodes global variables, custom facts and Puppet plugins located in modules. Documentations are produced for each classes/definitions of each modules. Global manifests (i.e. those under manifestdir) are located under the special "<site>" module. Each class, module or plugin is cross-referenced throughout the whole documentation. Module documentation is extracted from an existing README file that would be located under the module root directory:: /etc/puppet/modules/postfix/manifest/init.pp /etc/puppet/modules/postfix/README When producing the documentation for the whole module, the README file will be used. Class documentation is extracted as in direct to console output from the comments just before the said class. The same for nodes, definitions, global assignments, or resources. The system reports included classes in including class. Puppetdoc Output ---------------- The Puppet Manifest Documentation system is based upon RDoc. By default, puppetdoc outputs the documentation under the doc directory (which can be overridden with --outputdir). This directory can be viewed by a web browser or can be directly put under a document root of a Web server for global access. The system outputs one file per module, several files per classes, along with global indices and per modules indices. RDoc markup ----------- Since the HTML generation is based on RDoc, the various comments where the documentation is extracted should be formatted with RDoc markup. The RDoc markup is lightweight, implicit and non-intrusive. Here are the more important RDoc Markup rules extracted from RDoc documentation + Lists are typed as indented paragraphs with: * a '*' or '-' (for bullet lists) * a digit followed by a period for numbered lists + Labelled lists (sometimes called description lists) are typed using square brackets for the label. * [cat] small domestic animal * [+cat+] command to copy standard input + Labelled lists may also be produced by putting a double colon after the label. This sets the result in tabular form, so the descriptions all line up. * cat:: small domestic animal * +cat+:: command to copy standard input For both kinds of labelled lists, if the body text starts on the same line as the label, then the start of that text determines the block indent for the rest of the body. The text may also start on the line following the label, indented from the start of the label. This is often preferable if the label is long. + Headings are entered using equals signs * (documentation, manifest, puppet, rdoc)
- PuppetPresentations (luke, presentation, puppet, slides, video)
- PuppetRecipes Recipes for configuring Puppet (puppet)
- PuppetRedHatCentos A lot of work has gone into support of these highly popular platforms. Since yum appears to be the wave of the future, community member David Lutterkort maintains a yum repository_ for users of Red Hat?, CentOS and other compatible strains of UNIX. This repository is kept up-to-date, so the version available there should be sufficient for most purposes. If you find that a newer version than what is available from the _unstable tree is required, please refer to the instructions_ for building Puppet from the Git repository. Compatability (centos, installation, os, puppet, redhat, rhel)
- PuppetScalability Puppet Scalability Notes (performance, puppet, puppetmasterd, scalability, speed.)
- PuppetScripts? (puppet, ruby)
- PuppetVersioning Major ----- Any revision which: * adds major functionality Minor ----- Any revision which: * adds minor functionality evident to the user * adds major functionality not evident to the user Release ------- Any revision which: * adds/removes/modifies parameters * deprecates parameters or syntax, or * changes file formats Build ----- Every change committed to Git has a unique ID. Scheme B: MAJOR.MINOR.RELEASE (0.22.4) (development, puppet, version, versioning)
- Recipes/AmazonWebService Amazon Web Service Recipes (Amazon, puppet, recipe)
- Recipes/AptKeys Recipe for managing apt gpg keys (apt, aptkets, keys, puppet, recipe, recipes)
- Recipes/Apt_Repositories Recipe for Mixing In Multiple apt Repositories (puppet, recipe)
- Recipes/AqueosShorewall Aqueos Shorewall Recipe (aqueos, puppet, recipe, shorewall)
- Recipes/Asterisk This is mode for installing asterisk, libpri, zaptel and app_rxfax/app_txfax. It is very Debian specific, since it has to build the zaptel kernel module. It also requires small ruby function_ to get the kernel version without the architecture for the linux-kbuild package. $libdir/parser/functions/kernelversion.rb:: module Puppet::Parser::Functions newfunction(:kernelversion, :type (Asterisk, puppet, recipe)
- Recipes/Authorized_keys Authorized_keys Recipe (authorized_keys, puppet, recipe, ssh)
- Recipes/Autofs AutoFS Recipe (autofs, puppet, recipe)
- Recipes/CentralizedSudoers Centralised sudoers recipe (puppet, recipe, sudo, sudoers)
- Recipes/ClamAV ClamAV Antivirus Recipe (ClamAV, puppet, recipe)
- Recipes/Debian Operating System Release Management (Debian, puppet, recipe)
- Recipes/DebianApache2Recipe Recipe for Apache2 on Debian (Etch) (apache2, components, debian, puppet, recipe)
- Recipes/DebianPreseed Managing Debian packages using debconf preseed (debian, linux, package, preseed, puppet, recipe)
- Recipes/DownloadFileRecipe Download 1 or more Files (download, file, puppet, recipe)
- Recipes/DslHintsAndTips 'postfix' # new type instance package (DSL, configuration, puppet, query, recipe, recipes)
- Recipes/FilePermissionCheck File Permissions Check Recipe (file, permissions, puppet, recipe)
- Recipes/FirmwarePassword Working with Passwords and other sensitive data with exec (password, passwords, puppet, recipe)
- Recipes/Fonts Font Installation Recipe (fonts, puppet, recipe)
- Recipes/GrowlManifestErrors Using Growl to Get Syntax Error Notifications from Puppetmaster (growl, puppet, puppetmaster, recipe)
- Recipes/HighAvailability High Availability Recipe (availability, puppet, recipe)
- Recipes/KernelModules Kernel Modules (kernel, linux, modules, puppet, recipe)
- Recipes/LDAPClientNSSwitch LDAP Client NSSwitch recipe (LDAP, nsswitch, puppet, recipe)
- Recipes/Logrotate Logrotate Module (puppet, recipe, recipes)
- Recipes/ModuleIptables The iptables module illustrated will help administer iptables rules. There are essentially three parts: the module manifest_, which declares an iptables class and a defined-type for adding fragments, the rebuild-iptables_ script that rebuilds the iptables rules when a fragment is added or removed, and an area for fragments_. .. _module manifest: modules/iptables/manifests/init.pp :: # Handles iptables concerns. See also ipt_fragment definition define ipt_fragment($ensure) { case $ensure { absent: { file { "/etc/iptables.d/$name": ensure (iptables, network, puppet, recipe)
- Recipes/Monit Monit Recipe (puppet, recipe)
- Recipes/MutualRestart Mutual Restart Recipe (puppet, recipe, restart)
- Recipes/MySQLServer Install MySQL server and set root password (MySQL, database, puppet, recipe)
- Recipes/MySQLStoredConfiguration MySQL Server Recipe for Stored Configuraton (MySQL, configuration, database, puppet, recipe, stored)
- Recipes/MysqlWithSslAndPuppetCerts MySQL SSL Using Puppet Certs (mysql, puppet, recipe, ssl)
- Recipes/NFS Purpose (NFS, file, puppet, recipe, recipes)
- Recipes/Nagios This module contains two classes, one for an NRPE client (set up for Debian and FreeBSD), and one for the Nagios server (Debian): modules/nagios/manifest/init.pp:: class nagios-nrpe { case $operatingsystem { "freebsd": { $nrpeservice (nagios, nrpe, puppet, recipe)
- Recipes/OpenNTPD OpenNTPD Recipe (NTP, openntpd, puppet, recipe)
- Recipes/PasswordManagement Password Management (password, passwords, puppet, recipe)
- Recipes/Pkgsync Pkgsync (pkgsync, puppet, recipe)
- Recipes/RailsMongrelApacheProxybalancer Rails stack recipe (apache, mongrel, puppet, rails, recipe)
- Recipes/RdiffBackup rdiff-backup recipe (puppet, rdiff-backup, recipe)
- Recipes/ResolvConf resolv.conf recipe (network, puppet, recipe, resolv.conf)
- Recipes/ShowNodeObjects This script accepts a host name and produces a list of objects in manifest syntax associated with that host. It is meant to be run on the puppetmaster host. By default only the 'hostname' fact is supplied but other facts can be specified by using the '--fact` option (multiple times if needed). If the argument to '--fact' does not contain a ' (node, nodes, puppet, recipe)
- Recipes/SimpleText Simple Text edits (puppet, recipe, text)
- Recipes/Solaris_cde-login Solaris CDE login recipe (CDE, login, puppet, recipe, solaris)
- Recipes/SubversionCommitHooks /puppet\/trunk/ MANIFEST_REGEX (commit, hook, puppet, recipe, recipes, subversion)
- Recipes/SubversionIntegration I have published my code for creating and checking out Subversion repositories as a module_. It's pretty easy to use:: import 'subversion/svnrepo' # Creates the repository at /var/lib/svn/puppet svnrepo { puppet: path (puppet, recipe, subversion)
- Recipes/SubversionWorkingCopy Manage a Subversion Working Copy (puppet, recipe, subversion)
- Recipes/Sudo Improved sudo recipe (puppet, recipe, sudo, sudoers)
- Recipes/TemplateValidationFunction args[0] checkscript (puppet, recipe, template, validation)
- Recipes/Timezone Timezone Recipe (puppet, recipe, timezone)
- Recipes/TracIntegration I have been managing my trac_ installations with Puppet for a long time, and I've recently converted my code to a module_. Here's how I use it at my site:: import 'trac' Trac { alt (puppet, recipe, trac)
- Recipes/UpdateFromSubversionRepo This is a script/daemon that updates a set of puppetmaster directories(manifests,files,etc) from a subversion repository, and will push those updates to additional puppetmasters via rsync+ssh. It expects the subversion repository to setup in a trunk/tag format(though that's not necessary here, it's just the way that I use it). For instance:: /puppet /puppet/trunk /puppet/trunk/files /puppet/trunk/manifests .... /puppet/tags /puppet/tags/prod-YYYYMMDDHHmmss For the script below to work, /puppet-dev and /puppet-prod must have an initial check done ahead of time. It'll do a "lite" query every 5 seconds, and perform updates if it detects something. This script is most useful if you can't trigger an update via a commit hook. puprepod --------- :: #!/usr/bin/env ruby CHECKFREQ (puppet, recipe, repo, subversion)
- Recipes/UserAndHomedirRecipe Adding a User and their Home directory (homedir, puppet, recipe, user)
- Recipes/VMWareGuest VMware (facter, puppet, recipe, vmware)
- Recipes/Vim VIM recipe (debian, puppet, recipe, vim)
- Recipes/VirtualMachine Virtual Machine Fact (puppet, recipe, virtual, vmware)
- Recipes/WorkstationInheritance Workstation Inheritance Recipe (inheritance, puppet, recipe, workstation)
- Recipes/YumServerBuild Yum Server Build Recipe (puppet, recipe, repo, repos, yum)
- Recipes/ZabbixAgent Zabbix Agent recipe (puppet, recipe, zabbix)
- Recipes/syslog-ng syslog-ng recipe (puppet, recipe, syslog-ng)
- RubySSL-2007-006 2007-006-RubySSL Security Patch (bug, certificates, documentation, faq, puppet)
- SimplestPuppetInstallRecipe Using Puppet is largely about developing the Puppet manifests, which describe the configuration of your system. Once you have Puppet installed (see Installation Guide_ ) on at least one server (the Puppetmaster), and at least one client, you're ready to set up a minimal configuration and get started using Puppet. A Simple Manifest: Managing Ownership of a File (certificates, certs, configuration, puppet, puppetmaster, recipe, ssl, sudo, tutorial)
- SolarisPuppetClientInstallationGuide (install, installation, ldapnodes, puppet, solaris)
- UsingMongrel Alternatively, see: UsingMongrelOnDebian_ UsingMongrelPound_ UsingMongrelNginx_ UsingPassenger_ .. _UsingMongrelOnDebian: Using Mongrel OnDebian .. _UsingMongrelPound: Using Mongrel Pound .. _UsingMongrelNginx: Using Mongrel Nginx .. _UsingPassenger: Using Passenger Puppet daemons default to using WEBrick for http serving, but puppetmasterd can be used with Mongrel instead. This requires setting up a web proxy in front of Mongrel to handle the SSL connections, and then you can start as many puppetmasterd instances as you need. Note that Puppet uses Mongrel differently than most -- usually, you would have a mongrel_cluster command that managed multiple Mongrel instances. I planned to implement it this way, but it ended up being easier in the short term to stick with puppetmasterd. Please contact me (Luke) if you want to work on getting mongrel_cluster to work with Puppet, as it could be used to manage multiple Mongrel instances at once. See the following diagram which shows how it works: http://reductivelabs.com/trac/puppet/attachment/wiki/UsingMongrel/puppetmaster-mongrel.png Version 0.23.1 or higher of puppetmasterd is required. (Earlier versions couldn't do certificate signing because they didn't support the X-Client-Verify header.) This document only describes setting up Apache as a proxy in front of Mongrel. Any other http proxy should work, as long as it supports validating client certificates. Why You'd Do This ----------------- Mongrel scales much better than WEBrick, at least partially because it allows you to run multiple processes serving the same pool of clients on the same host. WEBrick only uses Ruby's threading, which does not scale beyond one processor, and it appears that WEBrick starts dropping connections beyond about 2 concurrent connections. If you're getting connection-reset or End-of-file errors, you should try Mongrel. As more people try it and it proves to be stable, it will eventually become the preferred serving platform for the master. Known Issues ------------ There is a problem with Apache and the certificate revocation list (CRL) as generated by the puppet CA. If you encounter this problem, you are likely to see lines like this in your error log: [Mon Nov 10 08:47:20 2008] [warn] Invalid signature on CRL [Mon Nov 10 08:47:20 2008] [error] Certificate Verification: Error (8): CRL signature failure If so, comment out the line containing !SSLCARevocationFile from your apache config. Apache Configuration -------------------- Here is a complete apache configuration, intended for use only with puppet:: # Jeff Mc Cune? <mccune@math.ohio-state.edu> # 2007-09-14 # # Minimal Apache Configuration for Apache+Mongrel+Puppetmaster # # Host System Setup and Configuration: # - Add puppet/puppet user/group # - Use the following configuration file. # - /Library/Puppet/Generated/Server is owned by puppet/puppet # # - If you have a system which doens't provide Apache 2.2.X packages: # Apache may be built with: # # ./configure --enable-so \ # --enable-ssl (http, mongrel, puppet, puppetmasterd, server)
- UsingMongrelOnDebian This is a complete step-by-step configuration for using Mongrel instead of Webrick on Debian Etch. It uses the Debian Apache2 recipe_ and creates a stand-alone apache server on port 8140 for puppetmaster. You need: 1. The mongrel and libdaemons-ruby1.8 packages from etch-backports_ 2. A stand-alone apache2 configuration for puppetmaster only: Apache Configuration_ 3. An init script for stand-alone apache: Apache init script_ 4. A puppetmaster init script, which starts 10 mongrel processes: Puppetmasterd init script_ 5. And finally, a module called puppet to tie this all together. The module's init.pp file is listed below:: class puppetmaster inherits apache2 { $certname (debian, http, mongrel, puppet, puppetmasterd, server)
- VerifyingDownloads Verifying Puppet Downloads (documentation, download, gpg, install, openpgp, puppet, signature, source, verification, verify)
- VersionControlPuppet Keep your Puppet manifests under version control (puppet, subversion, svn)
- WhosUsingPuppet Organizations using Puppet (people, puppet, testimonials, user)
- WikiStart (documentation, puppet)