<?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>CerealKillers</title>
	<atom:link href="http://cerealkillers.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://cerealkillers.co.uk</link>
	<description>A big &#039;ol pile of nerdiness</description>
	<lastBuildDate>Sun, 22 Apr 2012 16:56:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Puppet: The Good, The Bad, And The Config – Part 3</title>
		<link>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-the-good-the-bad-and-the-config-part-3</link>
		<comments>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-3/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 16:54:20 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=260</guid>
		<description><![CDATA[In the previous post the basic setup of puppet on both the server and client was described, but, because I&#8217;d rather not use their built in server (scalability issues) it&#8217;s still left to install Passenger on Apache to handle the &#8230; <a href="http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2012/04/puppet_logo.png" alt="Puppet" title="puppet_logo" width="64" height="64" class="alignleft size-full wp-image-149" />In the <a href="http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-2/">previous post</a> the basic setup of puppet on both the server and client was described, but, because I&#8217;d rather not use their built in server (scalability issues) it&#8217;s still left to install Passenger on Apache to handle the server side of things.  Details are below&#8230;</p>
<h4>Passenger Repo and Installs</h4>
<p>The Puppet docs suggest you use rubygem to install Passenger.  Personally I prefer if everything goes in with yum to keep it all handled by one package manager.  Since Passenger isn&#8217;t in any of the usual repos, add <a href="http://passenger.stealthymonkeys.com/">this one</a> then install the necessary bits and pieces.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum <span style="color: #c20cb9; font-weight: bold;">install</span> httpd mod_ssl mod_passenger rubygem-rake rubygem-rack ruby-rdoc</pre></div></div>

<h4>The httpd/rack Config</h4>
<p>First, set up a DocumentRoot for the Ruby/Rack bits and copy the config into it.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>puppet<span style="color: #000000; font-weight: bold;">/</span>rack<span style="color: #000000; font-weight: bold;">/</span>public <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>puppet<span style="color: #000000; font-weight: bold;">/</span>rack<span style="color: #000000; font-weight: bold;">/</span>tmp
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>puppet<span style="color: #000000; font-weight: bold;">/</span>ext<span style="color: #000000; font-weight: bold;">/</span>rack<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>config.ru <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>puppet<span style="color: #000000; font-weight: bold;">/</span>rack<span style="color: #000000; font-weight: bold;">/</span>.</pre></div></div>

<p>Create an httpd configuration for the puppetmaster.  It uses mod_passenger to run the Puppet server through the more scalable Apache backend.  If your network is very large, you may need to run more than one and reverse proxy them, but I&#8217;ll leave that for you to Google for if needed.  Otherwise, it&#8217;ll look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">PassengerHighPerformance <span style="color: #0000ff;">on</span>
PassengerMaxPoolSize <span style="color: #ff0000;">15</span>
PassengerPoolIdleTime <span style="color: #ff0000;">300</span>
PassengerStatThrottleRate <span style="color: #ff0000;">120</span>
PassengerUseGlobalQueue <span style="color: #0000ff;">on</span>
&nbsp;
<span style="color: #00007f;">Listen</span> <span style="color: #ff0000;">8140</span>
&nbsp;
&lt;<span style="color: #000000; font-weight:bold;">VirtualHost</span> *:<span style="color: #ff0000;">8140</span>&gt;
        <span style="color: #00007f;">SSLEngine</span> <span style="color: #0000ff;">on</span>
        <span style="color: #00007f;">SSLProtocol</span> -<span style="color: #0000ff;">ALL</span> +SSLv3 +TLSv1
        <span style="color: #00007f;">SSLCipherSuite</span> <span style="color: #0000ff;">ALL</span>:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
&nbsp;
        <span style="color: #00007f;">SSLCertificateFile</span>      /var/lib/puppet/ssl/certs/puppet1.DOMAIN.pem
        <span style="color: #00007f;">SSLCertificateKeyFile</span>   /var/lib/puppet/ssl/private_keys/puppet1.DOMAIN.pem
        <span style="color: #00007f;">SSLCertificateChainFile</span> /var/lib/puppet/ssl/ca/ca_crt.pem
        <span style="color: #00007f;">SSLCACertificateFile</span>    /var/lib/puppet/ssl/ca/ca_crt.pem
        <span style="color: #00007f;">SSLCARevocationFile</span>     /var/lib/puppet/ssl/ca/ca_crl.pem
        <span style="color: #00007f;">SSLVerifyClient</span> optional
        <span style="color: #00007f;">SSLVerifyDepth</span>  <span style="color: #ff0000;">1</span>
        <span style="color: #00007f;">SSLOptions</span> +StdEnvVars
&nbsp;
        <span style="color: #00007f;">RequestHeader</span> set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        <span style="color: #00007f;">RequestHeader</span> set X-Client-DN %{SSL_CLIENT_S_DN}e
        <span style="color: #00007f;">RequestHeader</span> set X-Client-Verify %{SSL_CLIENT_VERIFY}e
&nbsp;
        <span style="color: #00007f;">DocumentRoot</span> /etc/puppet/rack/public/
        RackBaseURI /
        &lt;<span style="color: #000000; font-weight:bold;">Directory</span> /etc/puppet/rack/&gt;
                <span style="color: #00007f;">Options</span> <span style="color: #0000ff;">None</span>
                <span style="color: #00007f;">AllowOverride</span> <span style="color: #0000ff;">None</span>
                <span style="color: #00007f;">Order</span> <span style="color: #00007f;">allow</span>,<span style="color: #00007f;">deny</span>
                <span style="color: #00007f;">allow</span> from <span style="color: #0000ff;">all</span>
        &lt;/<span style="color: #000000; font-weight:bold;">Directory</span>&gt;
&lt;/<span style="color: #000000; font-weight:bold;">VirtualHost</span>&gt;</pre></div></div>

<p>Once that&#8217;s all in place, start httpd and make sure it starts at boot:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>httpd start
chkconfig httpd on</pre></div></div>

<h4>A Test Run</h4>
<p>Now that we&#8217;ve got a working Puppet server, we should be able to test it from the client.  Run the following as root:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">puppet agent <span style="color: #660033;">--test</span></pre></div></div>

<p>This should do a run, but because our default node setup is empty, won&#8217;t actually do anything.</p>
<h4>Next Steps</h4>
<p>I know this was a short one, but the next bit is setting up Dashboard, which is a bit more involved.  Once that&#8217;s done, finally we can get to actually using Puppet for what it&#8217;s intended: managing hosts&#8217; state.</p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet: The Good, The Bad, And The Config – Part 2</title>
		<link>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-the-good-the-bad-and-the-config-part-2</link>
		<comments>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-2/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 10:00:28 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=200</guid>
		<description><![CDATA[In the previous post we went over some wordy basics of Puppet along with some quick tips. In this post we&#8217;ll actually get to the install. Worth note, I use RHEL (well, a clone: Scientific Linux) but I&#8217;m confident that &#8230; <a href="http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2012/04/puppet_logo.png" alt="Puppet" title="puppet_logo" width="64" height="64" class="alignleft size-full wp-image-149" />In the <a href="http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-1/">previous post</a> we went over some wordy basics of Puppet along with some quick tips.  In this post we&#8217;ll actually get to the install.</p>
<p><em>Worth note, I use RHEL (well, a clone: <a href="http://scientificlinux.org/">Scientific Linux</a>) but I&#8217;m confident that the RH specific bits are easy to translate to another distro, it&#8217;s the config that&#8217;s more important.</em></p>
<h4>Yum Repos</h4>
<p>Add the puppet repos to both client and server (I do this in the kickstart of the machines).  The official repos are <a href="http://yum.puppetlabs.com">here</a>.  I chose <a href="http://yum.puppetlabs.com/el/6/products/x86_64/">http://yum.puppetlabs.com/el/6/products/x86_64/</a> and <a href="http://yum.puppetlabs.com/el/6/dependencies/x86_64/">http://yum.puppetlabs.com/el/6/dependencies/x86_64/</a> because I&#8217;m on RHEL6.  I believe you&#8217;ll also need <a href="http://fedoraproject.org/wiki/EPEL">EPEL</a> for some dependencies but I&#8217;m not totally sure of this since I had it anyway (if you&#8217;re running RHEL, you&#8217;ll almost certainly want it).</p>
<h4>Yum Install</h3>
<p>Install puppet on both the clients and on the master (your master should be one of the clients, it needs to stay in line just as much if not more than every other client).  There&#8217;s no need to install puppet-server because we&#8217;re not going to use their server, we&#8217;re going to use Apache/Passenger.</p>
<p>Both clients and server:</p>

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

<h4>Config</h4>
<p>Puppet config is in <em>/etc/puppet/puppet.conf</em>.  My config looks like this both on master and client (substitute DOMAIN for your domain, also, my server host is called puppet1, if yours is different, substitute that too):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>main<span style="color: #7a0874; font-weight: bold;">&#93;</span>
    <span style="color: #666666; font-style: italic;"># The Puppet log directory.</span>
    <span style="color: #666666; font-style: italic;"># The default value is '$vardir/log'.</span>
    logdir = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>puppet
&nbsp;
    <span style="color: #666666; font-style: italic;"># Where Puppet PID files are kept.</span>
    <span style="color: #666666; font-style: italic;"># The default value is '$vardir/run'.</span>
    rundir = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>puppet
&nbsp;
    <span style="color: #666666; font-style: italic;"># Where SSL certificates are kept.</span>
    <span style="color: #666666; font-style: italic;"># The default value is '$confdir/ssl'.</span>
    ssldir = <span style="color: #007800;">$vardir</span><span style="color: #000000; font-weight: bold;">/</span>ssl
&nbsp;
    moduledir = <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>puppet<span style="color: #000000; font-weight: bold;">/</span>modules
    server = puppet1.DOMAIN
    pluginsync = <span style="color: #c20cb9; font-weight: bold;">true</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>agent<span style="color: #7a0874; font-weight: bold;">&#93;</span>
    <span style="color: #666666; font-style: italic;"># The file in which puppetd stores a list of the classes</span>
    <span style="color: #666666; font-style: italic;"># associated with the retrieved configuratiion.  Can be loaded in</span>
    <span style="color: #666666; font-style: italic;"># the separate ``puppet`` executable using the ``--loadclasses``</span>
    <span style="color: #666666; font-style: italic;"># option.</span>
    <span style="color: #666666; font-style: italic;"># The default value is '$confdir/classes.txt'.</span>
    classfile = <span style="color: #007800;">$vardir</span><span style="color: #000000; font-weight: bold;">/</span>classes.txt
&nbsp;
    <span style="color: #666666; font-style: italic;"># Where puppetd caches the local configuration.  An</span>
    <span style="color: #666666; font-style: italic;"># extension indicating the cache format is added automatically.</span>
    <span style="color: #666666; font-style: italic;"># The default value is '$confdir/localconfig'.</span>
    localconfig = <span style="color: #007800;">$vardir</span><span style="color: #000000; font-weight: bold;">/</span>localconfig
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>master<span style="color: #7a0874; font-weight: bold;">&#93;</span>
    certname = puppet1.DOMAIN</pre></div></div>

<p>The changes to the default are the <em>moduledir</em>, <em>server</em>, <em>pluginsync</em> and <em>certname</em> parameters.  <em>moduledir</em> and <em>pluginsync</em> we&#8217;ll get to later, <em>server</em> is so clients know where to go, and <em>certname</em> clearly defines the name of the puppet master server for certificate generation.  I&#8217;ve had to use this because the server I&#8217;m using has a fairly random name and is CNAMEd to puppet1.  Had I not provided <em>certname</em>, it would have used the machine&#8217;s real hostname.</p>
<h4>Auto-signing</h4>
<p>We&#8217;ve gone with auto-signing of client certificates.  There are lots of reasons to be careful when doing this, explained <a href="http://docs.puppetlabs.com/guides/faq.html#why-shouldnt-i-use-autosign-for-all-my-clients">here</a> but after weighing the options, we&#8217;ve decided to go ahead with it, so on the master we&#8217;ve created <em>/etc/puppet/autosign.conf</em> which looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">*.DOMAIN</pre></div></div>

<h4>Basic Puppet Module Config</h4>
<p>On the master, create <em>/etc/puppet/manifests/site.pp</em> with the following content:</p>

<div class="wp_syntax"><div class="code"><pre class="puppet" style="font-family:monospace;"><span style="color:#ff6633; font-weight:bold;">$puppetserver</span> = <span style="color:#996600;">'puppet1.DOMAIN'</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">node</span> default <span style="color:#006600; font-weight:bold;">&#123;</span>
<span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<h4>Certificate Generation</h4>
<p>Run the following command on the puppet master to generate the server-side certificates.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> puppet master <span style="color: #660033;">--no-daemonize</span> <span style="color: #660033;">--verbose</span></pre></div></div>

<p>Once it&#8217;s done with the initial generation and has started the server, kill it with Ctrl-C.</p>
<h4>Next Steps</h4>
<p>Now, I know no client runs have actually been done yet; that&#8217;s in <a href="http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-3/">Part 3</a>, where Apache/Passenger will be set up as the server so as not to use Puppet&#8217;s built in WEBrick (it doesn&#8217;t scale).</p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dotsies &#8211; A New Way To Read</title>
		<link>http://cerealkillers.co.uk/2012/dotsies-a-new-way-to-read/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dotsies-a-new-way-to-read</link>
		<comments>http://cerealkillers.co.uk/2012/dotsies-a-new-way-to-read/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 21:36:59 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=169</guid>
		<description><![CDATA[This is just a fantastic way to waste half an hour. Go to http://dotsies.org/about/ and have a read. If you&#8217;re into typography or crypto (it&#8217;s not crypto, but it&#8217;s obscure enough that no-one&#8217;ll be able to read it) then I&#8217;d &#8230; <a href="http://cerealkillers.co.uk/2012/dotsies-a-new-way-to-read/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2012/04/dotsies_logo.png" alt="" title="dotsies_logo" width="64" height="64" class="alignleft size-full wp-image-170" />This is just a <b>fantastic</b> way to waste half an hour.</p>
<p>Go to <a href="http://dotsies.org/about/">http://dotsies.org/about/</a> and have a read.  If you&#8217;re into typography or crypto (it&#8217;s not crypto, but it&#8217;s obscure enough that no-one&#8217;ll be able to read it) then I&#8217;d expect you to like this.</p>
<p>On their <a href="http://dotsies.org/">main page</a> they use a really interesting method to help you learn the font by gradually removing the normal letters until you&#8217;re reading it unaided at the bottom of the page.</p>
<p>There&#8217;s a bookmarklet that lets you convert any page you&#8217;re reading to dotsies, but personally, I find it hard to read simply because the font is too small.  A couple of hits of Ctrl-+ though and it&#8217;s fine.</p>
<p>Nerd fun <img src='http://cerealkillers.co.uk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2012/dotsies-a-new-way-to-read/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet: The Good, The Bad, And The Config &#8211; Part 1</title>
		<link>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=puppet-the-good-the-bad-and-the-config-1</link>
		<comments>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-1/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 21:05:46 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=146</guid>
		<description><![CDATA[I work for a large visual effects company and manage a decent sized network of machines (a few hundred Linux, Mac and Windows workstations, a few hundred headless render nodes and tens of servers). A configuration management system is obviously &#8230; <a href="http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-149" title="Puppet" src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2012/04/puppet_logo.png" alt="Puppet Logo" width="64" height="64" />I work for a large visual effects company and manage a decent sized network of machines (a few hundred Linux, Mac and Windows workstations, a few hundred headless render nodes and tens of servers).  A configuration management system is obviously crucial and I&#8217;d been using cfengine2.</p>
<p>Recently several friends at other facilities had started singing the praises of <a href="http://puppetlabs.com/" title="Puppet Labs">Puppet</a> and since I was reviewing our cfengine install anyway, I took a look.  First impressions were not good.  Puppet seems to leak (<a href="http://blog.alarmschaben.de/2011/11/30/squeeze-puppet-and-the-ruby-memory-leak/">two</a> <a href="http://projects.puppetlabs.com/issues/1395">links</a>) and their own website tells you not to use their built-in webserver for more than 10 machines (<a href="http://docs.puppetlabs.com/guides/scaling.html">link</a>) which seems a bit crazy since you&#8217;ve got to figure that the majority of people looking for a system like this will have more than that.</p>
<p>Now you can stump for <a href="http://puppetlabs.com/puppet/puppet-enterprise/">Puppet Enterprise</a> where they apparently wrap it all up and make it easy for you along with packaging the nice web-UI bits.  If you&#8217;ve got the budget, great, we went with the do-it-yourself option.</p>
<p>All that said, the syntax and concepts are really nice and its failings seem easy to work around, so I figured we should try setting it up and having a go.  Here are some tips:
<ul>
<li>Use the <a href="http://yum.puppetlabs.com/">Puppet repos</a> rather than those supplied with your distro.  They&#8217;re the official, supported repos and will be up-to-date.</li>
<li>Go straight for Passenger setups backed by Apache.  Why set yourself up for failure by using the server they tell you won&#8217;t scale? (<a href="http://www.masterzen.fr/2012/01/08/benchmarking-puppet-stacks/">benchmarks</a>)</li>
<li>Install <a href="http://puppetlabs.com/puppet/related-projects/dashboard/">Puppet Dashboard</a> &#8211; It&#8217;s a faff to get it working, but worth it.  Again, this is where Puppet just doesn&#8217;t feel very polished, it really shouldn&#8217;t be this hard to set up but I guess this is how they&#8217;ve decided to convince people to pay for Enterprise.</li>
<li>Get a copy of <a href="http://www.apress.com/9781430230571">Pro Puppet</a>.  Although there are lots of docs on their site and all over the web, this seems to be <strong>the</strong> howto guide.  Written by one of the Puppet Labs guys, it&#8217;s helped a lot.</li>
<li>Have a read of some posts <a href="http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control">about</a> <a href="http://nuknad.com/2011/02/11/self-classifying-puppet-nodes/">different</a> <a href="http://www.semicomplete.com/blog/geekery/puppet-nodeless-configuration.html">configurations</a> and work out how best to represent your facility&#8217;s nodes</li>
</ul>
<p>In the <a href="http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-part-2/">next post</a>, I&#8217;ll start putting the specifics of how we set the various components up along with how we mixed and matched the ideas in the posts linked above to best work for us.</p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2012/puppet-the-good-the-bad-and-the-config-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedding Tweets</title>
		<link>http://cerealkillers.co.uk/2011/embedding-tweets/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=embedding-tweets</link>
		<comments>http://cerealkillers.co.uk/2011/embedding-tweets/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 12:33:49 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=96</guid>
		<description><![CDATA[Twitter&#8217;s update comes with a handy new feature: embedding tweets, and even better, with shortcodes, but it does come with a fairly big caveat. From the docs: WordPress.com and WordPress VIP blogs have this functionality immediately, and Jetpack users will &#8230; <a href="http://cerealkillers.co.uk/2011/embedding-tweets/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2011/12/twitter_logo.png" alt="" title="Twitter" class="alignleft size-full wp-image-118" />Twitter&#8217;s update comes with a handy new feature: embedding tweets, and even better, with shortcodes, but it does come with a fairly big caveat. From the <a href="https://dev.twitter.com/blog/tweets-and-buttons">docs</a>:</p>
<div style="clear: both;"></div>
<blockquote><p>WordPress.com and WordPress VIP blogs have this functionality immediately, and Jetpack users will get it with their next update</p></blockquote>
<p>So we&#8217;ve gotta go back to using full HTML code. Here&#8217;s an example:</p>
<blockquote class="twitter-tweet"><p>Twitter have enabled support for embedding tweets.Handy&#8230; <a href="http://t.co/t2zjwuqN" title="https://dev.twitter.com/blog/tweets-and-buttons">dev.twitter.com/blog/tweets-an…</a></p>
<p>&mdash; cerealkillers (@cerealkillers) <a href="https://twitter.com/cerealkillers/status/146571451753971714" data-datetime="2011-12-13T12:45:31+00:00">December 13, 2011</a></p></blockquote>
<p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>The code for which looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p&gt;Twitter have enabled support for embedding tweets.Handy... &lt;a href=&quot;http://t.co/t2zjwuqN&quot; title=&quot;https://dev.twitter.com/blog/tweets-and-buttons&quot;&gt;dev.twitter.com/blog/tweets-an…&lt;/a&gt;&lt;/p&gt;&amp;mdash; cerealkillers (@cerealkillers) &lt;a href=&quot;https://twitter.com/cerealkillers/status/146571451753971714&quot; data-datetime=&quot;2011-12-13T12:45:31+00:00&quot;&gt;December 13, 2011&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;</pre></div></div>

<p>Hopefully shortcode support won&#8217;t be too far behind in a normal WordPress installation, but for now, just follow the instructions in the docs and you&#8217;ll be all set.</p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2011/embedding-tweets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASync Shell Commands from Tornado</title>
		<link>http://cerealkillers.co.uk/2011/async-shell-commands-from-tornado/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=async-shell-commands-from-tornado</link>
		<comments>http://cerealkillers.co.uk/2011/async-shell-commands-from-tornado/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 16:34:52 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tornado]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=83</guid>
		<description><![CDATA[I&#8217;ve been using Tornado at work for a bunch of web interface stuff and found I needed to call shell commands that might block for a while.  To avoid blocking Tornado itself, I looked around the web for a while trying &#8230; <a href="http://cerealkillers.co.uk/2011/async-shell-commands-from-tornado/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2011/11/tornado-big.png" alt="" title="Tornado Web Server" class="alignleft size-full wp-image-116" />I&#8217;ve been using <a title="Tornado" href="http://www.tornadoweb.org">Tornado</a> at work for a bunch of web interface stuff and found I needed to call shell commands that might block for a while.  To avoid blocking Tornado itself, I looked around the web for a while trying to find a nice way of going about it.  I found this:</p>
<p><a href="https://gist.github.com/489093">https://gist.github.com/489093</a> &#8211; by Philip Plante</p>
<p>which worked but meant lots of replicated code in every handler.  I&#8217;ve also modified the example to use Tornado&#8217;s newer <a title="Tornado Gen" href="http://www.tornadoweb.org/documentation/gen.html">gen</a> way of doing things.</p>
<p>I&#8217;ve put my version here: <a href="https://gist.github.com/1370533">https://gist.github.com/1370533</a> and is embedded below:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># Adapted from here: https://gist.github.com/489093</span>
<span style="color: #808080; font-style: italic;"># Original credit goes to pplante and copyright notice pasted below</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Copyright (c) 2010, Philip Plante of EndlessPaths.com</span>
<span style="color: #808080; font-style: italic;"># </span>
<span style="color: #808080; font-style: italic;"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span style="color: #808080; font-style: italic;"># of this software and associated documentation files (the &quot;Software&quot;), to deal</span>
<span style="color: #808080; font-style: italic;"># in the Software without restriction, including without limitation the rights</span>
<span style="color: #808080; font-style: italic;"># to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span>
<span style="color: #808080; font-style: italic;"># copies of the Software, and to permit persons to whom the Software is</span>
<span style="color: #808080; font-style: italic;"># furnished to do so, subject to the following conditions:</span>
<span style="color: #808080; font-style: italic;"># </span>
<span style="color: #808080; font-style: italic;"># The above copyright notice and this permission notice shall be included in</span>
<span style="color: #808080; font-style: italic;"># all copies or substantial portions of the Software.</span>
<span style="color: #808080; font-style: italic;"># </span>
<span style="color: #808080; font-style: italic;"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span style="color: #808080; font-style: italic;"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span style="color: #808080; font-style: italic;"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span style="color: #808080; font-style: italic;"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span style="color: #808080; font-style: italic;"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span>
<span style="color: #808080; font-style: italic;"># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span>
<span style="color: #808080; font-style: italic;"># THE SOFTWARE.</span>
&nbsp;
&nbsp;
<span style="color: #808080; font-style: italic;"># Modifications Copyright (c) 2011, Stephen Willey of cerealkillers.co.uk</span>
<span style="color: #808080; font-style: italic;"># License remains as above</span>
<span style="color: #808080; font-style: italic;"># Modifications allow it to be included once in multiple handlers.  Save it</span>
<span style="color: #808080; font-style: italic;"># as async_process.py and put it in the path somewhere.  Use it like this:</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># from handlers.base import BaseHandler</span>
<span style="color: #808080; font-style: italic;"># </span>
<span style="color: #808080; font-style: italic;"># import tornado.web</span>
<span style="color: #808080; font-style: italic;"># from tornado import gen</span>
<span style="color: #808080; font-style: italic;"># from async_process import call_subprocess, on_subprocess_result</span>
<span style="color: #808080; font-style: italic;"># </span>
<span style="color: #808080; font-style: italic;"># class ShellHandler(BaseHandler):</span>
<span style="color: #808080; font-style: italic;">#     @tornado.web.asynchronous</span>
<span style="color: #808080; font-style: italic;">#     @gen.engine</span>
<span style="color: #808080; font-style: italic;">#     def get(self):</span>
<span style="color: #808080; font-style: italic;">#         self.write(&quot;Before sleep&lt;br /&gt;&quot;)</span>
<span style="color: #808080; font-style: italic;">#         self.flush()</span>
<span style="color: #808080; font-style: italic;">#         response = yield gen.Task(call_subprocess, self, &quot;ls /&quot;)</span>
<span style="color: #808080; font-style: italic;">#         self.write(&quot;Output is:\n%s&quot; % (response.read(),))</span>
<span style="color: #808080; font-style: italic;">#         self.finish()</span>
<span style="color: #808080; font-style: italic;">#</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">logging</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">shlex</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">subprocess</span>
<span style="color: #ff7700;font-weight:bold;">import</span> tornado
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> call_subprocess<span style="color: black;">&#40;</span>context, command, callback=<span style="color: #008000;">None</span><span style="color: black;">&#41;</span>:
    context.<span style="color: black;">ioloop</span> = tornado.<span style="color: black;">ioloop</span>.<span style="color: black;">IOLoop</span>.<span style="color: black;">instance</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    context.<span style="color: black;">pipe</span> = p = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">shlex</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span>command<span style="color: black;">&#41;</span>, stdin=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span>, stderr=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">STDOUT</span>, close_fds=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
    context.<span style="color: black;">ioloop</span>.<span style="color: black;">add_handler</span><span style="color: black;">&#40;</span>p.<span style="color: black;">stdout</span>.<span style="color: black;">fileno</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, context.<span style="color: black;">async_callback</span><span style="color: black;">&#40;</span>on_subprocess_result, context, callback<span style="color: black;">&#41;</span>, context.<span style="color: black;">ioloop</span>.<span style="color: black;">READ</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> on_subprocess_result<span style="color: black;">&#40;</span>context, callback, fd, result<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">try</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> callback:
            callback<span style="color: black;">&#40;</span>context.<span style="color: black;">pipe</span>.<span style="color: black;">stdout</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">Exception</span>, e:
        <span style="color: #dc143c;">logging</span>.<span style="color: black;">error</span><span style="color: black;">&#40;</span>e<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">finally</span>:
        context.<span style="color: black;">ioloop</span>.<span style="color: black;">remove_handler</span><span style="color: black;">&#40;</span>fd<span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2011/async-shell-commands-from-tornado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing Your Mail</title>
		<link>http://cerealkillers.co.uk/2011/managing-your-mail/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=managing-your-mail</link>
		<comments>http://cerealkillers.co.uk/2011/managing-your-mail/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 17:01:34 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gtd]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=67</guid>
		<description><![CDATA[The video below is admittedly old (Oct 2007) and has done the rounds before but I only saw it recently and it&#8217;s made a massive difference to the way I work. I find myself devoting less time to e-mail but &#8230; <a href="http://cerealkillers.co.uk/2011/managing-your-mail/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2011/10/img_1234.jpg" alt="" title="Inbox Zero" class="alignleft size-full wp-image-120" />The video below is admittedly old (Oct 2007) and has done the rounds before but I only saw it recently and it&#8217;s made a massive difference to the way I work. I find myself devoting less time to e-mail but getting more done. It&#8217;s also a big morale boost to see an empty Inbox folder <img src='http://cerealkillers.co.uk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>There&#8217;s a site dedicated to the practise as well (<a title="Inbox Zero" href="http://inboxzero.com/">Inbox Zero</a>) although a few of the links there are dead.</p>
<p>I know the video&#8217;s long, but trust me on this one. Watch it.</p>
<p><iframe width="450" height="338" src="http://www.youtube.com/embed/z9UjeTMb3Yk?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2011/managing-your-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Child Themes</title>
		<link>http://cerealkillers.co.uk/2011/wordpress-child-themes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-child-themes</link>
		<comments>http://cerealkillers.co.uk/2011/wordpress-child-themes/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 12:40:53 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=56</guid>
		<description><![CDATA[The site you&#8217;re looking at is styled with a child theme. WordPress introduced child themes in version 2.7 and they&#8217;re great. It means that you can cleanly modify an existing theme, and if the original writer publishes an update, your &#8230; <a href="http://cerealkillers.co.uk/2011/wordpress-child-themes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2011/10/wordpress_logo.png" alt="" title="Wordpress" class="alignleft size-full wp-image-122" />The site you&#8217;re looking at is styled with a child theme. WordPress introduced child themes in version 2.7 and they&#8217;re great. It means that you can cleanly modify an existing theme, and if the original writer publishes an update, your changes will simply be applied on top of theirs. The CSS file for the theme I&#8217;m using now looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/*
Theme Name: Ari Cerealkillers Child Theme
Description: Minor modifications to Ari
Author: Stephen Willey
Author URI: http://cerealkillers.co.uk/about
Version: 0.1
Template: ari
*/</span>
&nbsp;
<span style="color: #a1a100;">@import url(&quot;../ari/style.css&quot;);</span>
&nbsp;
ul<span style="color: #6666ff;">.really_simple_twitter_widget</span> li <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">padding-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">dotted</span> <span style="color: #cc00cc;">#CCCCCC</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
ul<span style="color: #6666ff;">.really_simple_twitter_widget</span> li<span style="color: #3333ff;">:last-of-type </span><span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">padding-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin-bottom</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.widget_sociallinks</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">100px</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
ul<span style="color: #6666ff;">.sidebar</span> li<span style="color: #6666ff;">.widget_sociallinks</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span> <span style="color: #00AA00;">&#125;</span>
&nbsp;
ul<span style="color: #6666ff;">.sidebar</span> li<span style="color: #6666ff;">.widget_sociallinks</span> a<span style="color: #6666ff;">.lfp</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">images/lfp-icon.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.wp_syntax</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span> !important<span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>You can see that all I&#8217;ve done is add some styling to the &#8216;Latest Tweets&#8217; widget on the right, and set a fixed width for the social links on the left (it helps them appear in a nice grid on mobile devices). If <a title="elmastudio" href="http://www.elmastudio.de/">elmastudio</a> (whose themes are fantastic) publish a change, I can just update through the admin interface and all should be well.</p>
<p>Child themes. Use &#8216;em. They&#8217;re great. Find more info on the codex <a title="child themes" href="http://codex.wordpress.org/Child_Themes">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2011/wordpress-child-themes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Next Solution Looking For A Problem&#8230;</title>
		<link>http://cerealkillers.co.uk/2011/the-next-solution-looking-for-a-problem/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-next-solution-looking-for-a-problem</link>
		<comments>http://cerealkillers.co.uk/2011/the-next-solution-looking-for-a-problem/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 21:45:46 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=50</guid>
		<description><![CDATA[Cloudera Hadoop Apparently the cool kids (Google) have moved on from MapReduce now, but hey, worth a look.]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2011/10/hadoop.png" alt="" title="Hadoop" class="alignleft size-full wp-image-126" /><a title="Cloudera" href="http://www.cloudera.com/">Cloudera</a> <a title="Hadoop" href="http://hadoop.apache.org/">Hadoop</a><br />
Apparently the cool kids (Google) have moved on from MapReduce now, but hey, worth a look.</p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2011/the-next-solution-looking-for-a-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AD Integration on Linux</title>
		<link>http://cerealkillers.co.uk/2011/ad-integration-on-linux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ad-integration-on-linux</link>
		<comments>http://cerealkillers.co.uk/2011/ad-integration-on-linux/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 10:23:42 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[ad]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://cerealkillers.co.uk/?p=16</guid>
		<description><![CDATA[Having trawled through seemingly hundreds of howtos and tutorials, nothing seemed to work properly for me. I’m pretty sure I’ve got a very minimal and easy setup running now so I hope it’s of use to someone else. Click AD &#8230; <a href="http://cerealkillers.co.uk/2011/ad-integration-on-linux/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://cerealkillers.co.uk/wordpress/wp-content/uploads/2011/08/logo-tux.jpg" alt="" title="Tux" width="64" height="64" class="alignleft size-full wp-image-128" /><del datetime="2011-08-23T10:24:28+00:00">Having trawled through seemingly hundreds of howtos and tutorials, nothing seemed to work properly for me. I’m pretty sure I’ve got a very minimal and easy setup running now so I hope it’s of use to someone else.</del></p>
<p><del datetime="2011-08-23T10:29:34+00:00">Click <a title="AD Integration" href="http://esstec.co.uk/wiki/AD_Integration">AD Authentication on Linux</a> to see the wiki page</del></p>
<p>Forget all that. Just install a newer distribution and use sssd. I&#8217;ve done this successfully on Scientific Linux 6 and Fedora 13. Follow the instructions <a title="SSSD Config" href="https://fedorahosted.org/sssd/wiki/Configuring%20sssd%20to%20authenticate%20with%20a%20Windows%202008%20Domain%20Server">here</a>. The only change I made was:</p>
<p><code>chpass_provider = krb5</code></p>
<p>I still use the instructions <a title="Apache Kerberos Instructions" href="http://blog.scottlowe.org/2006/08/10/kerberos-based-sso-with-apache/">here</a> to set up Kerberos for Apache.</p>
]]></content:encoded>
			<wfw:commentRss>http://cerealkillers.co.uk/2011/ad-integration-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.650 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-04-23 11:24:27 -->

