<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Chris Read &#187; Unix</title>
	<atom:link href="http://blog.chris-read.net/category/unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chris-read.net</link>
	<description>He's just this guy, you know...</description>
	<lastBuildDate>Tue, 13 Sep 2011 11:41:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.chris-read.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Chris Read &#187; Unix</title>
		<link>http://blog.chris-read.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.chris-read.net/osd.xml" title="Chris Read" />
	<atom:link rel='hub' href='http://blog.chris-read.net/?pushpress=hub'/>
		<item>
		<title>£106.50 per Terabyte Storage Server</title>
		<link>http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/</link>
		<comments>http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 21:43:45 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Stuff]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://blog.chris-read.net/?p=176</guid>
		<description><![CDATA[With the price of storage dropping all the time, there is a constant perception from people who don&#8217;t deal with it every day that &#8220;disk space is cheap&#8221;, especially when it comes to developers. The problem is that so called &#8220;Enterprise&#8221; storage costs are still astronomical compared to what people are used to paying for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=176&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1><span class="Apple-style-span" style="font-size:13px;font-weight:normal;">With the price of storage dropping all the time, there is a constant perception from people who don&#8217;t deal with it every day that &#8220;disk space is cheap&#8221;, especially when it comes to developers. The problem is that so called &#8220;Enterprise&#8221; storage costs are still astronomical compared to what people are used to paying for home storage &#8211; even when using SATA disks.</span></h1>
<p>A lot of this extra cost comes from a perceived requirement for the highest available <strong>capacity</strong>, <strong>availability</strong> and <strong>performance</strong>. Achieving all three characteristics is expensive, but if you’re willing to sacrifice one of them then costs start to fall considerably. Lowering requirements on two of the three drops it even more.</p>
<p>One of the teams I work with has a requirement primarily on capacity. Performance and availability are nice, but capacity is the key. We generate gigabytes worth of log files every day, but didn&#8217;t have one place to store it all for easy analysis. Just before I joined the team they&#8217;d purchased the cheapest &#8220;Enterprise&#8221; storage system the IT team at the time would allow &#8211; it ended up costing in the region of £12k for 12TB of raw storage. That’s £1000 per TB!</p>
<p>In addition to the price, the other problems were accessibility and management of the data and managing growth. This inspired a hunt for something that would provide a cheaper and more flexible solution.</p>
<p>Our requirements were:</p>
<ul>
<li><strong>*nix based system. </strong>The current storage solution was based on Windows Storage Server, but all our systems and tools for this team are Linux based. Yes, Windows does technically provide things like an NFS server, but fighting with the file system permissions and overall performance are two things that impacted us.</li>
<li><strong>Cheap to expand.</strong> We need to have a clear path to grow the storage in the server easily by simply adding more disks.</li>
<li><strong>Large filesystems.</strong> There&#8217;s nothing more wasteful from a storage point of view than having lots of small filesystems. Besides the management overhead, there&#8217;s also many wasted blocks lying around un-used.</li>
<li><strong>Cheap to build</strong>. This inevitably means commodity hardware.</li>
<li><strong>Reasonable availability</strong>. We don&#8217;t need 99.999% uptime, but would be happy with somewhere in the region of 90%+</li>
<li><strong>Reasonable performance</strong>.<strong> </strong>Primary access to the data on this machine is via gigabit Ethernet. As long as it can keep up with the network card we’re happy…</li>
</ul>
<h2><span id="more-176"></span>Hardware Options</h2>
<p>The first thing we looked at was the <a href="http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/">Backblaze</a> concept. Using a custom designed case (that&#8217;s actually quite easy to purchase) they manage to cram 45 SATA drives into a 4U chassis. That&#8217;s pretty impressive. Using cheap SATA hot swap port multiplier/backplanes and controllers allows for quite a low cost, but not without problems though. In the configuration they publish there are a number of problems:</p>
<ul>
<li>A mix of PCIe and PCI-X SATA controllers means that you need a LOT of slots on your motherboard. Boards with all those slots are not cheap.</li>
<li>Each of the 45 drives is presented to the operating system (Linux in this case, which is good). They then use software RAID for the volumes. Care needs to be taken when building a system like this though to ensure that you spread the drives for each array evenly across controllers so that a single controller or expander backplane failure does not take out an entire volume, which just adds to the management overhead.</li>
<li>The port multiplier chipset they use is only supported on Linux. This was a problem as we had initially planned to use OpenSolaris for this device as ZFS would make the storage management and expansion a no-brainer. The Oracle take over of Sun and their subsequent clamp down on OpenSolaris derailed this plan. I did do some performance testing with FreeBSD and their implementation of ZFS but the performance was terrible.</li>
<li>The cost is also not that cheap. Single orders of the custom case and power supply that go with it are actually pretty pricy.</li>
<li>Performance. I did a lot of testing, mostly with iozone. What I found though was that when running through the port multiplier, even when using NCQ, performance was pretty bad.</li>
</ul>
<p>The system I was using for my testing though had an onboard SAS controller and port expander. The SAS specification includes SATA support. Out of curiosity I decided to compare performance on that controller to what I got from the SATA chain. It was actually a lot better, which got me thinking about using SAS controllers with hardware RAID to simplify administration.</p>
<p>Initially I tried a pair of 8 port LSI controllers (<a href="http://www.lsi.com/storage_home/products_home/internal_raid/megaraid_sas/megaraid_sas_8208elp/">LSI 8208ELP</a>), but the cheaper end of the range have issues in their firmware and do not even boot with more than one controller present, so I replaced them with a single <a href="http://www.adaptec.com/en-us/products/controllers/hardware/sas/performance/sas-51245/">Adaptec 51245</a> controller. This made management and expansion a lot easier, as it has enough internal ports for the initial drives we planned on, and an external port that allows easy expansion.</p>
<h2>Current architecture</h2>
<p>The current system we have running in production is assembled from 100% off the shelf components. They are:</p>
<table width="408" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">
<p align="center"><strong>Description</strong></p>
</td>
<td valign="bottom" nowrap="nowrap" width="129">
<p align="center"><strong>Part</strong></p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="center"><strong>Count</strong></p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="center"><strong>Each</strong></p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="center"><strong>Total</strong></p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">SAS Cables</td>
<td valign="bottom" nowrap="nowrap" width="129"></td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">4</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£9.40</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£37.60</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">Drive Cage</td>
<td valign="bottom" nowrap="nowrap" width="129">NetStor NS170S Black</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">2</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£90.10</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£180.20</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">RAID Controller</td>
<td valign="bottom" nowrap="nowrap" width="129">Adaptec 51245</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">1</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£512.89</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£512.89</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">Case &amp; 650W PSU</td>
<td valign="bottom" nowrap="nowrap" width="129">Antec 4U22EPS650</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">1</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£192.36</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£192.36</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">Motherboard</td>
<td valign="bottom" nowrap="nowrap" width="129">Intel DP55WG</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">1</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£96.84</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£96.84</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">CPU</td>
<td valign="bottom" nowrap="nowrap" width="129">Intel i7 860</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">1</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£178.71</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£178.71</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">RAM</td>
<td valign="bottom" nowrap="nowrap" width="129">Kingston 4G DDR3 1600</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">2</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£63.96</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£127.92</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">VGA</td>
<td valign="bottom" nowrap="nowrap" width="129">PNY 8400GS</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">1</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£37.85</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£37.85</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">Data Disks</td>
<td valign="bottom" nowrap="nowrap" width="129">WD20EARS</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">10</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£76.58</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£765.80</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">NIC</td>
<td valign="bottom" nowrap="nowrap" width="129">Intel PRO/1000</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">2</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£0.00</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£0.00</p>
</td>
</tr>
<tr>
<td valign="bottom" nowrap="nowrap" width="120">OS Disks</td>
<td valign="bottom" nowrap="nowrap" width="129">ST3160318AS</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">2</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£0.00</p>
</td>
<td valign="bottom" nowrap="nowrap" width="53">
<p align="right">£0.00</p>
</td>
</tr>
</tbody>
</table>
<p>Cost (September 2010): £2130.17 (Excl VAT)</p>
<p>Total Raw Space: 20TB</p>
<p>Unit Cost: £106.50 per TB</p>
<p>Power Draw: 0.8A with sustained disk access, 1.16A peak on boot up.</p>
<p>The operating system we’ve selected is Ubuntu 10.04 LTS. We run the smaller disks we had spare in RAID1 for the OS. The data drives are in RAID6 on the WD&#8217;s.</p>
<h2>Hardware Build</h2>
<p>Here are some photos we took as we built the system:</p>

<a href='http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/img_0041/' title='Boxed Internal Drive Cage'><img data-attachment-id='179' data-orig-size='4000,3000' data-liked='0'width="150" height="112" src="http://chrisread.files.wordpress.com/2011/06/img_0041.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="Boxed Internal Drive Cage" title="Boxed Internal Drive Cage" /></a>
<a href='http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/img_0043/' title='Rear of Drive Cage'><img data-attachment-id='180' data-orig-size='4000,3000' data-liked='0'width="150" height="112" src="http://chrisread.files.wordpress.com/2011/06/img_0043.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="Rear of Drive Cage" title="Rear of Drive Cage" /></a>
<a href='http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/img_0048/' title='Front View - Open'><img data-attachment-id='181' data-orig-size='4000,3000' data-liked='0'width="150" height="112" src="http://chrisread.files.wordpress.com/2011/06/img_0048.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="Front View - Open" title="Front View - Open" /></a>
<a href='http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/img_0062/' title='Motherboard'><img data-attachment-id='182' data-orig-size='4000,3000' data-liked='0'width="150" height="112" src="http://chrisread.files.wordpress.com/2011/06/img_0062.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="Motherboard" title="Motherboard" /></a>
<a href='http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/img_0060/' title='Data Drive'><img data-attachment-id='184' data-orig-size='4000,3000' data-liked='0'width="150" height="112" src="http://chrisread.files.wordpress.com/2011/06/img_0060.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="Data Drive" title="Data Drive" /></a>
<a href='http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/img_0071/' title='Ready to rack'><img data-attachment-id='185' data-orig-size='4000,3000' data-liked='0'width="150" height="112" src="http://chrisread.files.wordpress.com/2011/06/img_0071.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="Ready to rack" title="Ready to rack" /></a>

<p><span class="Apple-style-span" style="font-size:20px;font-weight:bold;">Operating System Configuration</span></p>
<p>Using the hardware RAID controller allows us to simplify the Operating System configuration. Instead of having a block device for each physical disk, the controller presents a single block device for each array.</p>
<p>The filesystem we&#8217;re using is EXT4, created with the following options:</p>
<pre>-m 1 -O dir_index,has_journal,extent,sparse_super</pre>
<p>To try and speed things up we also set the noatime flag when mounting the filesystem.</p>
<p>The Adaptec Storage Manager application is used to monitor the health of the disks and will email us in the case of a drive failure.</p>
<h2>Performance</h2>
<p>With the current configuration, the performance is in no way spectacular, but it’s more than good enough for our needs. Write speeds are quite slow peaking at around 90MB/s, reads are good peaking at around 750MB/s.</p>
<h2>Client Access and Usage</h2>
<p>We&#8217;re currently running a mixed workload on the system and so far have had no complaints or problems. Every night we rsync all of our log files from our production machines, which is currently about 300GB per day.</p>
<p>Some of the people who are interested in this data access it via HTTP. We run an Apache server on the box (with compression enabled of course) to allow people easy access to browse and download what they need. Developers also access the logs read-only via NFS, and have a directory mounted via NFS called &#8220;playpen&#8221; that they use as a scratch pad for any of their research that requires more disk space than the 300GB or so they have available in their development machines.</p>
<h2>Going Forward</h2>
<p>In the 6 months or so we’ve had the machine we’ve almost used all the disk space. On a clear disk you can seek forever. We’ve placed an order for 2 more disk trays (<a href="http://www.netstor.com.tw/_03/03_02.php?OTI=">NetStor NS330S-8026</a>). These trays have built in SAS port expanders and allow us to daisy chain up to 7 trays off our external port. We’ve also ordered different hard drives. Instead of using the green WD drives we’ve decided to go for a bit more speed and get 7200RPM Hitachi Ultrastar 7K3000 SATA drives. This does add a lot more to the cost, but the performance pay off is worth it for us for expected higher write speeds. Once they’re up and running I’ll publish some comparative benchmarks.</p>
<p>Costs for the upgrade (Feb 2011): £9699.00</p>
<p>Total Raw Space: 64TB</p>
<p>Unit Cost: £151.50 per TB</p>
<h2>Update (23 June 2011)</h2>
<p>Right now there is some kind of major compatibility problem between the Adaptec card and the NetStor JBOD. I&#8217;ve been wrestling for over a week now with vendor support and still not getting anywhere.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/176/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=176&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2011/06/02/106-50-per-terabyte-storage-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>

		<media:content url="http://chrisread.files.wordpress.com/2011/06/img_0041.jpg?w=150" medium="image">
			<media:title type="html">Boxed Internal Drive Cage</media:title>
		</media:content>

		<media:content url="http://chrisread.files.wordpress.com/2011/06/img_0043.jpg?w=150" medium="image">
			<media:title type="html">Rear of Drive Cage</media:title>
		</media:content>

		<media:content url="http://chrisread.files.wordpress.com/2011/06/img_0048.jpg?w=150" medium="image">
			<media:title type="html">Front View - Open</media:title>
		</media:content>

		<media:content url="http://chrisread.files.wordpress.com/2011/06/img_0062.jpg?w=150" medium="image">
			<media:title type="html">Motherboard</media:title>
		</media:content>

		<media:content url="http://chrisread.files.wordpress.com/2011/06/img_0060.jpg?w=150" medium="image">
			<media:title type="html">Data Drive</media:title>
		</media:content>

		<media:content url="http://chrisread.files.wordpress.com/2011/06/img_0071.jpg?w=150" medium="image">
			<media:title type="html">Ready to rack</media:title>
		</media:content>
	</item>
		<item>
		<title>DevOps: State of the Nation</title>
		<link>http://blog.chris-read.net/2010/12/04/devops-state-of-the-nation/</link>
		<comments>http://blog.chris-read.net/2010/12/04/devops-state-of-the-nation/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 14:15:26 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://blog.chris-read.net/?p=171</guid>
		<description><![CDATA[When I got back from DevOpsDays in Hamburg this year I felt the need to explain my journey to the &#8220;DevOps&#8221; world and my view on where it&#8217;s headed. I started writing a State of the Nation paper to lay it all out. A couple of weeks in I got a message from Matthias Marschall asking [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=171&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I got back from DevOpsDays in Hamburg this year I felt the need to explain my journey to the &#8220;DevOps&#8221; world and my view on where it&#8217;s headed. I started writing a State of the Nation paper to lay it all out. A couple of weeks in I got a message from Matthias Marschall asking if I&#8217;d like to do a guest post as part of their DevOps series. I agreed, and after a lot of effort (and help from a couple of great editors) you can now read it <a href="http://www.agileweboperations.com/devops-state-of-the-nation-by-chris-read" target="_blank">here</a>.</p>
<p>It&#8217;s by far the longest article I&#8217;ve ever written, and I was amazed at how ideas that had been floating around in my head for a while crystalized through the processes of writing them down. I found I got so passionate talking to people about what was in it that I&#8217;ve decided to make a talk out of it, the first iteration of which will be in Chicago on Tuesday (see previous post).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=171&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2010/12/04/devops-state-of-the-nation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick Chef Tip</title>
		<link>http://blog.chris-read.net/2010/08/11/quick-chef-tip/</link>
		<comments>http://blog.chris-read.net/2010/08/11/quick-chef-tip/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 11:38:02 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://blog.chris-read.net/?p=137</guid>
		<description><![CDATA[I&#8217;m busy wiring together a new server configuration environment using Windows Deployment Services (don&#8217;t ask), Cobbler and Chef. So far things seem to be going quite well, until I bumped in to the following error trying to get a new client to register with the Chef server: HTTP Request Returned 401 Unauthorized: Failed to authenticate! [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=137&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m busy wiring together a new server configuration environment using Windows Deployment Services (don&#8217;t ask), Cobbler and Chef. So far things seem to be going quite well, until I bumped in to the following error trying to get a new client to register with the Chef server:</p>
<pre>HTTP Request Returned 401 Unauthorized: Failed to authenticate!</pre>
<p>A quick sift through Google results didn&#8217;t get anything usable. A quick sniff of the packets going over the wire though showed that it was authenticating using a signed certificate. Normally when you sign HTTP requests like that you add some kind of timed expiry. Could the problem be clock related?</p>
<p>Sure enough, a quick check on the new client and the server showed that there was just over an hour time difference. Getting the time on the client and the server in sync got the client registered!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/137/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=137&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2010/08/11/quick-chef-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>Report back from DevOpsDays 2009</title>
		<link>http://blog.chris-read.net/2009/11/24/report-back-from-devopsdays-2009/</link>
		<comments>http://blog.chris-read.net/2009/11/24/report-back-from-devopsdays-2009/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 10:27:26 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[agile sysadmin]]></category>
		<category><![CDATA[Config Management]]></category>
		<category><![CDATA[talks]]></category>

		<guid isPermaLink="false">http://blog.chris-read.net/?p=100</guid>
		<description><![CDATA[A few months ago I got an email from Patrick Debois who I&#8217;d met at CITCON Europe asking if I&#8217;d be interested in speaking at the first conference aimed at System Administrators practising/interested in/sceptical about Agile. One of the key beliefs of those of us doing this already is that Agile practices are generally too [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=100&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few months ago I got an email from <a href="http://www.jedi.be/about/" target="_blank">Patrick Debois</a> who I&#8217;d met at <a href="http://www.citconf.com/" target="_blank">CITCON</a> Europe asking if I&#8217;d be interested in speaking at the first conference aimed at System Administrators practising/interested in/sceptical about Agile. One of the key beliefs of those of us doing this already is that Agile practices are generally too narrowly focussed in their implementation. At the moment it&#8217;s primarily the Development organization who drive its adoption, but to get the most benefit Development and Operations groups within an organization need to work together.</p>
<p>With this in mind it was decided to call the conference <a href="http://www.devopsdays.org/" target="_blank">DevOpsDays</a>. Videos of the talks will be online in the archives section soon, so I&#8217;ve decided to write down my thoughts about what went well and not so well &#8211; I am a fan of retrospectives.<br />
<span id="more-100"></span><br />
<strong>What Went Well</strong></p>
<p>The conference was in Ghent, a city in Belgium, and as expected had quite a heavy European contingent. It was not not exclusively so though, as <a href="http://reductivelabs.com/" target="_blank">Reductive Labs</a> and <a href="http://www.canonical.com/" target="_blank">Canonical</a> both sent representatives over from the USA, and one of the speakers is an Aussie who just happened to be back packing around Europe at the time. One of my first great learnings though was that there are about 10 of us in the greater London area who are doing this kind of thing (2 of them ex-TWers) so we&#8217;ve started meeting regularly and exchanging ideas.</p>
<p>As there was such a large concentration of us around London, we&#8217;ve decided to try and subvert one of the London Geek Nights as a DevOps night to try and spread the word to more Devs. I&#8217;ll probably make more noise about it here when we&#8217;ve got dates confirmed.</p>
<p>The next great thing I loved was the format. It was split up into talks in the morning, with Open Spaces in the afternoon, over 2 days. This format actually worked very well as many of the open space sessions were inspired by the talks. Another interesting mix was that there was an even split between talks on tools and talks on practices.</p>
<p>I also discovered some great tools! Here&#8217;s a brief list of ones I liked the most:</p>
<ul>
<li><a href="http://code.google.com/p/mcollective/" target="_blank">The Marionette Collective</a> &#8211; using a message bus to administer 100&#8242;s of servers using pub/sub topics. You&#8217;ve got to watch the video to appreciate the full awesomeness.</li>
<li><a href="http://auxesis.github.com/cucumber-nagios/" target="_blank">Cucumber-Nagios</a> &#8211; writing tests to monitor your system using Cucumber, and then formatting the results as a Nagios plugin so you can easily wire it in to your monitoring system.</li>
<li><a href="http://flapjack-project.com/" target="_blank">Flapjack</a> &#8211; another example of interesting use of a message bus. This time to parallelize the monitoring of 100&#8242;s of servers. I&#8217;m not sure I totally agree with the approach, but what really blew me away was they way they do graphing and reporting. It&#8217;s very impressive.</li>
<li><a href="http://collectd.org/" target="_blank">collectd</a> &#8211; collectd gathers statistics about the system it is running on and stores this information in RRD databases. One of the things I really like about this though is that there are plugins for it like <a href="http://support.hyperic.com/display/hypcomm/jcollectd" target="_blank">Jcollectd</a> which requires no code changes. Simply plug it into your classpath and it registers a JMX MBean that pumps data from your JVM to collectd (I think). I&#8217;ve not tried it in production yet though&#8230;</li>
</ul>
<p>Overall the conference was very well received, and I&#8217;m looking forward to next years instalment. There&#8217;s a lot of talk about doing a North American version&#8230;</p>
<p><strong>Not So Well<br />
</strong><br />
As we all know, the best bits about Away Days/Conferences are the talks in the hall between sessions. The problem with the program was that we barely had enough time for bio breaks between sessions, and everyone was quite burned out at the end of day two (not just because of the Belgian Beer). I think it&#8217;s a pretty easy thing to fix though and considering that it was the first conference of its type there&#8217;s bound to be some fine tuning required.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=100&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2009/11/24/report-back-from-devopsdays-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>EC2 AMI Creation Tips Part 2: Work with Images, not Volumes</title>
		<link>http://blog.chris-read.net/2009/04/08/ec2-ami-creation-tips-part2/</link>
		<comments>http://blog.chris-read.net/2009/04/08/ec2-ami-creation-tips-part2/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 17:53:14 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[ami]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[ec2]]></category>

		<guid isPermaLink="false">http://blog.chris-read.net/?p=64</guid>
		<description><![CDATA[It&#8217;s been a long time since my first post on EC2 AMI Creation Tips. At the time the primary images people were using were the RedHat based ones supplied by Amazon, but I was trying to do something Ubuntu based. Since then a whole host of other well prepared images are now available. I was [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=64&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long time since my first post on <a href="http://blog.chris-read.net/2007/11/19/ec2-ami-creation-tips/" target="_blank">EC2 AMI Creation Tips</a>. At the time the primary images people were using were the RedHat based ones supplied by Amazon, but I was trying to do something Ubuntu based. Since then a whole host of other well prepared images are now available. I was even lucky enough to be invited to create an AMI for Sun&#8217;s launch of OpenSolaris on EC2, but am not allowed to say much more about it&#8230;</p>
<p>Recently though I&#8217;ve been speaking to more and more people who are trying to take an existing AMI and customise it for their own use. They do this by booting the AMI they want to base theirs on, doing the customization, then bundling up that volume. Generally they do pretty well, but there are three common themes that crop up that often cause pain: transient runtime configuration being bundled up, the time (and to a lesser extent effort) it takes to bundle the new image in the first place and making further changes to the image down the line.</p>
<p>Thankfully there is a simple single solution to these three problems &#8211; bundle from an image, not a running volume, and keep that image (or a set of images) along with some nice helper scripts on an EBS volume. That&#8217;s the theory, but as always there&#8217;s something in the real world that stops it being easy. By default, only the owner of an image can download and unpack an image directly from S3 and the images are encrypted with the owners EC2 private key. For this process to work, you&#8217;ll need to at least bootstrap yourself initially by going through the well known and well documented process of bundling a running system. After that though it&#8217;s easy. Really. Promise&#8230;</p>
<p>Let&#8217;s have a closer look at the problems we&#8217;re trying to solve first though before I go into how we fix them.</p>
<h3>Transient Runtime Pollution</h3>
<p>The most frustrating of these is the udev system flagging the source machines MAC address for eth0 and so making their custom image unusable because the network interface does not come up. There are still distributions out there which try to be &#8220;helpful&#8221; by remembering which physical device, such as network card, maps to which logical device name, such as eth0. This is not in itself a bad thing. This is one feature I was crying for 10 years ago when I started using Linux on bigger iron. I would dread adding another network card to a server because I would normally end up having to re-label the external interfaces. The thing is though that you&#8217;re now creating an image that could be running anywhere and you don&#8217;t have physical or even console access to it.</p>
<p>Other examples of things that break are helper scripts. Because we&#8217;re now on an operating system image that is meant to be able to run anywhere, there are certain things you want to run only once the very first time the system boots. Once they&#8217;ve run the these scripts either create a lock file, clear their own executable bits or even delete themselves. If you&#8217;re trying to re-bundle and image you&#8217;ve already booted, you need to make sure you back out these changes.</p>
<p>Doing your customization in an image that has never actually been booted helps you keep all these things pristine.</p>
<h3>Time and Effort of Creation</h3>
<p>This one is actually quite straight forward. When you&#8217;re bundling a running volume, what happens under the hood is:</p>
<ol>
<li>A new sparse file for the image is created</li>
<li>A new filesystem is created on the new image file</li>
<li>This new filesystem is mounted somewhere</li>
<li>The contents of your running volume is copied into the new image file</li>
<li>The new filesystem is then unmounted</li>
<li>The image file is compressed and encrypted</li>
<li>The compressed and encrypted file is then split into chunks</li>
<li>Your manifest is created</li>
</ol>
<p>Some of these steps very I/O intensive. When you&#8217;re working with an image though, steps 1 to 5 don&#8217;t happen (well, steps 3 and 5 are needed for you to make changes) so you&#8217;ll be doing almost 50% less IO. This means that bundling a new image will take about half time. If you work with your image on an EBS volume it&#8217;ll be even faster as they have better performance characteristics than the standard instance stores.</p>
<p>Bundling and uploading images are not simple commands though. You need to specify things like your AWS access key and provide your EC2 encryption key. There&#8217;s options for which kernels and ramdisks to use. There&#8217;s lots of typing which means lots of room for human error. The way to get around this is to have small shell scripts with all these options in them. Now they are simple commands&#8230;</p>
<h3>Maintenance</h3>
<p>Once you&#8217;ve got your new AMI looking the way you want and doing the things you need, chances are that a few weeks after you&#8217;ve started using it you find that there&#8217;s a security fix or package update you&#8217;d like to apply. Often this ends up with people starting the whole process from scratch again. Boot up a new instance of the AMI you want to update, update it, type in all those commands and remember the options you used to bundle the volume and upload the new one. If you kept your scripts and image on an EBS you could simply attach it to a running instance and make the fixes there using the same scripts you used last time. Hows that for repeatability?</p>
<p>&#8220;So, just how do I work with an image then?&#8221; I hear you ask. Here&#8217;s a basic outline to get you started.</p>
<h3>1. Set up your environment</h3>
<p>These steps assume that you have the EC2 AMI and API tools installed locally, and that you&#8217;re running the commands on an EC2 instance. If you don&#8217;t have them, please look at <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=368&amp;categoryID=88" target="_blank">EC2 AMI Tools</a> and <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=351&amp;categoryID=88" target="_blank">EC2 API Tools</a>.</p>
<p>You also need some environment variables configured to make life easier:</p>
<p style="padding-left:30px;"><em>EC2_PRIVATE_KEY=/path/to/your/EC2/private/key<br />
EC2_CERT=/path/to/your/EC2/cert</em></p>
<h3>2. Create your EBS Volume</h3>
<p>The hardest thing will be working out how big you need to make it. Absolute worst case will be 20gb per image, but in reality 10gb should be plenty. Remember though that an EBS can only be mounted in the availability zone it is created in, so this command creates one in the same zone you are in.</p>
<p style="padding-left:30px;"><em>ec2-create-volume -s 10 -z `curl http://169.254.169.254/2008-09-01/meta-data/placement/availability-zone`</em></p>
<h3>3. Prepare the Volume</h3>
<p>First, attach the volume to a running EC2 instance. Make sure it&#8217;s at least the same type (i386 or x86_64) as the image you&#8217;re working on.</p>
<p style="padding-left:30px;"><em>ec2-attach-volume vol-&lt;your vol id&gt; -i `curl http://169.254.169.254/2008-09-01/meta-data/instance-id` -d /dev/sdp</em></p>
<p>An EBS volume is a raw bit bucket. You need to partition it (if you&#8217;re in to that kind of thing) and create the filesystem on it. Partitions don&#8217;t really make sense here though, so just create a nice shiny filesystem on it once it&#8217;s mounted on the instance.</p>
<p style="padding-left:30px;"><em>mke2fs -j /dev/sdp</em></p>
<p>In this instance I&#8217;m making an EXT3 filesystem, but you can use any filesystem that&#8217;s supported by the host machine. Please make sure though that the block device you specify (in this example <em>/dev/sdp</em>) matches what you told EC2 to mount your EBS volume on.</p>
<p style="padding-left:30px;"><em>mkdir /ebs</em></p>
<p style="padding-left:30px;"><em>mount /dev/sdp /ebs</em></p>
<p>This mounts your new filesystem on a directory called <em>/ebs</em></p>
<p style="padding-left:30px;"><em>mkdir /ebs/mnt</em></p>
<p style="padding-left:30px;"><em>mkdir /ebs/download</em></p>
<p style="padding-left:30px;"><em>mkdir /ebs/upload</em></p>
<p style="padding-left:30px;"><em>mkdir /ebs/.ec2</em></p>
<p>This creates some handy directories to help you along with the process. This is what they do:</p>
<ul>
<li><em>mnt</em>: Will be used as the mount point to access your image</li>
<li><em>download</em>: This is where you&#8217;ll to download your initial bundle to</li>
<li><em>upload</em>: When you bundle an image, put it here ready to be uploaded</li>
<li><em>.ec2</em>: This will contain your AWS access keys and your EC2 PEM files as follows:
<ul>
<li><em>s3.secret</em>: S3 Secret Key</li>
<li><em>s3.access</em>: S3 Access Key</li>
<li><em>ec2-pk.pem</em>: EC2 Private Key</li>
<li><em>ec2-cert.pem</em>: EC2 Certificate</li>
<li><em>id</em>: EC2 user ID (Note: AWS account number, NOT Access Key ID)</li>
</ul>
</li>
</ul>
<p style="padding-left:30px;"><em>ec2-download-bundle -b your-bucket -a `cat /ebs/.ec2/s3.access` -s `cat /ebs/.ec2/s3.secret` -k /ebs/.ec2/ec2-pk.pem -d /ebs/download -p your-image-name</em></p>
<p>This command pulls down the bundle you want to customise from S3. As I said before though, this will only work if you have sufficient rights on S3 to download the image and the EC2 private key that bundled it up and encrypted it in the first place.</p>
<p style="padding-left:30px;"><em>ec2-unbundle -k /ebs/.ec2/ec2-pk.pem -s /ebs/download -d /ebs -m /ebs/download/your-image-name.manifest.xml </em></p>
<p>This command uncompresses and decrypts the image file from the downloaded bundle. It takes a while&#8230;</p>
<h3>4. Customise</h3>
<p>Now you&#8217;re ready to work. All you need is two shell scripts to go in your /ebs directory.<em> <a href="http://chris-read.net.s3.amazonaws.com/work.sh">work.sh</a></em> mounts up your image (if it&#8217;s not mounted already) and chroot&#8217;s you in and you&#8217;re now up and running &#8211; customise to your hearts content. When you&#8217;re done, make sure you&#8217;ve logged out of all your work.sh scripts (yes you can run more than one) and then run <a href="http://chris-read.net.s3.amazonaws.com/bundle-and-upload.sh"><em>bundle-and-upload.sh</em></a>.</p>
<p>When you&#8217;re done, just shut down your host machine. When you want to work on it again later, just boot up a new AMI, attach your volume, mount it up and you&#8217;re at step 4 already.</p>
<p>Have fun&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=64&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2009/04/08/ec2-ami-creation-tips-part2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>Above the Clouds &#8211; This Sounds Familiar&#8230;</title>
		<link>http://blog.chris-read.net/2009/02/24/above-the-clouds-this-sounds-familiar/</link>
		<comments>http://blog.chris-read.net/2009/02/24/above-the-clouds-this-sounds-familiar/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 13:24:49 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">http://blog.chris-read.net/?p=57</guid>
		<description><![CDATA[I found a link to Above the Clouds, a paper on Cloud Computing recently published by a quartet of UC Berkeley RAD Lab professors. I&#8217;ve been quite disappointed with publications on the subject of the latest buzzword taking the world by storm right now, so I was not expecting much when I first clicked on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=57&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I found a link to <a href="http://berkeleyclouds.blogspot.com/" target="_blank">Above the Clouds</a>, a paper on Cloud Computing recently published by a quartet of <a href="http://radlab.cs.berkeley.edu/wiki/RAD_Lab" target="_blank">UC Berkeley RAD Lab</a> professors. I&#8217;ve been quite disappointed with publications on the subject of the latest buzzword taking the world by storm right now, so I was not expecting much when I first clicked on the link. The thing is, as I started reading through the Executive Summary it all sounded very familiar. The outline the give in the summary follows the same outline as a talk I gave in November last year at the <a href="http://www.thoughtworks.com/" target="_blank">ThoughtWorks</a> London office for the <a href="http://www.meetup.com/Londonjavacommunity/" target="_blank">London Java Community</a>.</p>
<p>The only criticism I have is that they don&#8217;t put enough emphasis on one of my key reasons for why it&#8217;s suddenly taken off. Cloud computing is not a new idea &#8211; it&#8217;s an extension of the Utility Computing that John McCarthy talked about in 1961. Although they only make a passing remark in section 3, I think one of the most important reasons it&#8217;s taken off is that the services Amazon provide were the first that were <strong>not</strong> a &#8220;solution looking for a problem&#8221;. Earlier offerings by the likes of Sun, HP and Intel all created a solution that they tried to sell to clients. The problem was that there were remarkably few problems that their solutions solved. Amazon simply exposed services that they were using internally already. That&#8217;s not to say the other reasons they give are not valid, I totally agree with them. I think they just missed a good point.</p>
<p>One of the topics I only glanced over is covered cover quite well in section 6 &#8211; Cloud Computing Economics. They provide some interesting example cost calculations. Although the numbers are obviously US centric, they do provide a nice way for a company to approach making the old &#8220;build vs buy&#8221; comparison.</p>
<p>In summary, I highly recommend this paper for anyone who wants to get the head around what this Cloud stuff is all about and what they need to do to prepare for it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=57&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2009/02/24/above-the-clouds-this-sounds-familiar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>EC2 AMI Creation Tips</title>
		<link>http://blog.chris-read.net/2007/11/19/ec2-ami-creation-tips/</link>
		<comments>http://blog.chris-read.net/2007/11/19/ec2-ami-creation-tips/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 15:00:15 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://www.chris-read.net/index.php/2007/11/19/ec2-ami-creation-tips/</guid>
		<description><![CDATA[While we were still working on Buildix 2, people started asking about an AMI for Buildix on Amazons EC2. This didn&#8217;t seem to be such a big ask, but now that I&#8217;ve finally gotten around to working on this I&#8217;ve found it can be a bit fiddly! While there is a lot of good documentation [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=16&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While we were still working on Buildix 2, people started asking about an AMI for Buildix on Amazons EC2. This didn&#8217;t seem to be such a big ask, but now that I&#8217;ve finally gotten around to working on this I&#8217;ve found it can be a bit fiddly! While there is a lot of good documentation in the various sections of the EC2 site, I still had a quite a few head scratching moments trying to create my own Ubuntu 7.04 Server image to load Buildix into.</p>
<p>The Buildix image is now available for public use as <strong>ami-e4ca2f8d</strong>.<br />
<span id="more-16"></span><br />
Here&#8217;s a couple of tips to keep in mind when rolling your own:</p>
<h2>Remeber it&#8217;s Xen</h2>
<p>I had problems getting my first batch of uploads working on the network. They would boot without a problem, but the networking would not initialize (as I could see from the console output). Things got a lot easier when I started manipulating the image locally using my own Xen installation. By booting it up on my local Xen server I could see where the problems were and fix them with a lot less pain and suffering.</p>
<p>The other benefit you get from testing your image in Xen is that you can bundle the image directly (ec2-bundle-image) instead of having to scrape a running machine (ec2-bundle-vol).</p>
<h2>There can&#8217;t be only one</h2>
<p>As the name implies, EC2 is all about having a big cloud of images. Chances are there will be a lot of instances of each image running out there. This means that the image itself needs to pick up its identity on boot up. Amazon provide a nice RESTful API that can provide each instance with information about itself. The documentation for the meta-data that&#8217;s available is available at <a href="http://docs.amazonwebservices.com/AWSEC2/2007-08-29/DeveloperGuide/AESDG-chapter-instancedata.html" target="_blank">http://docs.amazonwebservices.com/AWSEC2/2007-08-29/DeveloperGuide/AESDG-chapter-instancedata.html</a>. The stuff I needed the most was the public SSH key to allow to log in as root, and the hostname of the machine. Here&#8217;s what I added to <em>/etc/rc.local</em> to allow me to do this:</p>
<pre>if [ ! -d /root/.ssh ] ; then
    mkdir -p /root/.ssh
    chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key &gt; /tmp/my-key
if [ $? -eq 0 ] ; then
    cat /tmp/my-key &gt;&gt; /root/.ssh/authorized_keys
    chmod 600 /root/.ssh/authorized_keys
    rm /tmp/my-key
fi

hostname `curl http://169.254.169.254/latest/meta-data/hostname`</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisread.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisread.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=16&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2007/11/19/ec2-ami-creation-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>CruiseControl and Buildix 2 at JAOO 2007</title>
		<link>http://blog.chris-read.net/2007/09/26/cruisecontrol-and-buildix-2-at-jaoo-2007/</link>
		<comments>http://blog.chris-read.net/2007/09/26/cruisecontrol-and-buildix-2-at-jaoo-2007/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 14:49:10 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.chris-read.net/index.php/2007/09/26/cruisecontrol-and-buildix-2-at-jaoo-2007/</guid>
		<description><![CDATA[I&#8217;ve been at JAOO for the past few days, and while here I had a chance to do a presentation with Erik Doernenburg on Continuous Integration and CruiseControl. We used the new Beta version of Buildix 2 to show people the new CruiseControl Dashboard, and quite a few people were impressed with it. Favourite features [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=15&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been at <a href="http://jaoo.dk" title="JAOO" target="_blank">JAOO</a> for the past few days, and while here I had a chance to do a presentation with <a href="http://erik.doernenburg.com/" target="_blank">Erik Doernenburg</a> on Continuous Integration and <a href="http://cruisecontrol.sf.net" target="_blank">CruiseControl</a>. We used the new <a href="http://buildix.thoughtworks.com/beta.html" target="_blank">Beta</a> version of Buildix 2 to show people the new CruiseControl <a href="http://cruisecontrol.sourceforge.net/dashboard.html" target="_blank">Dashboard,</a> and quite a few people were impressed with it. Favourite features were the <a href="http://confluence.public.thoughtworks.org/display/CCNET/CCTray" target="_blank">CCTray</a> integration, and the ability to see the status of a large number of projects at a glance.</p>
<p>As always, there were also people who were interested in hearing about how it can be used for non Java projects. I had a good chat to one person who is interested in using it on a mixed Common LISP and <a href="http://www.erlang.org/" target="_blank">Erlang</a> project he&#8217;s working on. I&#8217;m looking forward to hearing how it goes for him. Due to lack of experience on my part I could unfortunately not help him much with the <a href="http://darcs.net/" target="_blank">darcs</a> problems he&#8217;s having though. Some people have all the fun&#8230;</p>
<p>It was also quite useful to speak to people about the problems they&#8217;re currently facing when trying to use CruiseControl. A common theme is people trying to manage large numbers of builds, or trying to build products across large numbers of different platforms. These are problems the dedicated ThoughtWorks development team are currently working on, so it&#8217;s great to get the validation that we&#8217;re putting effort into the things people care about now.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisread.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisread.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=15&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2007/09/26/cruisecontrol-and-buildix-2-at-jaoo-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>Buildix Demo at London 2.0 RC6</title>
		<link>http://blog.chris-read.net/2006/08/08/buildix-demo-at-london-20-rc6/</link>
		<comments>http://blog.chris-read.net/2006/08/08/buildix-demo-at-london-20-rc6/#comments</comments>
		<pubDate>Tue, 08 Aug 2006 21:39:14 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.chris-read.net/?p=9</guid>
		<description><![CDATA[For those of you in the London area who would like to know a bit more about Buildix, see it in action or just ask questions &#8211; I&#8217;ll be showing it off (so to speak) at London 2.0 RC6. For more info on where and when, check out Sam Newman&#8217;s blog entry. I think we [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=10&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For those of you in the London area who would like to know a bit more about <a title="Buildix" href="http://buildix.thoughtworks.com" target="_blank">Buildix</a>, see it in action or just ask questions &#8211; I&#8217;ll be showing it off (so to speak) at London 2.0 RC6. For more info on where and when, check out <a href="http://www.magpiebrain.com/blog/2006/08/03/london-20-rc-6-monday-14th-august/" target="_blank">Sam Newman&#8217;s blog entry</a>. I think we even have a few CD&#8217;s left from Agile 2006 for those who are interested&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisread.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisread.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=10&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2006/08/08/buildix-demo-at-london-20-rc6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducting Buildix &#8211; The Agile Development Platform on a disk</title>
		<link>http://blog.chris-read.net/2006/07/07/introducting-buildix-the-agile-development-platform-on-a-disk/</link>
		<comments>http://blog.chris-read.net/2006/07/07/introducting-buildix-the-agile-development-platform-on-a-disk/#comments</comments>
		<pubDate>Fri, 07 Jul 2006 14:19:40 +0000</pubDate>
		<dc:creator>Chris Read</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.chris-read.net/?p=8</guid>
		<description><![CDATA[Ever since I started working for ThoughtWorks, I have heard people saying things along the lines of &#8220;Wouldn&#8217;t it be nice if we had some kind of Cruise-in-a-box to help us get projects up and running quickly?&#8221;. After about 6 months I was thinking the same thing, and started tinkering around with various options. Nothing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=9&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ever since I started working for ThoughtWorks, I have heard people saying things along the lines of &#8220;Wouldn&#8217;t it be nice if we had some kind of Cruise-in-a-box to help us get projects up and running quickly?&#8221;. After about 6 months I was thinking the same thing, and started tinkering around with various options. Nothing really happened, until the first week of January this year when a group of us who often fill &#8220;Build Master&#8221; type rolls were all in the office together with a few days unassigned to clients. We were all sitting around a desk together catching up, when somehow the topic once again emerged. With the critical mass in place, this sparked off the birth of <a target="_blank" title="Buildix" href="http://buildix.thoughtworks.com">Buildix</a>.</p>
<p>The whole point of Buildix is to help any Java based Agile Development Project get up and running as quickly as possible buy providing them with pre-configured and integrated version control system, continuous integration framework, wiki and issue tracking system. We chose our favourite products in each of these areas &#8211; <a target="_blank" title="Subversion" href="http://subversion.tigris.org">Subversion</a>, <a target="_blank" title="CruiseControl" href="http://cruisecontrol.sf.net">CruiseControl</a> and <a target="_blank" title="Trac" href="http://trac.edgewall.com">Trac</a>. Another common difficulty faced by our development teams, especially in the early stages of a project, is network access. Sometimes all we get from our clients when we arrive on site is a switch to allow us to get our laptops to talk to each other &#8211; no DNS, file shares, anything. Buildix can also help in situations like this, as it also runs <a target="_blank" title="Samba" href="http://www.samba.org">Samba</a>, and will run as a DNS and DHCP server if given the correct kernel boot parameters.</p>
<p>So, six months after we started, and after a few internal releases, we decided to give something back to the community that helps us do our job, and make <a target="_blank" title="Buildix" href="http://buildix.thoughtworks.com">Buildix</a> available to everyone. Enjoy!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/chrisread.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/chrisread.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisread.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisread.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisread.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisread.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisread.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisread.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisread.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisread.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisread.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisread.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisread.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisread.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisread.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisread.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.chris-read.net&amp;blog=4083712&amp;post=9&amp;subd=chrisread&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.chris-read.net/2006/07/07/introducting-buildix-the-agile-development-platform-on-a-disk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Chris Read</media:title>
		</media:content>
	</item>
	</channel>
</rss>
