<?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>Kartar.Net</title>
	<atom:link href="http://www.kartar.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kartar.net</link>
	<description>the truth about a man lies in what he hides</description>
	<lastBuildDate>Wed, 03 Aug 2011 14:00:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Bunraku V0.0.3</title>
		<link>http://www.kartar.net/2011/08/bunraku-v0-0-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bunraku-v0-0-3</link>
		<comments>http://www.kartar.net/2011/08/bunraku-v0-0-3/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 14:00:09 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[bunraku]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://www.kartar.net/?p=4057</guid>
		<description><![CDATA[I introduced Bunraku earlier in the week. It was a bit POC and messy in places so I took some time to clean it up tonight and release v0.0.3. The major changes are: - Added /node/detail/node_id screen that shows details from the specific run (linked as a click-thru from the specific run on main pages [...]]]></description>
			<content:encoded><![CDATA[<p>I introduced <a href="http://www.kartar.net/2011/08/bunraku-a-puppet-status-panel/" title="Bunraku – A Puppet Status Panel">Bunraku</a> earlier in the week. It was a bit POC and messy in places so I took some time to clean it up tonight and <a href="https://github.com/jamtur01/bunraku/tree/v0.0.3" title="Bunraku v0.0.3">release v0.0.3</a>.  The major changes are:</p>
<p>- Added /node/detail/node_id screen that shows details from the specific run (linked as a click-thru from the specific run on main pages (see picture).</p>
<div id="attachment_4058" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.kartar.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-02-at-11.28.28-PM.png"><img src="http://www.kartar.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-02-at-11.28.28-PM-300x199.png" alt="Bunraku Detail page" title="Bunraku Detail page" width="300" height="199" class="size-medium wp-image-4058" /></a><p class="wp-caption-text"><a href="http://www.kartar.net/tag/bunraku/" class="st_tag internal_tag" rel="tag" title="Posts tagged with bunraku">Bunraku</a> Detail page</p></div>
<p>- Added /node/node.example.com screen that shows all runs from that node<br />
- Now uses <a href="http://www.kartar.net/tag/redis/" class="st_tag internal_tag" rel="tag" title="Posts tagged with redis">Redis</a> hashes instead of storing JSON<br />
- The overall code has been refactored and cleaned up in a lot of places<br />
- The report processor is much cleaned up and simpler to understand</p>
<p>The unfortunate piece is that to upgrade you&#8217;ll need to flush your existing Redis data (I promise I won&#8217;t do this to you again &#8230; the refactor to make this a lot better involved me slapping my head at my previously stupid approach) and start again.</p>
<p>As always hope it&#8217;s useful to someone and patches and input welcomed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/08/bunraku-v0-0-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bunraku &#8211; A Puppet Status Panel</title>
		<link>http://www.kartar.net/2011/08/bunraku-a-puppet-status-panel/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bunraku-a-puppet-status-panel</link>
		<comments>http://www.kartar.net/2011/08/bunraku-a-puppet-status-panel/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 13:00:03 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[sinatra]]></category>

		<guid isPermaLink="false">http://www.kartar.net/?p=4043</guid>
		<description><![CDATA[Since I started playing with it I&#8217;ve been a big fan of Sinatra. I&#8217;ve built a couple of small applications with it &#8211; mostly just prototypes or tools to solve internal problems and been throughly impressed by how easy it is to produce simple apps and to extend those apps with helpers and templates. The [...]]]></description>
			<content:encoded><![CDATA[<p>Since I started playing with it I&#8217;ve been a big fan of <a href="http://www.sinatrarb.com/intro" title="Sinatra" target="_blank">Sinatra</a>.  I&#8217;ve built a couple of small applications with it &#8211; mostly just prototypes or tools to solve internal problems and been throughly impressed by how easy it is to produce simple apps and to extend those apps with helpers and templates.  The only downside is the reminder of the fact that I am lousy with designing HTML/CSS. <img src='http://www.kartar.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>One of the recent prototypes I&#8217;ve built is a very simple <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> status panel.  It uses a <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> report processor to post the time, name of the host and status of <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> runs to a <a href="http://www.kartar.net/tag/sinatra/" class="st_tag internal_tag" rel="tag" title="Posts tagged with sinatra">Sinatra</a> app with a <a href="http://redis.io/" title="Redis" target="_blank">Redis</a> back-end.  I&#8217;ve called it <a href="https://github.com/jamtur01/bunraku" title="Bunraku" target="_blank">Bunraku</a> (the word refers to a form of traditional Japanese puppetry). You can query successful (changed), unchanged and failed <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a>. It refreshes every 5 seconds and displays a maximum of 100 previous runs (all other data is stored in <a href="http://www.kartar.net/tag/redis/" class="st_tag internal_tag" rel="tag" title="Posts tagged with redis">Redis</a> but not displayed).</p>
<div id="attachment_4054" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.kartar.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-01-at-9.48.17-AM.png"><img src="http://www.kartar.net/wp-content/uploads/2011/08/Screen-Shot-2011-08-01-at-9.48.17-AM-300x139.png" alt="Bunraku screenshot" title="Bunraku screenshot" width="300" height="139" class="size-medium wp-image-4054" /></a><p class="wp-caption-text"><a href="http://www.kartar.net/tag/bunraku/" class="st_tag internal_tag" rel="tag" title="Posts tagged with bunraku">Bunraku</a> screenshot</p></div>
<p>I hope it proves a useful example for someone and improvements and patches most welcome to it.  I have some ideas on how to extend it beyond the very MVP v0.0.1 prototype it is now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/08/bunraku-a-puppet-status-panel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Puppet and DataDog</title>
		<link>http://www.kartar.net/2011/06/puppet-and-datadog/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-and-datadog</link>
		<comments>http://www.kartar.net/2011/06/puppet-and-datadog/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 13:00:40 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[datadog]]></category>
		<category><![CDATA[reports]]></category>

		<guid isPermaLink="false">http://www.kartar.net/?p=4034</guid>
		<description><![CDATA[Some of you may have seen the awesome new metrics, graphing and event platform from DataDog. It&#8217;s currently in beta and well worth a look. I saw it at Velocity two weeks ago and knew I had to write an integration with Puppet. So here &#8217;tis! I&#8217;ve added a Puppet report processor that sends metrics [...]]]></description>
			<content:encoded><![CDATA[<p>Some of you may have seen the awesome new metrics, graphing and event platform from <a href="http://www.datadoghq.com/">DataDog</a>. It&#8217;s currently in beta and well worth a look.  I saw it at Velocity two weeks ago and knew I had to write an integration with <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a>.  So here &#8217;tis!  <a href="https://github.com/jamtur01/puppet-datadog">I&#8217;ve added a Puppet report processor that sends metrics and events to the DataDog API</a>.</p>
<p>To use it install the `dogapi` gem on your Puppet master</p>
<pre lang=bash>
$ sudo gem install dogapi
</pre>
<p>Then install puppet-<a href="http://www.kartar.net/tag/datadog/" class="st_tag internal_tag" rel="tag" title="Posts tagged with datadog">datadog</a> as a module in your Puppet master&#8217;s modulepath and update the `<a href="http://www.kartar.net/tag/datadog/" class="st_tag internal_tag" rel="tag" title="Posts tagged with datadog">datadog</a>_api_key` variable in the `<a href="http://www.kartar.net/tag/datadog/" class="st_tag internal_tag" rel="tag" title="Posts tagged with datadog">datadog</a>.yaml` file with  your <a href="http://www.kartar.net/tag/datadog/" class="st_tag internal_tag" rel="tag" title="Posts tagged with datadog">Datadog</a> API key and copy the file to `/etc/puppet/`. </p>
<p>Enable pluginsync and <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a> on your master and clients in `puppet.conf`</p>
<pre lang=ini>
        [master]
        report = true
        reports = datadog
        pluginsync = true
        [agent]
        report = true
        pluginsync = true
</pre>
<p>Finally run the Puppet client and sync the report as a plugin.</p>
<p>P.S.  Also available is a <a href="https://github.com/jamtur01/puppet-datadog-agent">DataDog Puppet module to install the Datadog agent</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/puppet-and-datadog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet Zendesk</title>
		<link>http://www.kartar.net/2011/06/puppet-zendes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-zendes</link>
		<comments>http://www.kartar.net/2011/06/puppet-zendes/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 13:00:57 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[zendesk]]></category>

		<guid isPermaLink="false">http://www.kartar.net/2011/06/puppet-zendes/</guid>
		<description><![CDATA[In the vein of last week&#8217;s report processors I&#8217;ve got another one. The Puppet Zendesk report processor. Puppet Zendesk creates a ticket in your Zendesk help desk for a failed Puppet run with the name of the host that failed and the date. All log output for your Puppet run is also passed to Zendesk [...]]]></description>
			<content:encoded><![CDATA[<p>In the vein of last week&#8217;s report processors I&#8217;ve got another one.  The <a href="https://github.com/jamtur01/puppet-zendesk">Puppet Zendesk report processor</a>. <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> <a href="http://www.kartar.net/tag/zendesk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with zendesk">Zendesk</a> creates a ticket in your <a href="http://www.zendesk.com/">Zendesk help desk</a> for a failed Puppet run with the name of the host that failed and the date. All log output for your Puppet run is also passed to Zendesk and added to the ticket.</p>
<p>The Zendesk report processor is easy to install:</p>
<p>1.  Install the `httparty` and `json` gems on your Puppet master</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> httparty json</pre></div></div>

<p>2.  Install puppet-zendesk as a module in your Puppet master&#8217;s module path.</p>
<p>3.  Update the zendesk_site, zendesk_user and zendesk_password variables in the zendesk.yaml file. The user you specify will become the author of any <a href="http://www.kartar.net/tag/tickets/" class="st_tag internal_tag" rel="tag" title="Posts tagged with tickets">tickets</a> created the report processor. Copy the file to /etc/puppet/. An example file is included.</p>
<p>4.  Enable pluginsync and <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a> on your master and clients in `puppet.conf`</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>master<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">reports</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> zendesk</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>agent<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span></pre></div></div>

<p>5.  Run the Puppet client and sync the report as a plugin</p>
<p>Now when Puppet runs fail then a Zendesk ticket will be created with the output of the failed run as the description of the ticket.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/puppet-zendes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Redmine Ticket Face</title>
		<link>http://www.kartar.net/2011/06/redmine-ticket-face/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=redmine-ticket-face</link>
		<comments>http://www.kartar.net/2011/06/redmine-ticket-face/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 13:00:28 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[faces]]></category>
		<category><![CDATA[tickets]]></category>

		<guid isPermaLink="false">http://www.kartar.net/2011/06/redmine-ticket-face/</guid>
		<description><![CDATA[Last week in a flurry of Puppet development I had an idea for another Puppet sub-command, this one designed to allow you to log Puppet trouble tickets via the command line. It&#8217;s not hugely practical &#8211; you can query and create Redmine tickets &#8211; but I thought the example might prove useful to someone. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Last week in a flurry of <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> development I had an idea for another <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> sub-command, this one designed to allow you to log <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> trouble <a href="http://www.kartar.net/tag/tickets/" class="st_tag internal_tag" rel="tag" title="Posts tagged with tickets">tickets</a> via the command line. It&#8217;s not hugely practical &#8211; you can query and create <a href="http://www.kartar.net/tag/redmine/" class="st_tag internal_tag" rel="tag" title="Posts tagged with redmine">Redmine</a> <a href="http://www.kartar.net/tag/tickets/" class="st_tag internal_tag" rel="tag" title="Posts tagged with tickets">tickets</a> &#8211; but I thought the example might prove useful to someone.  It&#8217;s called <a href="https://github.com/jamtur01/puppet-ticket-face">Puppet-Ticket-Face</a>.</p>
<p>Currently Puppet <a href="http://www.kartar.net/tag/faces/" class="st_tag internal_tag" rel="tag" title="Posts tagged with faces">Faces</a> are only supported in Puppet 2.7.0 and later (2.7.0 is currently an RC but will hopefully be out soon!) and distributing them requires placing them into Puppet&#8217;s load path.  They&#8217;ll shortly be distributable as <a href="http://docs.puppetlabs.com/guides/plugins_in_modules.html">Puppet modules using pluginsync</a>. </p>
<p>So to install the GitHub face for now clone the git repository:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span>:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>jamtur01<span style="color: #000000; font-weight: bold;">/</span>puppet-ticket-face.git</pre></div></div>

<p>Copy the relevant files into your Puppet master&#8217;s path (for example on Debian/Ubuntu into a source-based install).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-R</span> lib<span style="color: #000000; font-weight: bold;">/</span>puppet<span style="color: #000000; font-weight: bold;">/*</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>site_ruby<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>puppet</pre></div></div>

<p>You can then see if the GitHub Face is installed like so:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ puppet <span style="color: #7a0874; font-weight: bold;">help</span></pre></div></div>

<p>You should see the GitHub face listed in the available Puppet commands and you can now use it to query or create tickets.  For example to list a ticket specify its ticket number:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ puppet ticket list <span style="color: #660033;">--ticket</span> <span style="color: #000000;">1234</span></pre></div></div>

<p>To create a ticket specify the <code>create</code> directive and the <code>--token</code> flag with your Redmine user API token (you can see it <a href="http://projects.puppetlabs.com/my/account">here</a>).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ puppet ticket create <span style="color: #660033;">--token</span> 123456789ABC</pre></div></div>

<p>Hope someone finds this useful!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/redmine-ticket-face/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet HipChat &amp; Twilio</title>
		<link>http://www.kartar.net/2011/06/puppet-hipchat/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-hipchat</link>
		<comments>http://www.kartar.net/2011/06/puppet-hipchat/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 13:00:18 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[hipchat]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[twilio]]></category>

		<guid isPermaLink="false">http://www.kartar.net/2011/06/puppet-hipchat/</guid>
		<description><![CDATA[For our second weekend bonus &#8211; two final report processors, the first Puppet HipChat and the second Puppet Twilio. Puppet HipChat Puppet HipChat  is a report processor that notifies a HipChat room of a failed Puppet run with the name of the host that failed and the date. It requires the hipchat gem to be [...]]]></description>
			<content:encoded><![CDATA[<p>For our second weekend bonus &#8211; two final report processors, the first <a href="https://github.com/jamtur01/puppet-hipchat">Puppet HipChat</a> and the second <a href="https://github.com/jamtur01/puppet-twilio">Puppet Twilio</a>.</p>
<h3><a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> <a href="http://www.kartar.net/tag/hipchat/" class="st_tag internal_tag" rel="tag" title="Posts tagged with hipchat">HipChat</a></h3>
<p>Puppet HipChat  is a report processor that notifies a <a href="https://www.hipchat.com/home">HipChat</a> room of a failed Puppet run with the name of the host that failed and the date.</p>
<p>It requires the <span style="font-family: monospace;">hipchat</span> gem to be installed on your Puppet master:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> hipchat</pre></div></div>

<p>You can then install puppet-hipcat as a module in your Puppet master&#8217;s modulepath. Create a <a href="https://www.hipchat.com/groups/api">HipChat API key</a> with a type of Admin.  Record the API key that is generated. Next, update the `hipchat_api` and `hipchat_room` variables in the `hipchat.yaml` file with your HipChat connection details and the room you wish to notify.  Then copy the file to `/etc/puppet/`. An option to notify users in the room `hipchat_notify` defaults to `false`. An example file is included.</p>
<p>Now enable pluginsync and <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a> on your master and clients in <code>puppet.conf</code> including specifying the <span style="font-family: monospace;">hipchat</span> report processor.</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>master<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">reports</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> hipchat</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>agent<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span></pre></div></div>

<p>Finally, run the Puppet client and sync the report as a plugin and your failed Puppet runs will be now be sent to the requested HipChat room.</p>
<h3>Puppet <a href="http://www.kartar.net/tag/twilio/" class="st_tag internal_tag" rel="tag" title="Posts tagged with twilio">Twilio</a></h3>
<p>The <a href="https://github.com/jamtur01/puppet-twilio">Puppet Twilio report processor</a> sends an SMS using <a href="https://www.twilio.com">Twilio</a> notifying of failed Puppet runs with the name of the host that failed and the date. It&#8217;s easy to install and configure.</p>
<p>1.  Install the `twiliolib` gem on your Puppet master</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> twiliolib</pre></div></div>

<p>2.  Install puppet-twilio as a module in your Puppet master&#8217;s module path.</p>
<p>3.  Update the `sid`, `token`, `to` (the number you want to send to), `from` (one of your Twilio numbers) variables in the file `twilio.yaml` and copy the file to `/etc/puppet/`.</p>
<p>4.  Enable pluginsync and reports on your master and clients in `puppet.conf`</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>master<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">reports</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> twilio</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>agent<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span></pre></div></div>

<p>5.  Run the Puppet client and sync the report as a plugin</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/puppet-hipchat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet Growl</title>
		<link>http://www.kartar.net/2011/06/puppet-growl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-growl</link>
		<comments>http://www.kartar.net/2011/06/puppet-growl/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 13:00:25 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[reports]]></category>

		<guid isPermaLink="false">http://www.kartar.net/2011/06/puppet-growl/</guid>
		<description><![CDATA[Today&#8217;s report processor is Puppet Growl which sends failed reports as Growl notifications to a Growl server.  Firstly, install the `ruby-growl` gem on your Puppet master: $ sudo gem install ruby-growl Then install puppet-growl as a module in your Puppet master&#8217;s module path. Update the `growl_server` variables in the `growl.yaml` file with the IP address [...]]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s report processor is<br />
<h3><a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> <a href="http://www.kartar.net/tag/growl/" class="st_tag internal_tag" rel="tag" title="Posts tagged with growl">Growl</a></h3>
<p> which sends failed <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a> as Growl notifications to a Growl server.  Firstly, install the `<a href="http://www.kartar.net/tag/ruby/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Ruby">ruby</a>-growl` gem on your Puppet master:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> ruby-growl</pre></div></div>

<p>Then install puppet-growl as a module in your Puppet master&#8217;s module path. Update the `growl_server` variables in the `growl.yaml` file with the IP address of the host to receive the Growl notification and copy the file to `/etc/puppet/`. An example file is included.</p>
<p>On your Growl host enable the &#8220;Listen for incoming connections&#8221; and &#8220;Allow remote application registration&#8221; options in your Growl    configuration.  Ensure UDP port 9887 is open on the host and on any firewalls in between the Puppet master and the host.</p>
<p>Lastly, enable pluginsync and reports on your master and clients in `puppet.conf`:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>master<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">reports</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> growl</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>agent<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span></pre></div></div>

<p>And run the Puppet client and sync the report as a plugin.  Your Puppet master should now send Growl notifications to your target host whenever a Puppet run fails.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/puppet-growl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet Jabber/XMPP</title>
		<link>http://www.kartar.net/2011/06/puppet-xmpp/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-xmpp</link>
		<comments>http://www.kartar.net/2011/06/puppet-xmpp/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 13:00:43 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.kartar.net/2011/06/puppet-xmpp/</guid>
		<description><![CDATA[More in our week of report processors: a Jabber/XMPP report processor. Puppet XMPP is a report processor that notifies a Jabber/XMPP user of a failed Puppet run with the name of the host that failed and the date. It requires the xmpp4r gem to be installed on your Puppet master: $ sudo gem install xmpp4r You [...]]]></description>
			<content:encoded><![CDATA[<p>More in our week of report processors: <a href="https://github.com/jamtur01/puppet-xmpp">a Jabber/XMPP report processor</a>. <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> <a href="http://www.kartar.net/tag/xmpp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with xmpp">XMPP</a> is a report processor that notifies a <a href="http://www.kartar.net/tag/jabber/" class="st_tag internal_tag" rel="tag" title="Posts tagged with jabber">Jabber</a>/XMPP user of a failed Puppet run with the name of the host that failed and the date.</p>
<p>It requires the <code>xmpp4r</code> gem to be installed on your Puppet master:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> xmpp4r</pre></div></div>

<p>You can then install <a href="https://github.com/jamtur01/puppet-xmpp">puppet-xmpp</a> as a module in your Puppet master&#8217;s modulepath. Update the `xmpp_jid`, `xmpp_passowrd`, and `xmpp_target` variables in the `xmpp.yaml` file and copy it to `/etc/puppet`. An example file is included in the repository.</p>
<p>Now enable pluginsync and <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a> on your master and clients in <code>puppet.conf</code> including specifying the <code>xmpp</code> report processor.</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>master<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">reports</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> xmpp</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>agent<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span></pre></div></div>

<p>Finally, run the Puppet client and sync the report as a plugin and your failed Puppet runs will be now be sent to the requested Jabber/XMPP user.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/puppet-xmpp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Puppet PagerDuty</title>
		<link>http://www.kartar.net/2011/06/puppet-pagerduty/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-pagerduty</link>
		<comments>http://www.kartar.net/2011/06/puppet-pagerduty/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 13:00:18 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[pagerduty]]></category>
		<category><![CDATA[reports]]></category>

		<guid isPermaLink="false">http://www.kartar.net/2011/06/puppet-pagerduty/</guid>
		<description><![CDATA[Continuing in our &#8216;week &#8216;o report processors&#8217; is a Puppet PagerDuty report processor. Puppet PagerDuty sends an alert to the highly cool PagerDuty service notifying of failed Puppet runs with the name of the host that failed and the date. All log entries for your Puppet run are also passed to PagerDuty as part of [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing in our &#8216;week &#8216;o report processors&#8217; is a <a href="https://github.com/jamtur01/puppet-pagerduty">Puppet PagerDuty report processor</a>. <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> <a href="http://www.kartar.net/tag/pagerduty/" class="st_tag internal_tag" rel="tag" title="Posts tagged with pagerduty">PagerDuty</a> sends an alert to the highly cool <a href="http://www.pagerduty.com">PagerDuty</a> service notifying of failed Puppet runs with the name of the host that failed and the date. All log entries for your Puppet run are also passed to PagerDuty as part of the API call.</p>
<p>The PagerDuty report processor is easy to install:</p>
<p>1.  Install the `rest-client` and `json` gems on your Puppet master</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rest-client json</pre></div></div>

<p>2.  Install puppet-pagerduty as a module in your Puppet master&#8217;s module path.</p>
<p>3.  Update the `pagerduty_api` variable in a file called `/etc/puppet/pagerduty.yaml` file with the PagerDuty API key for your Puppet service. An example file is included.  You will also need to create a Puppet specific service that uses the Generic API in PagerDuty. </p>
<p>4.  Enable pluginsync and <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a> on your master and clients in `puppet.conf`</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>master<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">reports</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> pagerduty</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>agent<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span></pre></div></div>

<p>5.  Run the Puppet client and sync the report as a plugin</p>
<p>And you&#8217;re off with Puppet and PagerDuty integration!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/puppet-pagerduty/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Puppet Twitter</title>
		<link>http://www.kartar.net/2011/06/puppet-twitter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-twitter</link>
		<comments>http://www.kartar.net/2011/06/puppet-twitter/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 13:00:24 +0000</pubDate>
		<dc:creator>kartar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[reports]]></category>

		<guid isPermaLink="false">http://www.kartar.net/?p=3946</guid>
		<description><![CDATA[So on with our week of Puppet report processors. We started the week with the Puppet Campfire and Puppet IRC processors. Today I am doing a somewhat more complex (and potentially not very practical &#8230; ) report processor that sends notifications of failed runs to Twitter. It requires a bit more setup than the other [...]]]></description>
			<content:encoded><![CDATA[<p>So on with our week of <a href="http://www.kartar.net/tag/puppet/" class="st_tag internal_tag" rel="tag" title="Posts tagged with puppet">Puppet</a> report processors. We started the week with the <a href="http://www.kartar.net/2011/05/puppet-campfire/">Puppet Campfire</a> and <a href="http://www.kartar.net/2011/05/puppet-irc/">Puppet IRC</a> processors.  Today I am doing a somewhat more complex (and potentially not very practical &#8230; <img src='http://www.kartar.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) <a href="https://github.com/jamtur01/puppet-twitter">report processor that sends notifications of failed runs to Twitter</a>.  It requires a bit more setup than the other processors starting with the <a href="http://www.kartar.net/tag/twitter-2/" class="st_tag internal_tag" rel="tag" title="Posts tagged with twitter">Twitter</a> and OAuth gems.</p>
<p>1. Install the oauth and twitter gems on your Puppet master</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> oauth twitter</pre></div></div>

<p>2. Create a new Twitter app <a href="http://twitter.com/apps/new">here</a>. For Application Type specify Client and for Default Access Type specify Read &#038; Write. Make a note of the consumer key and consumer secret. You&#8217;re going to need them in Step 3.</p>
<p>3. Run the poauth.rb script (you&#8217;ll find it in the repository) and provide the consumer key and secret from the Twitter application you created in Step 2. Go to the URL provided by the script and authorise the Twitter user you wish to tweet your <a href="http://www.kartar.net/tag/reports/" class="st_tag internal_tag" rel="tag" title="Posts tagged with reports">reports</a> with to use this application. You will be provided with a PIN number. Paste it into the script where you are prompted. This will create a file called twitter.yaml in your current directory:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ ruby poauth.rb
Set up your application at https:<span style="color: #000000; font-weight: bold;">//</span>twitter.com<span style="color: #000000; font-weight: bold;">/</span>apps<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">as</span> a <span style="color: #ff0000;">'Client'</span> app<span style="color: #7a0874; font-weight: bold;">&#41;</span>,
<span style="color: #000000; font-weight: bold;">then</span> enter your <span style="color: #ff0000;">'Consumer key'</span> and <span style="color: #ff0000;">'Consumer secret'</span>:
&nbsp;
Consumer key:
d26cebWimPohUXxXFBMl0Q
Consumer secret:
ZI4E5QDt15iplUn3QTJyLATNO6deMwCLeZOHN3WPd0g
Visit http:<span style="color: #000000; font-weight: bold;">//</span>api.twitter.com<span style="color: #000000; font-weight: bold;">//</span>oauth<span style="color: #000000; font-weight: bold;">/</span>authorize?<span style="color: #007800;">oauth_token</span>=sd4HGcFSpK7vI <span style="color: #000000; font-weight: bold;">in</span> your browser to authorize the app,
<span style="color: #000000; font-weight: bold;">then</span> enter the PIN you are given:
<span style="color: #000000;">3300514</span></pre></div></div>

<p>4.  Copy the twitter.yaml file you created in Step 3. into your /etc/puppet/ directory.</p>
<p>5.  Install puppet-twitter as a module in your Puppet master&#8217;s module path.</p>
<p>6.  Enable pluginsync and reports on your master and clients in puppet.conf</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>master<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">reports</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> twitter</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>agent<span style="">&#93;</span></span>
<span style="color: #000099;">report</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span>
<span style="color: #000099;">pluginsync</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> true</span></pre></div></div>

<p>7. Run the Puppet client and sync the report as a plugin</p>
<p>And bingo your Puppet server will tweet when Puppet runs fail!  Of course this may annoy a lot of the free world so YMMV on the usefulness of this.  You could also tweak the code pretty simply to send you and others DMs, for example by editing:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Twitter.<span style="color:#9900CC;">update</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Puppet run for #{self.host} #{self.status}&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>to:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Twitter.<span style="color:#9900CC;">direct_message_create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;user_to_receive_DM&quot;</span>, <span style="color:#996600;">&quot;Puppet run for #{self.host} #{self.status}&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.kartar.net/2011/06/puppet-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
