<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Madstop &#187; Puppet</title>
	<atom:link href="http://madstop.com/category/puppet/feed/" rel="self" type="application/rss+xml" />
	<link>http://madstop.com</link>
	<description>Puppet development, configuration management, and less</description>
	<lastBuildDate>Mon, 02 Aug 2010 04:07:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>A Tour of the Puppet Dashboard</title>
		<link>http://madstop.com/2009/12/15/a-tour-of-the-puppet-dashboard/</link>
		<comments>http://madstop.com/2009/12/15/a-tour-of-the-puppet-dashboard/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 00:24:37 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[announce]]></category>
		<category><![CDATA[dashboard]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=84</guid>
		<description><![CDATA[Rein just announced the 1.0 release of our new Puppet Dashboard, with screen shots: We’re going to take a tour of the newly released Puppet Dashboard web front-end.  Puppet Dashboard is (or will be) a web front end that keeps &#8230; <a href="http://madstop.com/2009/12/15/a-tour-of-the-puppet-dashboard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Rein just <a href="http://reductivelabs.com/2009/12/14/a-tour-of-puppet-dashboard-0-1-0/">announced</a> the 1.0 release of our new Puppet Dashboard, with screen shots:</p>
<blockquote><p>We’re going to take a tour of the newly released Puppet Dashboard web front-end.  Puppet Dashboard is (or will be) a web front end that keeps you informed and in control of everything going on in your Puppet ecosystem. It currently functions as a reporting dashboard and an external node repository and will soon do much more, including having better marketing copy.</p>
<p>Fundamentally, Dashboard lets you do two things: configure nodes using parameters, classes and groups for use as an external nodes tool; and monitor the status of nodes through real-time reporting and versioned change tracking. The main dashboard page shows you the status of recent Puppet runs, displays important information like pass/failure statistics, and alerts you of important failures, errors and unexpected events. Let’s take a look at how it does this.</p></blockquote>
<p>Go check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/12/15/a-tour-of-the-puppet-dashboard/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Ubuntu Developer Summit</title>
		<link>http://madstop.com/2009/12/01/ubuntu-developer-summit/</link>
		<comments>http://madstop.com/2009/12/01/ubuntu-developer-summit/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 08:10:04 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[uds]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=81</guid>
		<description><![CDATA[It looks like I&#8217;ll be starting to blog on our main company site before too long, which will hopefully include someone standing behind me with a sharp stick, poking me and making me write more. In the meantime, here&#8217;s my &#8230; <a href="http://madstop.com/2009/12/01/ubuntu-developer-summit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It looks like I&#8217;ll be starting to blog on our main company site before too long, which will hopefully include someone standing behind me with a sharp stick, poking me and making me write more.</p>
<p>In the meantime, here&#8217;s my quarterly blog post.</p>
<p>I was finally able to attend an Ubuntu Developer Summit last month, this time in Dallas (not quite as nice a location as the last one &#8211; Barcelona).  My reason for being there was that they had 3 or 4 sessions devoted to Puppet-related concepts, and they wanted upstream (that would be me) to provide some insight and get involved in getting the work done.</p>
<p>It was a really interesting and different conference.  I&#8217;ve actually participated in other UDSes in the past via phone and IRC, and now that I&#8217;ve been to the conference, I realize how structural that remote participation is, and I&#8217;d love to copy it as we hold more Puppet conferences (e.g., the PuppetCamp Europe we&#8217;re planning for next year).  Every room had a session-specific IRC channel, plus live streaming video and audio, so you really could participate from anywhere in the world.  The last UDS, I could hear an audio stream and would type on IRC my responses to questions.  It was a bit awkward, but it meant I could actually be involved.</p>
<p>I think the focus on coming away with action plans is another thing that sets UDS apart.  So many other conferences are the destination &#8211; get your talk written, your presentation presented, and then drink and talk all week.  While there&#8217;s lots of drinking and talking at UDS &#8211; there was a really lively bar scene, I think partially because there&#8217;s so little hallway track &#8212; the sessions are really focused on &#8220;we&#8217;re all in the same city for a week, let&#8217;s knock this out&#8221;.</p>
<p>That&#8217;d be another great takeaway, but it&#8217;s hard to know how to copy it without having thousands of motivated, active, involved community members, like Ubuntu does.  I might decide to try for something like its blueprints in a one-day pre-PuppetCamp session or something; I like the idea of a &#8220;get shit done&#8221; focus for at least part of any conference.</p>
<p>In terms of how it affects Puppet, it&#8217;s a couple of different ways.  Since Puppet is now in Ubuntu Main, they are concerned about the long-term support of whatever we release, because they have to support it for five years.  They&#8217;re also looking at integrating it into various aspects of the system, and in particular, etckeeper and the installer.  So far, Ubuntu is the only OS out there that I&#8217;ve seen really look for ways to integrate a CM system into the heart of the OS.  As they should be, they&#8217;re taking baby steps, but those steps are clearly harbingers for what&#8217;s to come.</p>
<p>The etckeeper integration is not something you&#8217;d use in a normal environment, but I could see how it could be useful for some cases.  It&#8217;d kind of be a filebucket on steriods.</p>
<p>The goal of the installer integration would be, at the least, to make sure that you could have a complete functional machine once out of the installer, so Puppet would need to be able to run chroot&#8217;d by the installer.  We also talked about converting the catalog into a format that the installer can understand &#8212; essentially a preseed file &#8212; which would allow the installer to take care of the majority of the package installs, which would be much faster on the first big run.</p>
<p>Hopefully both of these integrations will yield great results, and either way, it was a great conference and I hope that we and Canonical/Ubuntu continue finding interesting things to work on together.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/12/01/ubuntu-developer-summit/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>PuppetCamp 2009</title>
		<link>http://madstop.com/2009/10/02/puppetcamp-2009/</link>
		<comments>http://madstop.com/2009/10/02/puppetcamp-2009/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 19:29:59 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[puppetcamp]]></category>
		<category><![CDATA[sanfrancisco]]></category>
		<category><![CDATA[travel]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=79</guid>
		<description><![CDATA[It&#8217;s a great week to do a bit of blog resurrection &#8211; it&#8217;s PuppetCamp in San Francisco.  The conference itself is nearly done &#8211; we&#8217;re nearly done with the actual presentations and will be moving on to the self-organized sessions. &#8230; <a href="http://madstop.com/2009/10/02/puppetcamp-2009/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a great week to do a bit of blog resurrection &#8211; it&#8217;s <a href="http://reductivelabs.com/home/community/puppetcamp/">PuppetCamp</a> in San Francisco.  The conference itself is nearly done &#8211; we&#8217;re nearly done with the actual presentations and will be moving on to the self-organized sessions.</p>
<p>We&#8217;ve had talks by Ohad Levy on <a href="http://theforeman.org/">The Foreman</a>, <a href="http://www.masterzen.fr/">Brice Figureau</a> on StoreConfigs, <a href="http://nasrat.livejournal.com/">Paul Nasrat</a> on Facter, and <a href="http://www.kartar.net/">James Turnbull</a> on developing Puppet.  After the talks yesterday, we split up into self-organized sessions, which are always my favorite &#8212; everyone&#8217;s far more involved, and you know just about everyone is getting something from every session.</p>
<p>The conference has been successful enough that I&#8217;m confident we&#8217;ll have more of them.  Next time, though, we&#8217;ll skip the catering and spend the extra money on getting a location closer to the city center.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/10/02/puppetcamp-2009/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>RESTful Puppet and You</title>
		<link>http://madstop.com/2009/06/04/restful-puppet-and-you/</link>
		<comments>http://madstop.com/2009/06/04/restful-puppet-and-you/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 22:34:22 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[internals]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=73</guid>
		<description><![CDATA[No, I&#8217;m actually not dead, as much as it might appear from my lack of updates.  Fortunately there are other means to verify my vitality. Anyway, the goal here is to help you understand how the imminent release of Puppet &#8230; <a href="http://madstop.com/2009/06/04/restful-puppet-and-you/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No, I&#8217;m actually not dead, as much as it might appear from my lack of updates.  Fortunately there are <a href="http://twitter.com/puppetmasterd">other means</a> to verify my vitality.</p>
<p>Anyway, the goal here is to help you understand how the imminent release of Puppet 0.25 affects you.  And by &#8220;you&#8221; here I am, of course, making some assumptions &#8211; if you don&#8217;t use or care about Puppet, um, not so much.  But if you use Puppet, or, even better, if you care about how well Puppet solves your problems, then this post is for you.  I hope.</p>
<p>I&#8217;ve no short-term memory and don&#8217;t feel like planning this blog post out, so I&#8217;m going to just do what I can to ad-lib the reasons that Puppet&#8217;s new-found RESTfulness kicks ass.  And stuff.</p>
<h2>Smaller and Faster</h2>
<p>First and foremost, 0.25 does not have many what you would call features.  It&#8217;s mostly a refactoring release.  This refactoring in general results in a faster system that takes less memory.  Experiments have borne this out:  People are seeing 10-40x speedups in fileserving, at least 30% less ram consumed on client and server, and much faster run times on the client.</p>
<p>So, look not for features but for benefits.</p>
<h2>What is REST?</h2>
<p>REST is more of a <a href="http://en.wikipedia.org/wiki/REST">principle</a> than a standard, but the things that matter in it for Puppet are:</p>
<ul>
<li>All data transferred is treated as a stand-alone &#8216;resource&#8217; (and here &#8216;resource&#8217; means something different than a normal Puppet resource).  For instance, Puppet 0.25 treates catalogs, file content, file metadata, certificates, certificate requests, fact collections, and probably a bit more as resources.</li>
<li>All resources have a unique URI.  E.g., a given host&#8217;s catalog can be found at &#8216;http://puppet/$environment/catalog/$hostname&#8217;.</li>
<li>Standard HTTP infrastructure is used as the &#8216;api&#8217; &#8211; HTTP &#8216;put&#8217;, &#8216;get&#8217;, and &#8216;delete&#8217; are the primary operations, and HTTP content-type handling is used for serialization negotiation.</li>
</ul>
<p>Of course, none of these are really helpful to you, whomever you are.  What&#8217;s helpful is how we&#8217;ve made these basic ideas useful in Puppet.  So here are some of the things you get:</p>
<h2>Faster and Smaller</h2>
<p>The big problem with our current network protocol (XMLRPC, which is essentially XML over HTTPS) is that everything has to be considered XML, which means that anything that isn&#8217;t actually XML (which is, um, everything in Puppet) has to be encoded and escaped so it can act like XML.  For file serving, this means that every file has a minimum of three copies in memory &#8211; plaintext, encoded, and escaped.  This is time- and memory-expensive.</p>
<h2>Oops I Did It Again</h2>
<p>Sorry, couldn&#8217;t resist.  One of the benefits of switching to REST is that we&#8217;re breaking compatibility, so we can fix some design problems we (i.e., I) made early-on.  The biggest benefits have been around fileserving and the catalog.</p>
<p>In pre-0.25 releases, recursive file-serving involves a minimum of one call per directory and one call per file.  This is obviously slow and bad.  0.25 fixes this so it&#8217;s one call for an entire directory structure, with possibly one call for each file that actually needs to be transferred.  The combination of this plus the lack of encoding and escaping has resulted in most people seeing a 10x speedup in recursive fileserving.</p>
<p>For catalogs, well, pre-0.25 releases don&#8217;t really talk about them.  They transfer this serialized recursive tree structure, rather than the whole catalog (which is really mostly a graph).  This matters a bit in 0.25, because it&#8217;s allowed us to remove some extraneous stupidity that resulted from the limitations of the tree structure (relationships no longer propagate to all contained resources &#8211; see <a href="http://projects.reductivelabs.com/issues/1903">the ticket</a> for more information), but it&#8217;s going to be a bigger deal going forward as we can start relying on the complete graph being passed around.</p>
<p>Both of these refactors could have been done with XLMRPC, but they would have required breaking compatibility, which is always a difficult step to take, so doing it all at once makes the most sense.</p>
<h2>Easier Integration</h2>
<p>The big deal in our use of REST is really an internal system that enables REST &#8211; this is the all-powerful Indirector.  It&#8217;s essentially a plugin system that makes it easy to add new sources or destinations for data we care about.  For example, when we wanted to queue the storage of catalogs to a database (rather than forcing the client to wait until it&#8217;s done), we had to develop the queueing infrastructure, of course, but integrating it with Puppet was less than 100 lines of code that knew how to accept catalogs and send them to the queue.</p>
<p>This ease of integration opens up all kinds of possibilities, like moving our CA to be database-backed, but the main thing is that if you come up with some cool integration, it&#8217;s similarly easy for you &#8212; you&#8217;re not dependent on us.</p>
<p>We&#8217;re still missing one piece &#8211; a user-configurable routing system to help you configure which plugin is used &#8211; but we&#8217;ve got that mostly done and it&#8217;ll be in the release after 0.25.</p>
<p>Note that this integration was often possible in earlier releases, but it was much harder because you had to know a lot more about every individual class you were integrating with.  Because we use the same methods and the same interface and the same location pattern for everything, you don&#8217;t have to know as much.</p>
<h2>Enforced Good Citizenship</h2>
<p>Without the Indirector at the heart of everything, and an assumption that other people are going to be integrating with our code, we are forced to build more decoupled, portable components.  This isn&#8217;t much, but it does always enforce a kind of good citizenship, which is something.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/06/04/restful-puppet-and-you/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>Puppet makes it into MacPorts</title>
		<link>http://madstop.com/2009/03/29/puppet-makes-it-into-macports/</link>
		<comments>http://madstop.com/2009/03/29/puppet-makes-it-into-macports/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 21:56:19 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[facter]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=69</guid>
		<description><![CDATA[Nigel Kersten just let me know that Puppet and Facter are now in MacPorts.  That&#8217;s one more distribution (or in this case, pseudo-distribution) that Puppet&#8217;s a part of.  Thanks Nigel.]]></description>
			<content:encoded><![CDATA[<p><a href="http://explanatorygap.net/">Nigel Kersten</a> just let me know that Puppet and Facter are <a href="https://trac.macports.org/ticket/19041">now in MacPorts</a>.  That&#8217;s one more distribution (or in this case, pseudo-distribution) that Puppet&#8217;s a part of.  Thanks Nigel.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/03/29/puppet-makes-it-into-macports/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>RailsMachine Releases Puppet Rails Tool</title>
		<link>http://madstop.com/2009/03/23/railsmachine-releases-puppet-rails-tool/</link>
		<comments>http://madstop.com/2009/03/23/railsmachine-releases-puppet-rails-tool/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 01:44:26 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=67</guid>
		<description><![CDATA[RailsMachine has announced their project Moonshine, which provides a pure Ruby interface to Puppet and is essentially custom-built to simplify Rails deployment and management: One of the things that separates Moonshine from other solutions like Chef and Sprinkle is that &#8230; <a href="http://madstop.com/2009/03/23/railsmachine-releases-puppet-rails-tool/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://railsmachine.com/">RailsMachine</a> has <a href="http://blog.railsmachine.com/articles/2009/03/18/moonshine-what-burns-blue-makes-your-blues-go-away/">announced</a> their project <a href="https://github.com/railsmachine/moonshine/">Moonshine</a>, which provides a pure Ruby interface to Puppet and is essentially custom-built to simplify Rails deployment and management:</p>
<blockquote><p>One of the things that separates Moonshine from other solutions like Chef and Sprinkle is that out of the box, Moonshine comes with recipes for the same Ubuntu/Ruby Enterprise Edition/Apache/Passenger/MySQL stack that’s in production use at Rails Machine.</p></blockquote>
<p>We&#8217;re pretty excited about this, for multiple reasons.  It&#8217;s another Ruby company developing in and around Puppet, and it&#8217;s a great, simple way for Rails developers to take advantage of both Puppet and the RailsMachine stack.</p>
<p>The next step is to get the ShadowPuppet pure Ruby interface imported into Puppet.  It will complement the existing language rather than replacing it, but we haven&#8217;t really settled all of the details yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/03/23/railsmachine-releases-puppet-rails-tool/feed/</wfw:commentRss>
		<slash:comments>160</slash:comments>
		</item>
		<item>
		<title>Puppet wins Fukuoka Ruby Award</title>
		<link>http://madstop.com/2009/03/23/puppet-wins-fukuoka-ruby-award/</link>
		<comments>http://madstop.com/2009/03/23/puppet-wins-fukuoka-ruby-award/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 01:22:22 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[award]]></category>
		<category><![CDATA[japan]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[reductive]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=65</guid>
		<description><![CDATA[Puppet was one of the winners of the Ruby Award handed out by the Fukuoka Prefecture in Japan.  The Climate Information Toolkit won the top prize, and Puppet was one of three to win the second tier of prize. Unfortunately, &#8230; <a href="http://madstop.com/2009/03/23/puppet-wins-fukuoka-ruby-award/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Puppet was one of the <a href="http://www.flickr.com/photos/lkanies/3377826668/">winners</a> of the Ruby Award handed out by the Fukuoka Prefecture in Japan.  The <a href="http://classpath.egloos.com/4808382">Climate Information Toolkit</a> won the top prize, and Puppet was one of three to win the second tier of prize.</p>
<p>Unfortunately, we could not travel to Japan to receive the award in person, but I was able to give a talk via Skype the night of the award ceremony.  It was around 2am my time on a day I&#8217;d traveled with my wife and twins, so it was a long day, but it was worth it.  I only hope my talk was worth anything.</p>
<p>Andrew did all of the hard work around getting the submission in and organizing the talk itself, so I definitely have him to thank for that.</p>
<p>Now I just need to figure out how to get my bank to accept those postal money orders from Japan. <img src='http://madstop.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/03/23/puppet-wins-fukuoka-ruby-award/feed/</wfw:commentRss>
		<slash:comments>200</slash:comments>
		</item>
		<item>
		<title>Summary of February 2009 Puppet Developer call</title>
		<link>http://madstop.com/2009/02/05/summary-of-february-2009-puppet-developer-call/</link>
		<comments>http://madstop.com/2009/02/05/summary-of-february-2009-puppet-developer-call/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 18:13:16 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[facter]]></category>
		<category><![CDATA[reductive]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=58</guid>
		<description><![CDATA[We had another developer call last night, and until I can get the audio posted, here&#8217;s a basic summary. Development Workflow We led the discussion with a conversation about how the development workflow will change now that we&#8217;re finally releasing &#8230; <a href="http://madstop.com/2009/02/05/summary-of-february-2009-puppet-developer-call/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We had another developer call last night, and until I can get the <a href="http://reductivelabs.com/podcast">audio posted</a>, here&#8217;s a basic summary.</p>
<h2>Development Workflow</h2>
<p>We led the discussion with a conversation about how the development workflow will change now that we&#8217;re finally releasing the code in master as 0.25.  After much discussion, we largely concluded that the least-surprise solution was to use the &#8216;master&#8217; branch for stable development, and have something like a &#8216;next&#8217; branch for new features and major refactorings.</p>
<p>The main goal is for new developers to be able to clone our repository and get to developing code immediately without having to worry about switching branches or any such thing.  More experienced developers will know where their development should be done, so it&#8217;s mostly a question of least-surprise for newcomers.</p>
<p>There was also discussion of fly-by-night developers, people who show up, produce a patch or two, and wander off.  James Turnbull (who handles 99% of the merging and release management) said he was fine accepting patches over email, rather than forcing people to publish everything via git.</p>
<p>Other than those two changes, our development workflow has worked pretty well.  However, the fly-by-night patches led into discussion of&#8230;</p>
<h2>Core vs. Modules</h2>
<p>Puppet&#8217;s core is starting to get many non-core features, like Nagios and Zenöss integration.  It&#8217;s essentially impossible for the core team to maintain all of these extentions, but many of them were written as a one-off solution and won&#8217;t be maintained by their authors.  Because of this, we  as a project need to develop a means of splitting Puppet&#8217;s core away from all of these modules.</p>
<p>Discussion was had of using a Nagios-style &#8216;plugins&#8217; repository, but I don&#8217;t like that idea because it leaves basically the same problem &#8211; a centralized repository that no one wants to maintain.</p>
<p>Instead, we all basically agreed that we want to focus on modules as the means of adding functionality to Puppet, but the big problem there is that the only way to do so is to add package-like behaviours to modules, and none of us wants to make our own package manager.  Nonetheless, it was agreed that this was the only real option, so it just remains to do it.</p>
<h2>Roadmap and Release Status</h2>
<p>Against all odds, it looks like we&#8217;ll get 0.25 out in February &#8211; I&#8217;ll be merging in the last major refactor this week, and then it&#8217;s just a question of getting as many bug-fixes in as we can and dropping the release.</p>
<p>In addition, there are (annoyingly) a few important bugs in 0.24.7, so we&#8217;re unfortunately going to have to be put out a 0.24.8 release.  One thing that&#8217;s become clear in the last couple of releases is that we need to get more community testing of release candidates &#8211; many of the bugs would have been caught by basic testing in the community.</p>
<h2>Facter Design and Shadow{Facter,Puppet}</h2>
<p>RailsMachine released <a href="http://github.com/railsmachine/shadow_puppet/tree/master">ShadowPuppet</a> and <a href="http://github.com/railsmachine/shadow_facter/tree/master">ShadowFacter</a> in the last few weeks, and it&#8217;s led to a flurry of design conversations.  We didn&#8217;t cover too much of it in the dev call, other than my reiteration that I&#8217;m excited by them and would like to merge them into Puppet and Facter.</p>
<h2>Conclusion</h2>
<p>And that was it.  Please join us on the next call if you can.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/02/05/summary-of-february-2009-puppet-developer-call/feed/</wfw:commentRss>
		<slash:comments>111</slash:comments>
		</item>
		<item>
		<title>Golden Image or Foil Ball?</title>
		<link>http://madstop.com/2009/02/04/golden-image-or-foil-ball/</link>
		<comments>http://madstop.com/2009/02/04/golden-image-or-foil-ball/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 04:23:50 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Puppet]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[goldenimage]]></category>
		<category><![CDATA[reductive]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=56</guid>
		<description><![CDATA[The essential basis of running services in &#8220;the cloud&#8221; is that they run in virtual machines, which come with their own idioms and practices for managing them.  One of the mainstays of managing virtual machines (&#8216;VMs&#8217;) uses what&#8217;s called &#8216;golden &#8230; <a href="http://madstop.com/2009/02/04/golden-image-or-foil-ball/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The essential basis of running services in &#8220;the cloud&#8221; is that they run in virtual machines, which come with their own idioms and practices for managing them.  One of the mainstays of managing virtual machines (&#8216;VMs&#8217;) uses what&#8217;s called &#8216;golden images&#8217;.  These are images built up complete with the services they&#8217;re supposed to run, so that you can just start them and they&#8217;ll immediately join the network and do whatever it is they&#8217;re supposed to do.</p>
<p>As the post title suggests, though, I think &#8216;foil ball&#8217; is a more appropriate term.</p>
<p>You have significant problems when you rely on golden images:  Image sprawl, updating your images, and image state vs. running state.</p>
<p>Image sprawl is what you get when the number of images (not running virtual machines) you have grows to an essentially unmaintainable figure.  Let&#8217;s start with a simple LAMP stack:  At the least, you&#8217;ll have a separate image for your web, database, and application servers.  Oh, except you probably need a load balancer image.  If you have any support services like DNS, you need an image for those.  And so on.  You soon find that you have a separate image for every service you provide.</p>
<p>Now that you&#8217;ve got this image sprawl, you run into the next issue:  Updating these images is relatively expensive, and nearly always results in redundancy.  It&#8217;s expensive because even trivial changes require a full image rebuild, which is itself a bit complicated.  The redundancy comes because you *still* have to do some work on the image once it&#8217;s booted as a server, even if it&#8217;s minimal.  So now you&#8217;ve got this complicated image generation process that has some kind of overlap with a simple on-server management process.  Another kind of redundancy arrives when you make a change that affects multiple images (e.g., upgrading the same package, or performing the same configuration change): you have to make this change to each of these images separately.</p>
<p>Oh, and by the way &#8211; this updating process is usually completely unrelated to the process you use to update your non-image machines.  Because hey, if a little bit of redundancy is good, then redundant redundancy is especially awesome.</p>
<p>Say you managed all of that, though, and all of your images are correctly updated all of the time.  Great, now you just have to reboot every machine on your network to take advantage of the new changes.  Of course, this isn&#8217;t exactly feasible for every machine all the time, which means you&#8217;ve got drift between the desired and actual configuration state.</p>
<p>This is why I think maintaining these images is more like managing a foil ball:  It&#8217;s difficult to pull apart, difficult to press back together, and if you get too many of them they just get into the way.</p>
<p>If, instead, you use a single, base image for all of your work &#8212; I call these images <a href="http://en.wikipedia.org/wiki/Stem_cell">stem cell</a> images for what are hopefully obvious reasons &#8211; and then use a tool like <a href="http://reductivelabs.com/trac/puppet/">Puppet</a> to configure them once they&#8217;re running, you avoid all of the above problems:  You have one image to maintain and it&#8217;s necessarily simplistic, you use the same tool and the same configuration base across all images, and Puppet keeps your machines updated within 30 minutes of any central change.</p>
<p>So, if someone tries to sell you a golden image, don&#8217;t buy it &#8211; instead choose a tool you can use for every machine in your organization, and push every configuration operation possible into that tool, rather than spreading tasks around to your provisioning, image management, and configuration management tools.  This is just as true for tools like Jumpstart and Kickstart &#8211; they should do as little as possible, and hand off immediately to a tool like Puppet; well, really, just Puppet. <img src='http://madstop.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2009/02/04/golden-image-or-foil-ball/feed/</wfw:commentRss>
		<slash:comments>313</slash:comments>
		</item>
		<item>
		<title>Puppet on the IT Management Podcast</title>
		<link>http://madstop.com/2008/12/22/puppet-on-the-it-management-podcast/</link>
		<comments>http://madstop.com/2008/12/22/puppet-on-the-it-management-podcast/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 15:46:44 +0000</pubDate>
		<dc:creator>luke</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[luke]]></category>
		<category><![CDATA[cote]]></category>
		<category><![CDATA[podcast]]></category>

		<guid isPermaLink="false">http://madstop.com/?p=49</guid>
		<description><![CDATA[I was a guest on last week&#8217;s IT Management Podcast again last week, and we ended up talking a lot about Puppet and the difficulties in running an open source software company.  As always, John Willis and Coté are informed &#8230; <a href="http://madstop.com/2008/12/22/puppet-on-the-it-management-podcast/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was a guest on last week&#8217;s <a href="http://www.redmonk.com/cote/2008/12/22/itmanagement030/">IT Management Podcast</a> again last week, and we ended up talking a lot about Puppet and the difficulties in running an open source software company.  As always, <a href="http://www.johnmwillis.com/">John Willis</a> and <a href="http://www.redmonk.com/cote/">Coté</a> are informed and interesting.  Give it a listen, and maybe subscribe to the whole series.</p>
]]></content:encoded>
			<wfw:commentRss>http://madstop.com/2008/12/22/puppet-on-the-it-management-podcast/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
