<?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>Mike&#039;s Place &#187; Work</title>
	<atom:link href="http://blog.gurski.org/index.php/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gurski.org</link>
	<description>Inarticulate ramblings on whatever strikes my fancy</description>
	<lastBuildDate>Thu, 02 Feb 2012 16:58:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Being &#8220;appropriately lazy&#8221;</title>
		<link>http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/</link>
		<comments>http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 00:00:00 +0000</pubDate>
		<dc:creator>emag</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[package management]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.gurski.org/?p=50</guid>
		<description><![CDATA[Now that it looks like it will really happen, I think I can post about it&#8230; credit: &#8220;LAZY DOG&#8221; by paddynapper A little over a week ago, one of the directors where I work asked to talk to me. During the course of the discussion, he told me he wanted me to work primarily on [...]]]></description>
			<content:encoded><![CDATA[<p>Now that it looks like it will really happen, I think I can post about it&#8230;</p>
<div style="float: right; width: 240px; font-size: 60%; text-align: center; padding: 2em;"><a href="http://www.flickr.com/photos/28990363@N05/5629273326/" title="LAZY DOG by paddynapper, on Flickr"><img src="http://farm6.static.flickr.com/5310/5629273326_7cfd53f0ac_m.jpg" width="240" height="171" alt="LAZY DOG"></a><br />credit: &#8220;LAZY DOG&#8221; by <a href="http://www.flickr.com/photos/28990363@N05/">paddynapper</a></div>
<p> A little over a week ago, one of the directors where I work asked to talk to me. During the course of the discussion, he told me he wanted me to work primarily on sysadmin projects for his group. The reasoning? He told me that it was because I was &#8220;appropriately lazy&#8221;. He&#8217;d prefaced this statement with a disclaimer that what he was going to say was intended as a compliment. Upon hearing it, I assured him there was no way I could take the statement as anything other than a compliment. Here&#8217;s why&#8230;<br />
<span id="more-50"></span></p>
<p>A sysadmin&#8217;s day is often filled with lots of little tasks. Most could be unique for that day, some repetitve. In either case, you&#8217;ll find that, over time, you&#8217;re doing a lot of the same thing, day in and day out. Sometimes it doesn&#8217;t seem like it&#8217;s worth it to write a script or fully automate a task. After all, it only takes a minute or two, right?</p>
<h3>Scripting</h3>
<p>If it&#8217;s truly a one-off, yeah, it probably makes no sense to automate it in some fashion. If it&#8217;s something you&#8217;re doing on any recurring basis, though, it makes sense to at the very least write a script to take care of the details.</p>
<p>My general rule of thumb is this: &#8220;<strong>The first time I do something, I&#8217;ll tend to do it manually. If I have to do it a second time, I&#8217;ll take the time to either make it a <a href="http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/">wholly automated process</a>, or at the very least, write a script to do the majority of the work for me.</strong>&#8221;</p>
<p>Why do I do this? Well, if it&#8217;s a one-off process, there&#8217;s no point in taking the time to make sure I can repeat something. If I&#8217;m doing it a second time, there&#8217;s a pretty good chance that I&#8217;ll be doing it a third, fourth, &#8230;, hundredth time. Worse, if it&#8217;s something I only do once a month or less frequently, there&#8217;s a <em>really</em> good chance that by the time I need to do it again, I&#8217;ll have forgotten the exact sequence of steps that I need to perform.</p>
<p>In either case, from my point of view it makes sense to write a script that does the majority of the work. Sure, it may take me a couple hours in the worst case to write a <em>really</em> good script to take care of what&#8217;s normally five minutes&#8217; work, but when that&#8217;s 5 minutes each time, over five times a week&#8211;every week&#8211;for the next year or two, it&#8217;s worth the investment. When it&#8217;s something that will take me 20-30 minutes to figure out just what I did a month or two ago, spending a few hours to make sure I have a script that <em>consistently</em> and <em>reliably</em> does the same process is a &#8220;win&#8221; for me. It frees me from having to remember the details, and it ensures that I don&#8217;t forget some necessary step which seems optional, but in reality isn&#8217;t.<sup><a href="http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#footnote_0_50" id="identifier_0_50" class="footnote-link footnote-identifier-link" title="This bit me recently, setting up a second VM for a customer. The first time, I found these exceptions and edge cases, such as adding the user <code>tomcat</code> was running as to the local <code>adm</code> group. I should have scripted it sooner, when I set up the first VM about a year ago&amp;#8230;">1</a></sup></p>
<h3>Package Management</h3>
<p>Another area where I&#8217;m &#8220;appropriately lazy&#8221; is when it comes to package management. Whenever possible, I try to use my (Linux) distribution&#8217;s package management system for every software installation. True, this can often lead to slightly outdated software, but things like <a href="http://backports.debian.org/">backports</a> can help with that.</p>
<p>For software that isn&#8217;t available direct from my distribution of choice, there are often helper scripts to turn standard <code>tarballs</code> into packages, or often language-specific scripts to turn said language&#8217;s version of packages (<a href="http://cpan.perl.org/">CPAN archives</a>, <acronym title="Pre-Hypertext Processing">PHP</acronym> packages, <a href="http://rubygems.org/">Ruby gems</a>, etc) into native packages. Setting up a local repository to host these packages is fairly simple to do these days, and the benefits will out-weigh the time it takes to initially set things up.</p>
<p>For some packages, such as language-specific database drivers,<sup><a href="http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#footnote_1_50" id="identifier_1_50" class="footnote-link footnote-identifier-link" title="such as Oracle drivers for PHP">2</a></sup> you&#8217;ll still find yourself compiling directly from source. However, if your distro is even slightly intelligent, it will have support for building these additional drivers when you rebuild the main package. You&#8217;ll probably have to uncomment some lines from a configuration file, but you&#8217;ll end up with another installable package that&#8217;s managed natively.</p>
<p>By sticking to native packages as much as possible, you&#8217;ll find yourself either adding an additional supported repository to each system (preferably in an automated fashion, such as with <a href="http://projects.puppetlabs.com/projects/puppet">puppet</a>), or building packages locally on a single build-host and adding to a local repository, which you&#8217;ll also add to your hosts. In either case, it means you&#8217;re, at most, building each piece of software a single time, and installing on multiple systems. This, obviously, will save you time and effort. You&#8217;ll only build once, and you&#8217;ll know that every place you install, the software will be built identically, because you&#8217;re installing the exact same software everywhere.</p>
<h4>Meta-Packages</h4>
<p>As a subset of building packages, there&#8217;s the topic of <code>meta-packages</code>. These don&#8217;t actually install any particular software themselves, they&#8217;re just a convenient way of installing <em>other</em> software.</p>
<p>As an example, I have meta-packages for installing everything I need for a webserver, with a sub-package for installing <acronym title="Pre-Hypertext Processing">PHP</acronym> with all the extensions our developers require. I also have meta-packages for installing the requirements for Java application servers, both <a href="http://tomcat.apache.org/">tomcat</a> and <a href="http://www.jboss.org/">JBoss</a>. Additional meta-packages I use are for <a href="http://en.wikipedia.org/wiki/LDAP">LDAP</a> authentication, &#8220;helpers&#8221; such as various utilities I&#8217;ve found useful, anti-virus scanners, file-access systems like <acronym title="File Transfer Protocol">FTP</acronym>, perl modules, etc.</p>
<p>Having these meta-packages saves me both time and effort, by encapsulating in a single install everything I need to accomplish a specific task. Were I to have to manually install each necessary package on every server, there&#8217;s no doubt that I&#8217;d forget something, eventually causing a problem later down the line.<sup><a href="http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#footnote_2_50" id="identifier_2_50" class="footnote-link footnote-identifier-link" title="This has happened, which is why I now use meta-packages&amp;#8230;">3</a></sup></p>
<p>It also ensures there&#8217;s a consistency to each system I build. I, and my users, know that when I say &#8220;standard web build&#8221;, we have a known set of software we&#8217;re referring to. Whenever a user requests something generally useful for others, I&#8217;ll tend to add the requirement to one of my meta-packages. Installation will be automatic on all new systems, and will be taken care of on my weekly security updates for all other systems using that meta-package.</p>
<h3>Regular Updates</h3>
<p>Yes, I regularly update my systems. I attempt to do so once a week. This tends to keep me ahead on both security updates and (on the rare occasion) newer versions of the software we use. Generally, this <em>also</em> means that when our monthly security scans are run, I&#8217;m already patched for the latest vulnerabilities that our scanner has been updated to detect. Even when the software version isn&#8217;t modified, as is usually the case in a &#8220;stable&#8221; distribution, I at least have a changelog for security updates that list the <a href="http://cve.mitre.org/">CVE</a> numbers of the problems fixed. This keeps our security groups (both local and at our parent) happy, because I can easily address any &#8220;problems&#8221; found in the scan, simply stating we&#8217;re already for a list of vulnerabilities from our &#8220;vendor&#8221;.</p>
<p>What <em>that</em> means is, I&#8217;m often <em>not</em> scrambling to update dozens or hundreds of systems under threat of being cut off at our firewall(s), since I&#8217;m very easily able to address concerns. This frees me up to concentrate on the other areas for which I&#8217;m responsible. Some of my colleagues will spend the better part of a week updating the systems they&#8217;re responsible for, often running into compatibility problems because it&#8217;s been so long since they last updated their systems.<sup><a href="http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#footnote_3_50" id="identifier_3_50" class="footnote-link footnote-identifier-link" title="Yes, I&amp;#8217;m preaching the benefits of regularly updating, using packages when possible, etc. I think I&amp;#8217;m slowly winning them over.">4</a></sup></p>
<p>Currently, I&#8217;m using a tool to run ssh in parallel<sup><a href="http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#footnote_4_50" id="identifier_4_50" class="footnote-link footnote-identifier-link" title="Update 2011-06-01 22:41 Someone&amp;#8217;s asked which tool I use. It&amp;#8217;s clusterssh, since I can define different classes, such as &amp;#8220;webservers&amp;#8221;, &amp;#8220;tomcat servers&amp;#8221;, &amp;#8220;infrastructure&amp;#8221;, etc, and access whole groups that way. It also has the ability to stop sending typed commands to specific windows it opens, so if I&amp;#8217;ve already performed some steps to one server, I can avoid repeating steps that might not work correctly&amp;#8230; like reconfiguring the mail daemon recently&amp;#8230;">5</a></sup> to several systems at once. Updates are one of the areas I&#8217;m not entirely comfortable fully automating, just in case there are problems. But it&#8217;s an area where having all your systems configured from the same base image, with known variations to accomplish specific tasks, can significantly simply the amount of effort you need to expend keeping everything up to date.</p>
<h3>Monitoring</h3>
<p>I mostly touched upon this in a <a href="http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/">previous post</a>, but it bears repeating (and linking). By setting up automated monitoring for everything I do, I&#8217;m often alerted to problems before anyone else notices. This allows me to fix problems before they become <em>major</em> problems, and if they do I can always immediately respond that I&#8217;m already aware of and (preferably) working on a resolution to the problem.</p>
<p>You&#8217;d be amazed how quickly this response keeps both customers and your management from breathing down your neck. You&#8217;ve demonstrated you already have a grasp of the situation, and that you&#8217;re (actively) working on the problem. Often times, in the interests of full disclosure, I&#8217;ll tell my customers and management about problems they <em>didn&#8217;t</em> notice, because I was alerted to them long before they would have noticed them &#038; fixed them. There&#8217;s nothing like tooting your own horn sometimes&#8230;</p>
<h3>Templates</h3>
<p>A lot of the systems I deploy are virtual machines (<acronym title="virtual machines">VMs</acronym>). Primarily, that&#8217;s because a lot of them are fairly identical. Also, since so many of the systems I deploy use a fraction of the resources of a modern machine<sup><a href="http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#footnote_5_50" id="identifier_5_50" class="footnote-link footnote-identifier-link" title="Even our most heavily-used web servers, for example, could easily be served with the resources of a machine 4 or 5 years old.">6</a></sup>, virtualization makes a great deal of sense from machine cost, cooling, and power requirements points of view. I&#8217;ll probably address the advantages of appropriate virtualization at some point in the future. For now, just accept that it can definitely be good.</p>
<p>Now, and advantage of most virtualization systems is that you&#8217;re able to define <em>templates</em>. Essentially, this means you set up and configure a minimal system, with all the common configuration you can. Then, you can deploy these templates to specific <acronym title="virtual machines">VMs</acronym>. You save time, you have a known and consistent base you&#8217;re starting from, and you&#8217;re able, over time, to adapt it to your evolving needs. Needs such as incorporating your security updates, meta-package updates, and any overall changes you need to make.</p>
<h3>Wrap-up</h3>
<p>If you&#8217;ve read to this point, you&#8217;re probably thinking to yourself, &#8220;<em>This doesn&#8217;t sound very lazy&#8230;</em>&#8220;. You&#8217;d be right. The point of all of this isn&#8217;t to be <em>lazy</em>, the point is to be <em>appropriately lazy</em>. There <em>is</em> a difference. Being lazy, you or I wouldn&#8217;t bother to do most, if not all, of the things I&#8217;ve outlined. Being <em>appropriately lazy</em>, I (and now I hope, you) recognize that putting forth extra effort near the beginning will pay off multiple times over in expended effort later on. We recognize that taking a few hours (or even days) to make our future lives significantly easier is a good investment, not only in our current jobs, but in our overall careers. An appropriately lazy system administrator is a much more productive system administrator.<sup><a href="http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/#footnote_6_50" id="identifier_6_50" class="footnote-link footnote-identifier-link" title="Or programmer, or mathematician, or really, anyone&amp;#8230; I did start my career as a programmer, and will probably at some point do such work again. What I&amp;#8217;ve learned as a programmer is applicable as a systems administrator, and what I&amp;#8217;ve learned as a sysadmin is applicable as a programmer&amp;#8230;">7</a></sup></p>
<p>This is why, when I was told I was &#8220;appropriately lazy&#8221;, there was no way I could have taken it as anything but a compliment. Actually, it&#8217;s probably one of the <em>highest</em> compliments I could have been given. Especially, a compliment by a director in my organization who recognizes that visibly-expended effort isn&#8217;t nearly as valuable as visibly-<em>saved</em> effort over time.</p>
<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;partner=sociable" title="Print"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;partner=sociable" title="PDF"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Being%20%22appropriately%20lazy%22%20-%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F" title="Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://identi.ca/notice/new?status_textarea=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F" title="Identi.ca"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/identica.png" title="Identi.ca" alt="Identi.ca" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22" title="Reddit"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22&amp;notes=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="del.icio.us"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22&amp;source=Mike%26%23039%3Bs+Place+Inarticulate+ramblings+on+whatever+strikes+my+fancy&amp;summary=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="LinkedIn"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22&amp;annotation=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="Google Bookmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;t=Being%20%22appropriately%20lazy%22" title="Facebook"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22&amp;bodytext=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="Digg"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22" title="StumbleUpon"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22" title="DZone"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Being%20%22appropriately%20lazy%22&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F" title="Fark"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blog.gurski.org/index.php/feed/" title="RSS"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Being%20%22appropriately%20lazy%22&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F" title="Slashdot"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F" title="Technorati"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;t=Being%20%22appropriately%20lazy%22&amp;s=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="Tumblr"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Being%20%22appropriately%20lazy%22&amp;body=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F" title="email"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Being%20%22appropriately%20lazy%22&amp;link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F" title="FriendFeed"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22" title="Live"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22&amp;body=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="Ping.fm"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22" title="blogmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.blogospherenews.com/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22" title="Blogosphere News"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogospherenews.png" title="Blogosphere News" alt="Blogosphere News" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://current.com/clipper.htm?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22" title="Current"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/current.png" title="Current" alt="Current" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&title=Being%20%22appropriately%20lazy%22" title="Diggita"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://globalgrind.com/submission/submit.aspx?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;type=Article&amp;title=Being%20%22appropriately%20lazy%22" title="Global Grind"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/globalgrind.png" title="Global Grind" alt="Global Grind" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;t=Being%20%22appropriately%20lazy%22" title="HackerNews"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=Being%20%22appropriately%20lazy%22&amp;URL=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="MSN Reporter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;t=Being%20%22appropriately%20lazy%22" title="MySpace"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://posterous.com/share?linkto=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;title=Being%20%22appropriately%20lazy%22&amp;selection=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want" title="Posterous"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://socialogs.com/add_story.php?story_url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;story_title=Being%20%22appropriately%20lazy%22" title="Socialogs"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/socialogs.png" title="Socialogs" alt="Socialogs" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home/?status=tip%20@Techmeme%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F%20Being%20%22appropriately%20lazy%22" title="Suggest to Techmeme via Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/techmeme.png" title="Suggest to Techmeme via Twitter" alt="Suggest to Techmeme via Twitter" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2011%2F06%2F01%2Fbeing-appropriately-lazy%2F&amp;submitHeadline=Being%20%22appropriately%20lazy%22&amp;submitSummary=Now%20that%20it%20looks%20like%20it%20will%20really%20happen%2C%20I%20think%20I%20can%20post%20about%20it...%0D%0A%0D%0Acredit%3A%20%22LAZY%20DOG%22%20by%20paddynapper%20A%20little%20over%20a%20week%20ago%2C%20one%20of%20the%20directors%20where%20I%20work%20asked%20to%20talk%20to%20me.%20During%20the%20course%20of%20the%20discussion%2C%20he%20told%20me%20he%20want&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
</ul>
</div>
<img src="http://blog.gurski.org/?ak_action=api_record_view&id=50&type=feed" alt="" /><ol class="footnotes"><li id="footnote_0_50" class="footnote">This bit me recently, setting up a second <acronym title="virtual machine">VM</acronym> for a customer. The first time, I found these exceptions and edge cases, such as adding the user <code>tomcat</code> was running as to the local <code>adm</code> group. I should have scripted it sooner, when I set up the first <acronym title="virtual machine">VM</acronym> about a year ago&#8230;</li><li id="footnote_1_50" class="footnote">such as Oracle drivers for <acronym title="Pre-Hypertext Processing">PHP</acronym></li><li id="footnote_2_50" class="footnote">This has happened, which is why I now use meta-packages&#8230;</li><li id="footnote_3_50" class="footnote">Yes, I&#8217;m preaching the benefits of regularly updating, using packages when possible, etc. I think I&#8217;m slowly winning them over.</li><li id="footnote_4_50" class="footnote"><strong>Update 2011-06-01 22:41</strong> Someone&#8217;s asked which tool I use. It&#8217;s <a href="http://clusterssh.sourceforge.net/">clusterssh</a>, since I can define different classes, such as &#8220;webservers&#8221;, &#8220;tomcat servers&#8221;, &#8220;infrastructure&#8221;, etc, and access whole groups that way. It also has the ability to stop sending typed commands to specific windows it opens, so if I&#8217;ve already performed some steps to one server, I can avoid repeating steps that might not work correctly&#8230; like reconfiguring the mail daemon recently&#8230;</li><li id="footnote_5_50" class="footnote">Even our most heavily-used web servers, for example, could easily be served with the resources of a machine 4 or 5 years old.</li><li id="footnote_6_50" class="footnote">Or programmer, or mathematician, or really, anyone&#8230; I did start my career as a programmer, and will probably at some point do such work again. What I&#8217;ve learned as a programmer is applicable as a systems administrator, and what I&#8217;ve learned as a sysadmin is applicable as a programmer&#8230;</li></ol>]]></content:encoded>
			<wfw:commentRss>http://blog.gurski.org/index.php/2011/06/01/being-appropriately-lazy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automatic Monitoring with Puppet and Nagios</title>
		<link>http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/</link>
		<comments>http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 00:30:03 +0000</pubDate>
		<dc:creator>emag</dc:creator>
				<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://blog.gurski.org/?p=41</guid>
		<description><![CDATA[Part of my current push at work right now is trying to get some sort of configuration management system in place, and in a usable state. Part of the reason for wanting to do this is consistency of common configuration among the many systems and virtual machines I manage, especially when several serve essentially the [...]]]></description>
			<content:encoded><![CDATA[<p>Part of my current push at work right now is trying to get some sort of configuration management system in place, and in a usable state.  Part of the reason for wanting to do this is consistency of common configuration among the many systems and virtual machines I manage, especially when several serve essentially the same function (such as webserver <acronym title="virtual machines">VMs</acronym>).  Since I&#8217;m a fallible human being, it&#8217;s easier for me to get <strong>one</strong> webserver configured so that the non-content part of the setup always passes our security scans, and then replicated <strong>that</strong> to all the other webservers.  This not only saves me time, and makes me more efficient, but helps when we do system audits, as I can easily prove that all <em>N</em> systems I manage that serve the same role have identical configurations.</p>
<p><span id="more-41"></span></p>
<p>Another push I&#8217;ve been working on for a few years now is comprehensive monitoring of our systems.  When I started at my job, monitoring was being done through a home-grown script, that would run once an hour.  While not particularly bad, it had some major shortcomings.  Primarily, the hour lag time meant that, if a problem occurred shortly after the script ran, you wouldn&#8217;t know about it for nearly an hour.  Another problem was that, while the script would make note of system problems, the <em>only</em> notification mechanism was &#8220;someone needs to visit the web page it generates&#8221;.  During a normal workday, that might be OK, but evenings and weekends?  So, at least for my benefit, I set up a monitoring system that could not only monitor systems more frequently, but monitor more systems, and send out alerts via email, cell phones, etc.</p>
<p>For reasons I won&#8217;t get into here, what I chose to use for configuration management was <a href="http://projects.puppetlabs.com/projects/puppet/">Puppet</a>, and I&#8217;d already chosen <a href="http://www.nagios.org">Nagios</a> as my monitoring system.  So far, my biggest problem with Nagios has been finding the time to add new systems to it, figuring out what services to check, etc.  It&#8217;s not a particularly <em>difficult</em> thing to do, but in the grand scheme of things, it was just something that always fell by the wayside in the drive to get more systems set up, deal with user problems, and put out the inevitable fires.  That is, until recently.</p>
<p>My original Nagios install was done on an aging box that has been serving as a development web server for our group.  I did the install shortly after I&#8217;d started, so had I been around longer, I might have either waited, put in a request for new hardware, or found a way to get virtualization into our environment sooner.  Overall, it worked, but it was in general a pain dealing with the box, a RHEL3 server, since it was so far out of date.  Recently, I&#8217;ve set up a <acronym title="virtual machine">VM</acronym> on our XenServer cluster to be our new Nagios box.  Since I&#8217;ve also been playing with Puppet, I wanted to automate things as much as possible, since every new system created <em>should</em> be managed by Puppet (though reality slightly differs from that).</p>
<p>Fortunately, the groundwork for automating Nagios monitoring with Puppet is already <a href="http://reductivelabs.com/trac/puppet/wiki/NagiosReference">built in</a> to Puppet.  It took me a little bit to wrap my head around the concepts, but the <a href="http://docs.puppetlabs.com/guides/exported_resources.html">example</a> helped and served as a base.</p>
<p>Now, even though I&#8217;m still in the process of setting things up, I&#8217;ve gotten to the point where my <em>new</em> Nagios server is already monitoring about 30% <em>more</em> information about hosts (422 services vs 308 on the old server), even though the number of hosts is currently about half (48 hosts vs 99 on the old).  All of it done automatically, and here&#8217;s how.</p>
<p>First, set up <a href="http://projects.puppetlabs.com/projects/puppet/wiki/Using_Stored_Configuration">stored configurations</a> on your <code>puppetmaster</code>.  You&#8217;ll need to specify a database in which to store your puppet-collected facts and resources.  While the default is <a href="http://www.sqlite.org/">SQLite</a>, I ran into problems with concurrent access.  Since I&#8217;m also currently responsible for the handful of <a href="http://mysql.com/">MySQL</a> servers we have, I decided to just use one of those.  Create a database and user for puppet to use, then tell the puppetmaster about it.  Your <code>[puppetmasterd]</code> section of <code>puppet.conf</code> should look something like this when you&#8217;re done:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="re0"><span class="br0">&#91;</span>puppetmasterd<span class="br0">&#93;</span></span><br />
<span class="re1">templatedir </span>=<span class="re2"> /var/lib/puppet/templates</span><br />
<span class="re1">storeconfigs </span>=<span class="re2"> true</span><br />
<span class="re1">dbadapter </span>=<span class="re2"> mysql</span><br />
<span class="re1">dbuser </span>=<span class="re2"> the_user_you_set_up</span><br />
<span class="re1">dbpassword </span>=<span class="re2"> the_password_for_dbuser</span><br />
<span class="re1">dbserver </span>=<span class="re2"> the_database_server</span><br />
#<span class="re1">dbsocket </span>=<span class="re2"> /var/run/mysqld/mysqld.sock</span><br />
<span class="re1">downcasefacts </span>=<span class="re2"> true</span><br />
&nbsp;</div>
<p>Your paths may likely be different than mine.  If your DB server is running on the same host as the puppetmasterd process, <code>dbserver</code> should be &#8220;localhost&#8221;, and you&#8217;d uncomment and adjust the path of the <code>dbsocket</code> line.  The <code>downcasefacts</code> line is set to &#8220;true&#8221; so that I can make use of the <code>$operatingsystem</code> fact later on without having to muck with changing the case later.</p>
<p>Next, you&#8217;ll want to create a <code>nagios</code> module in Puppet.  The Exported Resource example linked above served as my template, but I&#8217;ve made a few changes to it. My <code>puppet/modules/nagios/manifests/init.pp</code> file currently looks like this:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">class</span> nagios <span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp;package <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="st0">&#8216;nagios3&#8242;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> &nbsp;=&gt; installed,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">alias</span> &nbsp; =&gt; <span class="st0">&#8216;nagios&#8217;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;<br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;service <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="st0">&#8216;nagios3&#8242;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> &nbsp;=&gt; running,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">alias</span> &nbsp; =&gt; <span class="st0">&#8216;nagios&#8217;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hasstatus &nbsp; &nbsp; &nbsp; =&gt; <span class="kw2">true</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hasrestart &nbsp; &nbsp; &nbsp;=&gt; <span class="kw2">true</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">require</span> =&gt; Package<span class="br0">&#91;</span>nagios<span class="br0">&#93;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;<span class="co1"># collect resources and populate /etc/nagios/nagios_*.cfg</span><br />
&nbsp; &nbsp;Nagios_host &lt;&lt;||&gt;&gt;<br />
&nbsp; &nbsp;Nagios_service &lt;&lt;||&gt;&gt;<br />
&nbsp; &nbsp;Nagios_hostextinfo &lt;&lt;||&gt;&gt;</p>
<p>&nbsp; &nbsp;<span class="kw1">class</span> target <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; @@nagios_host <span class="br0">&#123;</span> <span class="re0">$fqdn</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> =&gt; present,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">alias</span> =&gt; <span class="re0">$hostname</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;address =&gt; <span class="re0">$ipaddress</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;generic-host&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_hostextinfo <span class="br0">&#123;</span> <span class="re0">$fqdn</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">ensure</span> =&gt; present,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;icon_image_alt =&gt; <span class="re0">$operatingsystem</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;icon_image =&gt; <span class="st0">&quot;base/$operatingsystem.png&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;statusmap_image =&gt; <span class="st0">&quot;base/$operatingsystem.gd2&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_ping_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;check_ping&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_users_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-users&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_load_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-load&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_zombie_procs_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-zombie-procs&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_total_procs_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-total-procs&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_swap_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-swap&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; @@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_all_disks_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;use =&gt; <span class="st0">&quot;remote-nrpe-all-disks&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>To use it, I simply do an <tt>include nagios</tt> in the node definition for my Nagios server in puppet, and in my <code>basenode</code> node definition, I&#8217;ve done an <tt>include nagios::target</tt>.  Each of the <code>@@</code> lines will collect information for each machine managed by puppet that inherits from <code>basenode</code>.  The &#8220;collect resources and populate /etc/nagios/nagios_*.cfg&#8221; portion is the real magic, however.  Each of those lines will cause puppet to collect all the matching resources, and output them to files in <code>/etc/nagios</code>.  The only real caveat, which I also noticed in the example I built upon, is that I&#8217;m having trouble convincing puppet to reload nagios when the files are updated, which I just brute-force solved with a periodic cronjob to run nagios&#8217; init script with &#8220;reload&#8221;.</p>
<p>I&#8217;m also slowly adding nagios entries for each service that puppet manages in some form.  Currently, that means things like apache and ssh.  For example, in my <code>apache2</code> module&#8217;s <code>init.pp</code>, I have the following in my class:</p>
<div class="dean_ch" style="white-space: wrap;">
&nbsp; &nbsp;@@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_http_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; use =&gt; <span class="st0">&quot;check-http&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;@@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_http_processes_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; use =&gt; <span class="st0">&quot;remote-nrpe-httpd-procs&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>This both monitors over-the-wire connections to port 80 on webservers, via the <code>check-http</code> command, but also monitors the number of httpd processes running on each host, via <code>remote-nrpe-httpd-procs</code>.</p>
<p>Similarly, for ssh, I have:</p>
<div class="dean_ch" style="white-space: wrap;">
&nbsp; &nbsp;@@nagios_service <span class="br0">&#123;</span> <span class="st0">&quot;check_ssh_${hostname}&quot;</span>:<br />
&nbsp; &nbsp; &nbsp; use =&gt; <span class="st0">&quot;check-ssh&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; host_name =&gt; <span class="st0">&quot;$fqdn&quot;</span>,<br />
&nbsp; &nbsp;<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>to monitor whether <code>sshd</code> is accepting connections on my systems.</p>
<p>And that, basically, is how I&#8217;m automatically monitoring all puppet-managed hosts in my environment.  Whenever I set up a new host, I activate puppet on the host to ensure configurations I care about are synced to my master templates, and now as a bonus, puppet automatically tells nagios to start monitoring the services it knows about on the host.  By expending a little extra effort once now, I&#8217;ve managed to be lazy later on multiple times over, truly something a Systems Administrator should be doing!</p>
<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;partner=sociable" title="Print"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;partner=sociable" title="PDF"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios%20-%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://identi.ca/notice/new?status_textarea=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Identi.ca"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/identica.png" title="Identi.ca" alt="Identi.ca" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Reddit"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;notes=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="del.icio.us"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;source=Mike%26%23039%3Bs+Place+Inarticulate+ramblings+on+whatever+strikes+my+fancy&amp;summary=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="LinkedIn"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;annotation=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Google Bookmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;t=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Facebook"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;bodytext=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Digg"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="StumbleUpon"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="DZone"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Fark"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blog.gurski.org/index.php/feed/" title="RSS"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Slashdot"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="Technorati"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;t=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;s=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Tumblr"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;body=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="email"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F" title="FriendFeed"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Live"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://ping.fm/ref/?link=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;body=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Ping.fm"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="blogmarks"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogmarks.png" title="blogmarks" alt="blogmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.blogospherenews.com/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Blogosphere News"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/blogospherenews.png" title="Blogosphere News" alt="Blogosphere News" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://current.com/clipper.htm?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Current"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/current.png" title="Current" alt="Current" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Diggita"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://globalgrind.com/submission/submit.aspx?url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;type=Article&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Global Grind"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/globalgrind.png" title="Global Grind" alt="Global Grind" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;t=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="HackerNews"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://reporter.nl.msn.com/?fn=contribute&amp;Title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;URL=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;cat_id=6&amp;tag_id=31&amp;Remark=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="MSN Reporter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/msnreporter.png" title="MSN Reporter" alt="MSN Reporter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;t=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="MySpace"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://posterous.com/share?linkto=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;selection=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt" title="Posterous"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://socialogs.com/add_story.php?story_url=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;story_title=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Socialogs"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/socialogs.png" title="Socialogs" alt="Socialogs" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home/?status=tip%20@Techmeme%20http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F%20Automatic%20Monitoring%20with%20Puppet%20and%20Nagios" title="Suggest to Techmeme via Twitter"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/techmeme.png" title="Suggest to Techmeme via Twitter" alt="Suggest to Techmeme via Twitter" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fblog.gurski.org%2Findex.php%2F2010%2F01%2F28%2Fautomatic-monitoring-with-puppet-and-nagios%2F&amp;submitHeadline=Automatic%20Monitoring%20with%20Puppet%20and%20Nagios&amp;submitSummary=Part%20of%20my%20current%20push%20at%20work%20right%20now%20is%20trying%20to%20get%20some%20sort%20of%20configuration%20management%20system%20in%20place%2C%20and%20in%20a%20usable%20state.%20%20Part%20of%20the%20reason%20for%20wanting%20to%20do%20this%20is%20consistency%20of%20common%20configuration%20among%20the%20many%20systems%20and%20virt&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://blog.gurski.org/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a></li>
</ul>
</div>
<img src="http://blog.gurski.org/?ak_action=api_record_view&id=41&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.gurski.org/index.php/2010/01/28/automatic-monitoring-with-puppet-and-nagios/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

