<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>The Cult of Gary</title>
	
	<link>http://www.cultofgary.com</link>
	<description>A System Administrator's Blog</description>
	<pubDate>Fri, 02 Jan 2009 22:45:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/TheCultOfGary" type="application/rss+xml" /><item>
		<title>Ack! An EC2 Instance has Died!</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/501298528/</link>
		<comments>http://www.cultofgary.com/2009/01/02/ack-an-ec2-instance-has-died/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 22:13:34 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[amazon]]></category>

		<category><![CDATA[backups]]></category>

		<category><![CDATA[ec2]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/?p=136</guid>
		<description><![CDATA[And it was the one my blog was running on.
It was the damnest thing too. I was able to reboot it from the API and look at the console output. As far as I can tell, the network adapter wasn&#8217;t able to DHCP an IP address:

Welcome to  CentOS release 5 (Final)
Press 'I' to enter [...]]]></description>
			<content:encoded><![CDATA[<p>And it was the one my blog was running on.</p>
<p>It was the damnest thing too. I was able to reboot it from the API and look at the console output. As far as I can tell, the network adapter wasn&#8217;t able to DHCP an IP address:</p>
<p><code><br />
Welcome to  CentOS release 5 (Final)<br />
Press 'I' to enter interactive startup.<br />
Setting clock : Mon Dec 22 20:06:28 EST 2008 [  OK  ]<br />
Starting udev: [  OK  ]<br />
Setting hostname localhost.localdomain:  [  OK  ]<br />
No devices found<br />
Setting up Logical Volume Management:   No volume groups found<br />
[  OK  ]<br />
Checking filesystems<br />
Checking all file systems.<br />
[/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/sda1<br />
/dev/sda1: clean, 96119/1313280 files, 616984/2621440 blocks<br />
[/sbin/fsck.ext3 (1) -- /mnt] fsck.ext3 -a /dev/sda2<br />
/dev/sda2: clean, 5853/19546112 files, 892921/39092224 blocks<br />
[  OK  ]<br />
Remounting root filesystem in read-write mode:  [  OK  ]<br />
Mounting local filesystems:  [  OK  ]<br />
Enabling local filesystem quotas:  [  OK  ]<br />
Enabling /etc/fstab swaps:  [  OK  ]<br />
INIT: Entering runlevel: 4<br />
Entering non-interactive startup<br />
Starting background readahead: [  OK  ]<br />
Checking for hardware changes [  OK  ]<br />
Bringing up loopback interface:  [  OK  ]<br />
Bringing up interface eth0:<br />
Determining IP information for eth0&#8230; failed.<br />
[FAILED]<br />
Starting auditd: [FAILED]<br />
curl: (7) Failed to connect to 169.254.169.254: Network is unreachable<br />
Starting system logger: [  OK  ]<br />
Starting kernel logger: [  OK  ]<br />
Starting syslog-ng: [  OK  ]<br />
Starting irqbalance: [  OK  ]<br />
Starting system message bus: [  OK  ]<br />
Mounting other filesystems:  [  OK  ]<br />
Starting sshd: [  OK  ]<br />
Starting cups: [  OK  ]<br />
Starting MySQL:  [  OK  ]<br />
Starting postfix: [  OK  ]<br />
curl: (7) Failed to connect to 169.254.169.254: Network is unreachable<br />
Starting httpd: Warning: DocumentRoot [/dev/null] does not exist<br />
Warning: DocumentRoot [/dev/null] does not exist<br />
Warning: DocumentRoot [/dev/null] does not exist<br />
httpd: Could not reliably determine the server&#8217;s fully qualified domain name, using localhost.localdomain for ServerName<br />
[  OK  ]<br />
Starting crond: [  OK  ]<br />
Starting process accounting:  [  OK  ]<br />
Starting atd: [  OK  ]<br />
Starting jexec:  Starting jexec services[  OK  ]<br />
Starting HAL daemon: [  OK  ]<br />
+ Updating ec2-ami-tools<br />
curl: (6) Couldn&#8217;t resolve host &#8217;s3.amazonaws.com&#8217;<br />
c<br />
CentOS release 5 (Final)<br />
Kernel 2.6.16-xenU on an i686<br />
localhost l</code></p>
<p>Luckily I had backups, so I booted a new instance and restored it it. It looks like I posted one article since my last backup. I reckon I&#8217;ll be able to get that back from a google cache.</p>
<p>It took me about 30 minutes to start the instance, restore the backup and test everything out. This time around, I set up an elastic IP. If this happens again, I won&#8217;t have to update DNS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2009/01/02/ack-an-ec2-instance-has-died/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2009/01/02/ack-an-ec2-instance-has-died/</feedburner:origLink></item>
		<item>
		<title>Confluence and Google Code Prettify</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/451972448/</link>
		<comments>http://www.cultofgary.com/2008/11/13/confluence-and-google-code-prettify/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 22:38:49 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/?p=140</guid>
		<description><![CDATA[
EDIT - this post was lost due to a server crash. I&#8217;m hoping to put it back in the same spot, but I&#8217;m not sure if wordpress will allow me to do that without ugliness.
I mostly like Confluence. I don’t like the {code} blocks. The highlighting and formatting sucks. There’s a limited number of languages [...]]]></description>
			<content:encoded><![CDATA[<div class="entry">
<p><strong>EDIT</strong> - this post was lost due to a server crash. I&#8217;m hoping to put it back in the same spot, but I&#8217;m not sure if wordpress will allow me to do that without ugliness.</p>
<p>I mostly like Confluence. I don’t like the {code} blocks. The highlighting and formatting sucks. There’s a limited number of languages supported and I don’t really code in any of them. The list from the documentation says:</p>
<blockquote><p>Makes a preformatted block of code with syntax highlighting. All the optional parameters of {panel} macro are valid for {code} too. The default language is <strong>Java</strong> but you can specify <strong>JavaScript</strong>, <strong>ActionScript</strong>, <strong>XML</strong>, <strong>HTML</strong> and <strong>SQL</strong> too.</p></blockquote>
<p>I’d really like a Confluence plugin that used the <a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://code.google.com/p/google-code-prettify/');" href="http://code.google.com/p/google-code-prettify/" onclick="javascript:pageTracker._trackPageview('/http://code.google.com/p/google-code-prettify/');">Google Code Prettify</a> javascript code. These seem like obvious things to mate together, since you wouldn’t have to worry about implementing new languages.  Quite often, I write psuedo code in the wiki and the JS code does a decent job of figuring it out. I searched Google for <a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.google.com/search?q=confluence+google-code-prettify');" href="http://www.google.com/search?q=confluence+google-code-prettify" onclick="javascript:pageTracker._trackPageview('/http://www.google.com/search?q=confluence+google-code-prettify');">confluence google-code-prettify</a>, since someone must have built a plugin already. The results <a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://wikis.sun.com/display/DocWeb/Home');" href="http://wikis.sun.com/display/DocWeb/Home" onclick="javascript:pageTracker._trackPageview('/http://wikis.sun.com/display/DocWeb/Home');">were not promising</a>.</p>
<p>Dear Lazy Web, please see what you can do.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/11/13/confluence-and-google-code-prettify/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/11/13/confluence-and-google-code-prettify/</feedburner:origLink></item>
		<item>
		<title>Atlassian Bamboo and Perl Test Harness</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/445934774/</link>
		<comments>http://www.cultofgary.com/2008/11/07/atlassian-bamboo-and-perl-test-harness/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 22:02:38 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[atlassian]]></category>

		<category><![CDATA[bamboo]]></category>

		<category><![CDATA[continuous integration]]></category>

		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/11/07/atlassian-bamboo-and-perl-test-harness/</guid>
		<description><![CDATA[At my current gig, we use Atlassian Bamboo as a Continuous Integration server. It plugs into the rest of our Atlassian tools, which is nice.
It took me a bit to get my perl test cases to work with it, but with the help of TAP::Harness::JUnit, I finally got it to work. It&#8217;s really easy too:

Install [...]]]></description>
			<content:encoded><![CDATA[<p>At my current gig, we use <a href="http://www.atlassian.com/software/bamboo/" onclick="javascript:pageTracker._trackPageview('/http://www.atlassian.com/software/bamboo/');">Atlassian Bamboo</a> as a Continuous Integration server. It plugs into the rest of our Atlassian tools, which is nice.</p>
<p>It took me a bit to get my perl test cases to work with it, but with the help of <a href="http://search.cpan.org/~lkundrak/TAP-Harness-JUnit-0.24/lib/TAP/Harness/JUnit.pm" onclick="javascript:pageTracker._trackPageview('/http://search.cpan.org/~lkundrak/TAP-Harness-JUnit-0.24/lib/TAP/Harness/JUnit.pm');">TAP::Harness::JUnit</a>, I finally got it to work. It&#8217;s really easy too:</p>
<ol>
<li>Install TAP::Harness::JUnit</li>
<li>Put the following script into you code repository. Put it somewhere that you can call it easily when doing a build.<code><br />
#!/usr/bin/perl<br />
use strict;<br />
use warnings;<br />
use TAP::Harness::JUnit;<br />
my $outputfile = shift;<br />
my $harness = TAP::Harness::JUnit-&gt;new({<br />
xmlfile =&gt; $outputfile,<br />
});<br />
$harness-&gt;runtests(@ARGV);</code></li>
<li>Instead of calling make test for you perl modules, run:<br />
<code>perl $SCRIPTFROMABOVE -Iblib/lib $OUTPUTFILE t/*.t</code></li>
</ol>
<p>$OUTPUTFILE should be an xml file in whatever directory you have configured Bamboo to look in for test reports.</p>
<p>This should work with any CI server that can read JUnit xml output.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/11/07/atlassian-bamboo-and-perl-test-harness/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/11/07/atlassian-bamboo-and-perl-test-harness/</feedburner:origLink></item>
		<item>
		<title>Excluding Experts Exchange from Search Results</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/428630753/</link>
		<comments>http://www.cultofgary.com/2008/10/22/excluding-experts-exchange-from-search-results/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 14:58:17 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[CustomizeGoogle]]></category>

		<category><![CDATA[experts exchange]]></category>

		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/10/22/excluding-experts-exchange-from-search-results/</guid>
		<description><![CDATA[Experts Exchange drives me crazy. When I&#8217;m trying to solve a problem and I click an Experts Exchange link, I feel like I&#8217;ve been duped and I&#8217;ll never get those precious seconds back. I&#8217;ve been complaining loudly about this to my friends off and on for a while. One of them suggested a solution the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.experts-exchange.com/" onclick="javascript:pageTracker._trackPageview('/http://www.experts-exchange.com/');">Experts Exchange</a> drives me crazy. When I&#8217;m trying to solve a problem and I click an Experts Exchange link, I feel like I&#8217;ve been duped and I&#8217;ll never get those precious seconds back. I&#8217;ve been complaining loudly about this to my friends off and on for a while. One of them suggested a solution the other day.</p>
<p>I once found an article about <a href="http://www.greghughes.net/rant/HowToExcludeADomainFromYourGoogleSearchResults.aspx" onclick="javascript:pageTracker._trackPageview('/http://www.greghughes.net/rant/HowToExcludeADomainFromYourGoogleSearchResults.aspx');">setting up a customer search engine</a> that would allow you to permanently exclude sites. I&#8217;d have to remember to use my custom search engine every time, so I never tried it out.</p>
<p>My friend suggested that I use the Firefox plugin <a href="http://www.customizegoogle.com/" onclick="javascript:pageTracker._trackPageview('/http://www.customizegoogle.com/');">CustomizeGoogle</a>. It allows you to filter sites in your results. I added <em>/experts-exchange/</em> to the filter list and now Experts Exhange links are greyed out:</p>
<p><a href="http://www.cultofgary.com/wp-content/uploads/2008/10/picture-2.png"  title="Experts Exchange Excluded!"><img src="http://www.cultofgary.com/wp-content/uploads/2008/10/picture-2.png" alt="Experts Exchange Excluded!" /></a></p>
<p>Hooray! No more bait and switch for me!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/10/22/excluding-experts-exchange-from-search-results/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/10/22/excluding-experts-exchange-from-search-results/</feedburner:origLink></item>
		<item>
		<title>EC2 and Ganglia</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/423051060/</link>
		<comments>http://www.cultofgary.com/2008/10/16/ec2-and-ganglia/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 21:06:47 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[amazon]]></category>

		<category><![CDATA[ec2]]></category>

		<category><![CDATA[ganglia]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/10/16/ec2-and-ganglia/</guid>
		<description><![CDATA[I&#8217;ve been playing around with Ganglia for the past couple of days, trying to make it to work with EC2. It was a bit of an adventure. There are two keys for running Ganglia on EC2: use unicast and set send_metadata_interval.
Amazon doesn&#8217;t support multicast on their network, so the default configs for Ganglia don&#8217;t work. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with Ganglia for the past couple of days, trying to make it to work with EC2. It was a bit of an adventure. There are two keys for running Ganglia on EC2: use unicast and set send_metadata_interval.</p>
<p>Amazon doesn&#8217;t support multicast on their network, so the default configs for Ganglia don&#8217;t work. You need to pick your head gmond server and set your udp_send_channel to something like:</p>
<p><code>udp_send_channel {<br />
host = $headserver<br />
port = 8649<br />
ttl = 1<br />
}</code></p>
<p>In your globals section, you also need to make sure that send_metadata_interval is set to something other than 0. From <a href="http://www.mail-archive.com/ganglia-developers@lists.sourceforge.net/msg04706.html" onclick="javascript:pageTracker._trackPageview('/http://www.mail-archive.com/ganglia-developers@lists.sourceforge.net/msg04706.html');">the mailing list</a>:</p>
<blockquote><p> Yep, you ran across the same dilemma I had when I wrote it :/  The problem is that in unicast mode, there is no requirement for any of the agents to be listening (ie. deaf = yes) since the individual nodes don&#8217;t need to do anything more than send their own current metric to the host node.  So in this instance, attempting to send a request for metadata back to the node wouldn&#8217;t work.  That is why I ended up just implementing the send_metadata_interval directive.  The downside as you pointed out, is  that more data is being passed needlessly on the wire however the amount of data should be less than with the older scheme.  The reason why I say that is because under the old scheme, all meta data for any gmetric or modular metric was sent with every value packet rather than being sent independently.  The intent was that the end_metadata_interval would be set to something on the order of minutes rather than seconds.  This would mean that you might lose a few minutes of data if the host gmond were restarted, but the amount of useless metadata packets would be much less.</p></blockquote>
<p>That last bit took some digging around to figure out. Without it, gmond knew about other hosts, but ignored the actual stats. Gmond wouldn&#8217;t record any info and graphs and data were missing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/10/16/ec2-and-ganglia/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/10/16/ec2-and-ganglia/</feedburner:origLink></item>
		<item>
		<title>Puppet, LDAP and Autosign</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/422093850/</link>
		<comments>http://www.cultofgary.com/2008/10/15/puppet-ldap-and-autosign/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 00:11:45 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[puppet]]></category>

		<category><![CDATA[stack overflow]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/10/15/puppet-ldap-and-autosign/</guid>
		<description><![CDATA[I&#8217;ve been meaning to describe how I handle EC2 and Puppet in an automated way. Part of the problem is getting your host certificates signed.
That question came up on Stack Overflow, so I described my solution there.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been meaning to describe how I handle EC2 and Puppet in an automated way. Part of the problem is getting your host certificates signed.</p>
<p><a href="http://stackoverflow.com/questions/163332/how-can-i-pre-sign-puppet-certificates" onclick="javascript:pageTracker._trackPageview('/http://stackoverflow.com/questions/163332/how-can-i-pre-sign-puppet-certificates');">That question</a> came up on Stack Overflow, so I <a href="http://stackoverflow.com/questions/163332/how-can-i-pre-sign-puppet-certificates#206967" onclick="javascript:pageTracker._trackPageview('/http://stackoverflow.com/questions/163332/how-can-i-pre-sign-puppet-certificates#206967');">described my solution there</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/10/15/puppet-ldap-and-autosign/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/10/15/puppet-ldap-and-autosign/</feedburner:origLink></item>
		<item>
		<title>Nginx: My New Favorite Load Balancer</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/348442047/</link>
		<comments>http://www.cultofgary.com/2008/07/28/nginx-my-new-favorite-load-balancer/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 14:32:35 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[load balancing]]></category>

		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/07/28/nginx-my-new-favorite-load-balancer/</guid>
		<description><![CDATA[It&#8217;s been a while since I&#8217;ve assessed new load balancers. At my previous gig, we had used LVS successfully for 5 years. It worked great, but was a bit of a configuration nightmare. I think I went through 2 or 3 different frameworks to handle configuration and backend server monitoring.
I&#8217;ve just reached the load balancing [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I&#8217;ve assessed new load balancers. At my previous gig, we had used <a href="http://www.linuxvirtualserver.org/" onclick="javascript:pageTracker._trackPageview('/http://www.linuxvirtualserver.org/');">LVS</a> successfully for 5 years. It worked great, but was a bit of a configuration nightmare. I think I went through 2 or 3 different frameworks to handle configuration and backend server monitoring.</p>
<p>I&#8217;ve just reached the load balancing part of my current project. LVS is a no go for EC2, since you need to be in the kernel and it depends on various natting and forwarding tricks to make it work. So I started my research and looked at a few different options.</p>
<p>I&#8217;m currently focusing on <a href="http://nginx.net/" onclick="javascript:pageTracker._trackPageview('/http://nginx.net/');">Nginx</a> (pronounced Engine X). It&#8217;s a light weight web server that has some load balancing functionality built in. I haven&#8217;t had it in production, of course, but I really like the features and performance so far.</p>
<p>It handles spoon feeding slow clients. Nginx is a proxying load balancer. It buffers the transfer to the requester, which means the heavy weight apache processes can move on to the next request while nginx sends the data at the clients pace. This is something that LVS can&#8217;t do, since it&#8217;s a layer 4 app.</p>
<p>Since it&#8217;s proxying, nginx can manage backend servers going down. If nginx can&#8217;t talk to one backend server, it will move on to the next one. That&#8217;s neat, but it also means I don&#8217;t need to run another app to pull dead servers out of the load balancing pool.</p>
<p>Having the wrong IP in the logs is the only thing that sucks. The way around this is to use the X-Forwarded-For headers and tweaking your apps to read this instead of REMOTE_ADDR. And of course, if you care about the original X-Forwarded-For header (ie, AOL&#8217;s proxy), then you&#8217;ll need to mod the nginx config to pass this in a different header.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/07/28/nginx-my-new-favorite-load-balancer/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/07/28/nginx-my-new-favorite-load-balancer/</feedburner:origLink></item>
		<item>
		<title>Point of Interest: EC2’s run at runlevel 4</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/335227930/</link>
		<comments>http://www.cultofgary.com/2008/07/14/point-of-interest-ec2s-run-at-runlevel-4/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 16:23:39 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[amazon]]></category>

		<category><![CDATA[ec2]]></category>

		<category><![CDATA[runlevels]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/07/14/point-of-interest-ec2s-run-at-runlevel-4/</guid>
		<description><![CDATA[I came across something odd today. I&#8217;m debugging a service startup on a new EC2 image. When I was looking through log files, I noticed the system was in runlevel 4, not 3.
Apparently this is something that Xen does. I&#8217;ve found lots of posts referring to this, but none explaining why. Most people agree run [...]]]></description>
			<content:encoded><![CDATA[<p>I came across something odd today. I&#8217;m debugging a service startup on a new EC2 image. When I was looking through log files, I noticed the system was in runlevel 4, not 3.</p>
<p>Apparently this is something that Xen does. I&#8217;ve found lots of posts <a href="http://developer.amazonwebservices.com/connect/message.jspa?messageID=45948#45948" onclick="javascript:pageTracker._trackPageview('/http://developer.amazonwebservices.com/connect/message.jspa?messageID=45948#45948');">referring</a> to this, but none explaining why. Most people agree run level 4 is <a href="http://phildev.net/runlevels.html" onclick="javascript:pageTracker._trackPageview('/http://phildev.net/runlevels.html');">user defined</a>. I suppose the Xen folks have defined a use for it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/07/14/point-of-interest-ec2s-run-at-runlevel-4/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/07/14/point-of-interest-ec2s-run-at-runlevel-4/</feedburner:origLink></item>
		<item>
		<title>Backing up to S3</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/327447973/</link>
		<comments>http://www.cultofgary.com/2008/07/05/backing-up-to-s3/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 15:54:28 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[amazon]]></category>

		<category><![CDATA[backups]]></category>

		<category><![CDATA[brackup]]></category>

		<category><![CDATA[s3]]></category>

		<category><![CDATA[s3napback]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/07/05/backing-up-to-s3/</guid>
		<description><![CDATA[I started backing up our servers to S3 a few weeks ago. I had been doing weekly tar based backups to my laptop over SSH. Some of the backups are starting to get big, so it was time to move to something else.
My key requirements were to back up to S3 and to use encryption [...]]]></description>
			<content:encoded><![CDATA[<p>I started backing up our servers to S3 a few weeks ago. I had been doing weekly tar based backups to my laptop over SSH. Some of the backups are starting to get big, so it was time to move to something else.</p>
<p>My key requirements were to back up to S3 and to use encryption on the backups. I found a lot of apps/scripts/products out there that can do this. I had two &#8220;nice to have&#8221; requirements as well. I wanted to be able to automated the backups as much as possible. Also, I should be able to download and store the backups on my laptop as an additional copy.</p>
<p>I first tried <a href="http://code.google.com/p/brackup/" onclick="javascript:pageTracker._trackPageview('/http://code.google.com/p/brackup/');">Brackup</a>. It worked OK and has some really nice features. For example, it can do synthetic backups, so you only need to do one full backup.  There are a few design issues with Brackup though.</p>
<p>For one, you can&#8217;t purge old backup files when using GPG encrypted backups. The catalog files are encrypt. The backup agent can&#8217;t decrypt the catalog files and figure out what files can be deleted. I also found my configuration files were huge. Directories and destinations get configuration blocks. Each directory you want to back up needs its configuration. You can have a single S3 destination, but if you want to be able to purge backups, you need to back up each directory to it&#8217;s own destination. I had 5-10 directories on each server to back up.</p>
<p>I gave up on Brackup and figured I&#8217;d write a shell script to tar and upload backups. Before I started coding, googled to see if anyone else had already written an app. I found <a href="http://dev.davidsoergel.com/2008/05/07/s3napback-cycling-incremental-compressed-encrypted-backups-to-amazon-s3/" onclick="javascript:pageTracker._trackPageview('/http://dev.davidsoergel.com/2008/05/07/s3napback-cycling-incremental-compressed-encrypted-backups-to-amazon-s3/');">s3napback</a>. It&#8217;s a little more traditional; s3napback treats S3 like a tape device (using js3tream) and chains tar, gzip and gpg together to create full/incremental backups. </p>
<p>It uses apache style configs that are nice and concise. S3napback is also much faster that Brackup. It doesn&#8217;t need to perform a new S3 transaction for each file. Plus, I can download the stream files and restore without any special tools on any machine that has tar and gpg. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/07/05/backing-up-to-s3/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/07/05/backing-up-to-s3/</feedburner:origLink></item>
		<item>
		<title>You don’t have to use an iPhone plan with an iPhone</title>
		<link>http://feeds.feedburner.com/~r/TheCultOfGary/~3/323561217/</link>
		<comments>http://www.cultofgary.com/2008/06/30/you-dont-have-to-use-an-iphone-plan-with-an-iphone/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 22:01:07 +0000</pubDate>
		<dc:creator>gary.richardson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[canada]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[rogers]]></category>

		<guid isPermaLink="false">http://www.cultofgary.com/2008/06/30/you-dont-have-to-use-an-iphone-plan-with-an-iphone/</guid>
		<description><![CDATA[Good news from the Roger&#8217;s website:
 Data Usage - Your iPhone will be enabled for data usage. If you subscribe to a plan with no data included, data charges at a pay-per-use rate of 5¢/KB for data sent and/or received over the Rogers network will apply, unless you subscribe to a data plan, which we [...]]]></description>
			<content:encoded><![CDATA[<p>Good news from the Roger&#8217;s website:</p>
<blockquote><p> <strong>Data Usage</strong> - Your iPhone will be enabled for data usage. If you subscribe to a plan with no data included, data charges at a pay-per-use rate of 5¢/KB for data sent and/or received over the Rogers network will apply, unless you subscribe to a data plan, which we highly recommend. Roaming charges apply while using your iPhone outside Canada. U.S. data roaming on iPhone Packages is $3/MB. The standard international data roaming rate applies. Visit <a href="http://www.rogers.com/roaming" onclick="javascript:pageTracker._trackPageview('/http://www.rogers.com/roaming');">rogers.com/roaming</a> for our roaming rates and destinations. Data usage is measured in KB rounded to the next full KB.</p></blockquote>
<p>That means I can get an iPhone, keep my existing voice plan and turn the data off. Then, it&#8217;s wifi only! At least getting an iPhone won&#8217;t cost a fortune every month.</p>
<p>Now if they&#8217;d only offer a 1 or 2 year contract.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cultofgary.com/2008/06/30/you-dont-have-to-use-an-iphone-plan-with-an-iphone/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cultofgary.com/2008/06/30/you-dont-have-to-use-an-iphone-plan-with-an-iphone/</feedburner:origLink></item>
	</channel>
</rss>
