<?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; reductive</title>
	<atom:link href="http://madstop.com/tag/reductive/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>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>
	</channel>
</rss>
