<?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>Miscellaneous Ramblings &#187; Sysadminery</title>
	<atom:link href="http://onastick.wordpress.com/category/sysadminery/feed/" rel="self" type="application/rss+xml" />
	<link>http://onastick.wordpress.com</link>
	<description>Hockey, Disc golf, devops and other assorting miscellany.</description>
	<lastBuildDate>Wed, 18 Jan 2012 17:39:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='onastick.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Miscellaneous Ramblings &#187; Sysadminery</title>
		<link>http://onastick.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://onastick.wordpress.com/osd.xml" title="Miscellaneous Ramblings" />
	<atom:link rel='hub' href='http://onastick.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The 7 Deadly Sysadmin Sins</title>
		<link>http://onastick.wordpress.com/2011/12/06/the-7-deadly-sysadmin-sins/</link>
		<comments>http://onastick.wordpress.com/2011/12/06/the-7-deadly-sysadmin-sins/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 17:43:36 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[doing-it-wrong]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://onastick.wordpress.com/?p=326</guid>
		<description><![CDATA[We&#8217;ve all been there, needing to fix something and not having the time, energy, etc to fix it the right way.  Sometimes this is the easiest way to avoid a massive rabbit hole.  But you know it&#8217;s wrong you do it and keep going but part of you dies inside.  The 7 Deadly Sysadmin Sins. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=326&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>We&#8217;ve all been there, needing to fix something and not having the time, energy, etc to fix it the right way.  Sometimes this is the easiest way to avoid a massive rabbit hole.  But you know it&#8217;s wrong you do it and keep going but part of you dies inside.  The 7 Deadly Sysadmin Sins.</div>
<ol>
<li>chmod 777</li>
<li>chmod 4755 $file</li>
<li>setenforce 0</li>
<li>echo &#8221; |passwd &#8211;stdin root</li>
<li>service iptables stop</li>
<li>echo &#8216;reboot&#8217; &gt; /etc/cron.daily/fix-hanging-db.sh</li>
<li>curl http://randomwebsite/foo.sh | bash</li>
</ol>
<p>The last one bugs the crap out of me when good software developers assume this is a valid way to install software (outside of your personal machine).</p>
<br />Filed under: <a href='http://onastick.wordpress.com/category/sysadminery/'>Sysadminery</a> Tagged: <a href='http://onastick.wordpress.com/tag/devops/'>devops</a>, <a href='http://onastick.wordpress.com/tag/doing-it-wrong/'>doing-it-wrong</a>, <a href='http://onastick.wordpress.com/tag/sysadmin/'>sysadmin</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/326/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=326&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2011/12/06/the-7-deadly-sysadmin-sins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>Running a puppetmaster in ec2</title>
		<link>http://onastick.wordpress.com/2011/11/30/running-a-puppetmaster-in-ec2/</link>
		<comments>http://onastick.wordpress.com/2011/11/30/running-a-puppetmaster-in-ec2/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 22:34:26 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://onastick.wordpress.com/?p=317</guid>
		<description><![CDATA[I struggled with this for a few days before figuring it out, so I&#8217;ll post it here in hopes it saves someone a few minutes.  When you install puppet and start the puppetmaster (webrick or rack-enabled) it generates a ssl cert for that machine and also generates a CA that you will use to sign [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=317&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I struggled with this for a few days before figuring it out, so I&#8217;ll post it here in hopes it saves someone a few minutes.  When you install puppet and start the puppetmaster (webrick or rack-enabled) it generates a ssl cert for that machine and also generates a CA that you will use to sign all of your clients.</p>
<p>Recent versions of puppet do not add subjectAltNames to the server certificate when it&#8217;s generated by the puppetmaster process.  This means that if you do not use the same name as your masters hostname to connect to puppet you will get a lovely cert mismatch.  I posted a question on serverfault about this (<a title="Puppet in EC2 - Server Fault Question" href="http://serverfault.com/questions/332954/puppet-cert-mismatch-in-ec2/334129#334129" target="_blank">here</a>).  It looks like the common practice for EC2 in particular is to use a uuid as the certname for each puppet client.  This avoids name collisions and problems with hostnames changing everytime the instance is rebooted.  It&#8217;s a little harder to keep track of since they aren&#8217;t very easy to remember, so caveat emptor.</p>
<p><span id="more-317"></span></p>
<p>First get puppet installed.  I tend to use gems (even though I despise them) since they update much faster upstream than anything else.  <em>Do NOT run puppet or start the puppetmaster.</em></p>
<p>Generate a uuid or pick some string/name/moniker that&#8217;s going to be uniq and consistent.  (uuidgen to get a uuid)</p>
<p>Setup a basic puppet.conf, rpm installs will do this for you, gem installs you are on your own.<br />
<code><br />
[main]<br />
logdir = /var/log/puppet<br />
rundir = /var/run/puppet<br />
vardir = /var/lib/puppet<br />
ssldir = $vardir/ssl<br />
pluginsync = true<br />
server = puppet<br />
environment = production<br />
certname = ENTER_UUID_HERE<br />
dns_alt_names = puppet<br />
report = true<br />
</code><br />
You can also manually generate the cert with the following.<br />
<code>puppet cert generate --dns_alt_names puppet ENTER_UUID_HERE</code><br />
Your master cert will have the subjectAltNames field now, This is all addressed in <a href="http://projects.puppetlabs.com/issues/10739" target="_blank">http://projects.puppetlabs.com/issues/10739</a> and should be fixed in the next puppet release.</p>
<p>The concept of using the uuid for ec2 type instances is sound and will prevent ssl headaches in the future.</p>
<br />Filed under: <a href='http://onastick.wordpress.com/category/sysadminery/'>Sysadminery</a> Tagged: <a href='http://onastick.wordpress.com/tag/amazon/'>amazon</a>, <a href='http://onastick.wordpress.com/tag/aws/'>aws</a>, <a href='http://onastick.wordpress.com/tag/ec2/'>ec2</a>, <a href='http://onastick.wordpress.com/tag/linux/'>linux</a>, <a href='http://onastick.wordpress.com/tag/puppet/'>puppet</a>, <a href='http://onastick.wordpress.com/tag/ssl/'>ssl</a>, <a href='http://onastick.wordpress.com/tag/sysadmin/'>sysadmin</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/317/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/317/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/317/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=317&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2011/11/30/running-a-puppetmaster-in-ec2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>The psychology of server naming</title>
		<link>http://onastick.wordpress.com/2011/11/15/the-psychology-of-server-naming/</link>
		<comments>http://onastick.wordpress.com/2011/11/15/the-psychology-of-server-naming/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 18:56:09 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[best-practices]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[naming]]></category>
		<category><![CDATA[operations]]></category>
		<category><![CDATA[servers]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[system-administration]]></category>

		<guid isPermaLink="false">http://onastick.wordpress.com/?p=311</guid>
		<description><![CDATA[One of the more hotly debated topics among sysadmins is what to name servers.  Some people use this as an outlet for their creativity or pop culture references.  Servers named after Lord of the Rings characters, super heros, greek mythology abound.  There&#8217;s a strong push from those of us who have moved past the &#8216;clever&#8217; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=311&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://onastick.files.wordpress.com/2011/11/name_cover.jpeg"><img class="alignleft size-medium wp-image-313" title="The Book of Names" src="http://onastick.files.wordpress.com/2011/11/name_cover.jpeg?w=300&#038;h=211" alt="found on http://www.thaliasdog.com/ -- thanks" width="300" height="211" /></a>One of the more hotly debated topics among sysadmins is what to name servers.  Some people use this as an outlet for their creativity or pop culture references.  Servers named after <a class="zem_slink" title="The Lord of the Rings" href="http://en.wikipedia.org/wiki/The_Lord_of_the_Rings" rel="wikipedia">Lord of the Rings</a> characters, super heros, greek mythology abound.  There&#8217;s a strong push from those of us who have moved past the &#8216;clever&#8217; phase of our careers to name machines in logical consistent manners.  web0X, db0Y, rackXpduY, all get bandied around and are debated with often the same fervor as <a class="zem_slink" title="Vim (text editor)" href="http://www.vim.org/" rel="homepage">Vim</a> vs <a class="zem_slink" title="Emacs" href="http://www.gnu.org/software/emacs" rel="homepage">Emacs</a> (vim for the record).  The truth, sadly is that all the good names are taken ™©®.  The grizzled veterans who&#8217;ve done time on a VAX will exclaim, &#8220;This naming scheme is crap, lets just use IPs, they are immutable.&#8221;  Well for one they are wrong, ips are not immutable.  Take a look at EC2, have fun with that.   Second humans are bad at remembering numbers, 10 digits is the longest number most people can retain (why phone numbers are that length) and usually not for very long.</p>
<p>Names also provide a very important psychological edge for our poor meat brains.  Names allow us to recall information in a similar way that a key allows you to recall information from a database.  A message from  your alert system saying &#8216;Alert gandalf.example.com is DOWN!&#8217; would (in theory) trigger something in your memory.  Gandalf is a wizard, that&#8217;s the master DNS server!  This key isn&#8217;t as good as a more meaningful name but it&#8217;s a key none the less.  I prefer names which are functional and overload information into the rest of the domain.  proxy01.atl.example.com tells me very quickly this is a proxy server, it&#8217;s one of a multinode cluster, likely load balanced, and is located in Atlanta.  All of this allows me to asses the situation at hand faster.  All of the pertinent details should be written down in a wiki, or some other document source, but the naming gives me a fast way to access that without having to go look it up.  172.14.2.1 is DOWN only tells me something is broken, not how important, how impacting or anything about it.  Maybe that&#8217;s a dev box or 1 node in a 40 node cluster, but I don&#8217;t know that (unless I just memorize it which stresses the meat brain) until I look it up.</p>
<p>Consistency is the key, I don&#8217;t in general like &#8216;clever&#8217; names not because they are unprofessional or silly, but because they only mean something to the person who came up with it.  I know why I named the database &#8216;pearl&#8217; (bonus points to anyone that guesses), but my other team members might not and likely that someone coming behind me wouldn&#8217;t either.  I&#8217;m a huge fan of code names and clever names for software / service names / etc just not machine names.  Here are some of the conventions I use.</p>
<p><strong>Multinode clusters are numbered 2 digit starting at 01.</strong></p>
<p><strong></strong>10 servers in a web cluster, web01 &#8211; web10.  Using 2 digit precision gives you 99 machines before you end up changing field sizes.</p>
<p><strong>Short hostnames are the most common functional purpose.</strong></p>
<p><strong></strong>Sometimes it&#8217;s ok to call it a server and put more information into the sub domain.  &#8217;Web&#8217; in general sucks, it&#8217;s too generic and means very little, what does it &#8216;do&#8217;.</p>
<p><strong>If you think they&#8217;ll be more than one, name it 01.</strong></p>
<p><strong>Don&#8217;t use a sequential numbering system for unrelated things.</strong></p>
<p>If you have two webservers that serve different content/services/etc don&#8217;t name them web01 / web02.  This creates a logical grouping of those two machines which are not actually tied together from a service standpoint.  I&#8217;ve heard of shared filesystems being named fs01, fs02, fs03, fs04, etc.  They aren&#8217;t related other than that they are all shared filesystems, why are you grouping them into something that looks like a cluster.  People assume that 1 is related to 2 to 3 to 4.  Put some thought into it and give it a name based on what it does or what&#8217;s important about it.</p>
<p><strong>Use A / B notation for duality relationships.</strong></p>
<p>I name my netapp filers: filer01a / filer01b.  They are both addressable services but provide failover for each other.  There will never be a &#8216;c&#8217; since netapp doesn&#8217;t support wheel based failover.  They are a matched set, so they are named as such.  A vs B gives less cardinality than 1 vs 2 and that&#8217;s a good thing.</p>
<p><strong>Use subdomains in a consistent manner to produce a lightweight hierarchy of information.</strong></p>
<p>proxy01.www.internal.nyc.example.com lets me denote physical location, security context (internal), content type (www), and functional purpose (proxy) all in one name.  Granted this assumes a high degree of machine / service separation and may not work for everything, but you can use that name to store quickly accessible information.</p>
<p><strong>Order is important, remember that.</strong></p>
<p>In english we read left to right.  Information is ordered in that direction as well.  Put the thing you care about most (or quickest) to the left and less immediate information flows to the right).  database01.hr.alt  tells me it&#8217;s a database (important!), it&#8217;s part of a cluster (less important than being a db but still relevant), HR database (eeek will I get paid?!), and finally location which may not matter (alt is a backup site, I can deal with that later).  Order frames your response into the correct context.  database.atl.hr.clusternode1 tells me this machine is a database (important), in Atlanta (wait that&#8217;s the dr site I might not care right away), it&#8217;s HR (wait we don&#8217;t have a primary b/c it died last week), and that it&#8217;s a clusternode.  Is this better or worse?  Depends on the context, order is important.</p>
<p>The crux of the whole point is that names are useful things, humans name things not because they want to be clever but because it&#8217;s an effective way to partition information about something without having to memorize it all.  It comes down to the difference between knowing something and memorizing it.  You design a convention and stick to that convention until it doesn&#8217;t work, then you redefine that convention.  The convention saves you time but only if everyone &#8216;gets&#8217; the convention or it can be easily explained.  If your convention is a complicated scheme involving lollipop guild chairmen&#8217;s you are requiring the audience to have immediate intrinsic knowledge of Mid 1930&#8242;s Judy Garland films, which is the same as asking them to look it up.</p>
<br />Filed under: <a href='http://onastick.wordpress.com/category/sysadminery/'>Sysadminery</a> Tagged: <a href='http://onastick.wordpress.com/tag/best-practices/'>best-practices</a>, <a href='http://onastick.wordpress.com/tag/devops/'>devops</a>, <a href='http://onastick.wordpress.com/tag/dns/'>dns</a>, <a href='http://onastick.wordpress.com/tag/naming/'>naming</a>, <a href='http://onastick.wordpress.com/tag/operations/'>operations</a>, <a href='http://onastick.wordpress.com/tag/servers/'>servers</a>, <a href='http://onastick.wordpress.com/tag/sysadmin/'>sysadmin</a>, <a href='http://onastick.wordpress.com/tag/system-administration/'>system-administration</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/311/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=311&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2011/11/15/the-psychology-of-server-naming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>

		<media:content url="http://onastick.files.wordpress.com/2011/11/name_cover.jpeg?w=300" medium="image">
			<media:title type="html">The Book of Names</media:title>
		</media:content>
	</item>
		<item>
		<title>The horrible state of ruby in a production environment.</title>
		<link>http://onastick.wordpress.com/2011/11/05/the-horrible-state-of-ruby-in-a-production-environment/</link>
		<comments>http://onastick.wordpress.com/2011/11/05/the-horrible-state-of-ruby-in-a-production-environment/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 04:33:49 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Revision control]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyGem]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://onastick.wordpress.com/?p=307</guid>
		<description><![CDATA[As a long time perl guy I was attracted by ruby.  It&#8217;s very perl like method chaining is extremely useful and intuitive.  I like ruby, but the state of  ruby applications in a production environment is horrible.  There are plenty of really good tools out there for ruby developers.  Vagrant, sahara, bundler, capistrano, etc the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=307&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a long time perl guy I was attracted by <a class="zem_slink" title="Ruby (programming language)" href="http://www.ruby-lang.org/" rel="homepage">ruby</a>.  It&#8217;s very perl like method chaining is extremely useful and intuitive.  I like ruby, but the state of  ruby applications in a production environment is horrible.  There are plenty of really good tools out there for ruby developers.  Vagrant, sahara, bundler, capistrano, etc the list goes on.  RVM and rbenv are two really good alternatives for maintaining your development environment in a sane manner.  We are in the stone ages when it comes time to go to production.  Distro support for ruby is shaky at best.  Most places are still running centos/rhel5 which leaves them with ruby 1.8.5 or if lucky ruby 1.8.7.  If you&#8217;ve upgraded to a rhel6-ish you&#8217;re fortunate enough to get wait&#8230; ruby 1.8.7.  I&#8217;m not as familiar with debian but I&#8217;m fairly certain it&#8217;s 1.8.  Ubuntu has an available 1.9.1 package but that&#8217;s officially a beta version, plus most indications is that it&#8217;s extremely buggy.  As of writing ruby is on 1.9.3.  When it comes to rubygems the situation is even worse.  Most &#8216;best practices&#8217; recommend managing everything with gems.  This introduces a world of pain especially when you start installing things that are based on ruby but provide shell level commands (rackup, unicorn, etc).  Now you&#8217;ve got two package managers trying to determine the state of a system, but one of them only knows about one part of it.  It&#8217;s a mess.<span id="more-307"></span></p>
<p>Ruby development in general is moving very fast, most developers are working on 1.9 and likely 1.9.3.  Trying to stay on 1.8 means you may be stuck with libraries/gems/tools that don&#8217;t work as well as their 1.9 counterparts.  In addition you have to put up with constant complaints from the development side about why they have to run unfrozen caveman ruby and why can&#8217;t they use the latest tool/gem/whizzbang they want.  So now you roll up your sleeves and decide to upgrade your system ruby.  The &#8216;recommended&#8217; method for updating ruby is installing from source.  I love installing from source, I also love mowing my grass.  They are both mindless pursuits that I start and autonomously go through until I complete them.  There&#8217;s no shame in compiling and I don&#8217;t shy away from it, but it has its place.  That place is not on a production server.  It doesn&#8217;t scale, it introduces error and inconsistencies and isn&#8217;t reproducible.  I don&#8217;t want any of my production servers to even have a compiler on them if I can help it.  The next best alternative is rvm.  I love the concept of rvm (though not necessarily the implementation, I prefer rbenv there).  But if you tell me to use rvm on my production servers I&#8217;m going to laugh at you and ask you to come back when you have your big boy developer pants on.  Now I&#8217;m not only building ruby on every machine I have, I&#8217;m doing fancy shell tricks to determine my execution environment.  I&#8217;m also at the mercy of random files littered in directories for what libraries I can see, what binaries I&#8217;m going to use, etc.  How is this anything but a recipe for a long night with cold pizza and a bottle of scotch that ends with updating my resume?  RVM works great when it&#8217;s your environment on your laptop, but in my infrastructure it&#8217;s just not a viable solution.</p>
<p>What about packages you say.  Excellent question.  I&#8217;m a fan of packages, rpm in specific, but I have no objections to debs either (solaris sit down over there, you don&#8217;t have packages, you have tarballs there&#8217;s a difference).  I&#8217;m comfortable building packages, I&#8217;ll bust out a specfile to deploy 5 or so bash scripts cause it&#8217;s the right thing to do.  If your OS uses packages us it, as much as you can.  Not using your native package management system is like jumping out the second story window because you didn&#8217;t want to dent the carpet on the stairs.  Ruby packaging is ugly at least from the rpm side.  The 1.8 specfile won&#8217;t cleanly rebuild 1.9 and when you do get it to work, there are all sort of library issues abi compatibility problems and a host of other things.  Not all of this is ruby&#8217;s fault.  A fair amount of it lies with people distributing rpms of other things that use ruby but not following the correct dependency management techniques.  At the end of the day that doesn&#8217;t matter, building upgraded packages for ruby is non-trivial task.  It&#8217;s also a rabbit hole.  Rebuild ruby, well there&#8217;s 6 packages there (though in a single spec) as someone decided it was awesome to break each binary out into its own package.  Now rebuild rubygems.  Using anything OS level that depends on ruby, chances are good that spec writer locked the version to 1.8 so now you&#8217;re rebuilding that as well.  Don&#8217;t forget the random ruby C library extensions as well (ruby-mysql, ruby-shadow, etc).  At a certain point you wonder if it wouldn&#8217;t be easier to just maintain your own custom distro or pull your eyelids off with plyers.</p>
<p>Here&#8217;s where the real evilness starts to creep in.  You&#8217;ve now spent hours, days, weeks trying to work through technical debt and build a standard and repeatable environment to support development and are ready to pull your hair out.  The thought starts to creep in &#8216;Maybe it would be easier to run rvm, or build it on each box, how much extra work could it be&#8217;.  People don&#8217;t build crappy infrastructures intentionally, they make one small compromise after another until they are neck-deep in debt they have no idea how to pay off.</p>
<p>At this point the python folks are grinning from ear to ear (eggs and pip and the trouble they represent are another topic for discussion) because they&#8217;ve kinda moved past this.  For one python development benefits from not being as &#8216;trendy&#8217; as ruby/rails and the like.  They also benefit from the fact that redhat engineering, as well as ubuntu engineering are pretty heavy python shops.  They have a vested interest to make sure that python doesn&#8217;t suck at the OS level.</p>
<p>So where does that leave us?</p>
<ol>
<li>Build from source / use rvm (there&#8217;s no difference between the two other than shell magic) YUCK!</li>
<li>Package everything into rpms/debs (a ton of extra work, weird corner case breakage)</li>
<li>Something else</li>
</ol>
<p>Here&#8217;s my idea on something else, until the state of distro support of ruby is saner.</p>
<ul>
<li>package ruby into its own location (/opt/ruby/$version or something that makes you happy)</li>
<li>use bundle pack and bundle install &#8211;deployment</li>
</ul>
<p>Repackaging a language it&#8217;s own prefix is not my favorite plan but till I can sanely update ruby OS wide it&#8217;ll have to do.  You still are going to need to do PATH tricks or edit the shebangs on every script in order for things to work right, but this way we&#8217;re not installing ruby 17 times b/c we run 17 apps on a single machine.  I do not install gems here, with 1 exception.  I install bundler.  If you&#8217;re working with ruby or supporting ruby and you are not using bundler then you need to be shot (here yeller, here boy&#8230; that&#8217;s a good dog).</p>
<p>Once you start using bundler, use bundle pack.  This tells bundler to install gem dependencies in the vendor/cache directory of your application.  You should then put Gemfile.lock under revision control (or include it in your deployment packaging).  This will enable you to run bundle install &#8211;deployment on your production environment.  The &#8211;deployment flag tells bundler to avoid running gem install and use the vendor/cache directory.  This keeps all of your application gems &#8216;inside&#8217; your application.  Which means you avoid messes with wrongly &#8216;activated&#8217; gems, accidental version upgrades etc.  You do need to remember to run any commands under bundle exec (like bundle exec rake db:migrate) else you&#8217;ll start running into subtle errors, but the trade-off in sanity is worth it.</p>
<p>Hopefully as ruby adoption continues this state of affairs will get better.  Better OS packages are a start.  Standards around deployment like bundler are a must.  I&#8217;d really like to see a gem-&gt;rpm/deb integration rather than continued fractured directions but I&#8217;m not sure that&#8217;s much on anyone else&#8217;s radar.  It all (almost) makes me pine for the days of installing everything with CPAN.</p>
<br />Filed under: <a href='http://onastick.wordpress.com/category/ramblings/'>Ramblings</a>, <a href='http://onastick.wordpress.com/category/sysadminery/'>Sysadminery</a>, <a href='http://onastick.wordpress.com/category/technology/'>technology</a> Tagged: <a href='http://onastick.wordpress.com/tag/deployment/'>deployment</a>, <a href='http://onastick.wordpress.com/tag/development/'>development</a>, <a href='http://onastick.wordpress.com/tag/programming/'>Programming</a>, <a href='http://onastick.wordpress.com/tag/revision-control/'>Revision control</a>, <a href='http://onastick.wordpress.com/tag/ruby/'>ruby</a>, <a href='http://onastick.wordpress.com/tag/rubygem/'>RubyGem</a>, <a href='http://onastick.wordpress.com/tag/tools/'>Tools</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/307/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=307&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2011/11/05/the-horrible-state-of-ruby-in-a-production-environment/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>puppet and vim</title>
		<link>http://onastick.wordpress.com/2011/03/30/puppet-and-vim/</link>
		<comments>http://onastick.wordpress.com/2011/03/30/puppet-and-vim/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 16:54:00 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://onastick.wordpress.com/?p=299</guid>
		<description><![CDATA[I&#8217;ve been using vi/vim for nearly my entire professional life, and most of my computer life as well. I gave emacs an honest try for a couple of days a few years ago but just couldn&#8217;t grok the shortcuts and make it feel natural. Recently I overhauled my setup on my laptop and in specific [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=299&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using vi/vim for nearly my entire professional life, and most of my computer life as well.  I gave emacs an honest try for a couple of days a few years ago but just couldn&#8217;t grok the shortcuts and make it feel natural.  Recently I overhauled my setup on my laptop and in specific tuned to to what I generally spend a lot of development time on&#8230; puppet.<br />
<span id="more-299"></span><br />
First things first I turned my .vim directory into a git repo (published here http://github.com/stick/vimfiles).  This makes it pretty easy for me to keep track of what changes I made and why, till you spend a few years with it there&#8217;s a bit of black magic in how the more advanced parts of vim work.  So after I wholesale cleaned out my .vim directory I started essentially fresh.</p>
<p>First plugin I use is pathogen, it&#8217;s a must and the only plugin that actually resides in the normal places in vim&#8217;s rc directory.  Pathogen allows you to define a bundle directory (~/.vim/bundles by default) and will load plugins in whole from that tree.  That allows each plugin to have it&#8217;s own tree and you don&#8217;t get file collisions etc.  It also makes it super easy to enable or disable a plugin.</p>
<p>I won&#8217;t go into super detail on all the vim&#8217;ness that I&#8217;ve setup most of it is from this <a href="http://stevelosh.com/blog/2010/09/coming-home-to-vim/">great article</a>.  I&#8217;m not a pure developer so some of the things I don&#8217;t use but the plugins he recommends are spot on.</p>
<p>One of the core tenets in puppet is to not duplicate work, it even gets enforced to a certain degree with not being able to duplicate resources.  When you combine this the the recommended module structure and correct use of the autoloader and you will find yourself creating a lot of manifest files.  There are two things I use that help with this.  One is a template plugin, the other is snipmate.  The template plugin comes into play whenever I create a new file, I have a skeleton directory that contains stub for different filetypes.  When I edit a new file it reads in that template, interpolates a few tokens and inserts it into my new file buffer.  I always work on modules from the top of the module (makes moving easier and helps with the git side of things I think).  So in my ssh module when I do:</p>
<p><code>$ vi manifests/server.pp </code></p>
<p>I get a file that looks like:</p>
<div id="attachment_302" class="wp-caption alignright" style="width: 160px"><a href="http://onastick.files.wordpress.com/2011/03/new-manifest.png"><img class="size-thumbnail wp-image-302" title="new-manifest" src="http://onastick.files.wordpress.com/2011/03/new-manifest.png?w=150&#038;h=89" alt="Edit a new manifest file" width="150" height="89" /></a><p class="wp-caption-text">This file didn&#039;t exist prior to editing.</p></div>
<p>If you notice the header comment is mostly filled out, the class declaration is already set and a few other things.  How does this work?  Well the skeleton file has tokens in it that I have defined (called tags, which is a bit of an overload of the term).  That tag can be a simple string or you can use vi&#8217;s scripting language to a certain extent to figure things out.  In the case of the class declaration I know that I almost always work in the top dir of a module so I know what module I&#8217;m in from that. Then the autloader in puppet has very specific rules how how filenames translate to classes so I take advantage of that with a little substitute.  The template plugin I use is eteSkeleton, I liked how relatively simple it was, however I did have to fork it and fix a few things with it.  The original source is <a href="https://github.com/vim-scripts/eteSkeleton">here</a>, my fork is <a href="https://github.com/stick/eteSkeleton">here</a> and my specific tags file is <a href="https://github.com/stick/vimfiles/blob/master/skeleton/tags/eteSkeleton.tags">here</a> to see how I did the class logic.</p>
<p>I also use snipmate to create definitions, language constructs etc within manifests.  Snipmate lets you type if and get a completed if statement that you can tab through the various elements of.  Those familiar with TextMate will recognize it instantly.  My snippets file for puppet is <a href="https://github.com/stick/vimfiles/blob/master/snippets/puppet.snippets">here</a>, it was originally done by R.I. Pienaar but I modified it to match my personal syntax style etc.</p>
<p>Syntax highlighting is pretty simple, there&#8217;s a puppet.vim that&#8217;s included in the puppet source tree, it defines the groups and objects and how to highlight them, then you can control the colors through vim&#8217;s colorschemes.  I don&#8217;t change my colors from the default, I just tweak my terminal settings to brighten up some of the colors (dark blue on black specifically).</p>
<p>ftdetect/puppet.vim handles file detection of manifest files, there&#8217;s a lot of things that are keyed off of set filetype=puppet, this just matches *.pp.  There&#8217;s not really a case where I&#8217;m editing a manifest and it&#8217;s not a .pp so we don&#8217;t have to read lines or anything to determine filetype, if we did that would go here.  ftplugin/puppet.vim contains any filetype specific settings I want for puppet.</p>
<p><code>kp=pi</code> looks a little cryptic.  kp is shorthand for kewordprg (or keyword program).  This defines the program that vim will run when you press &#8216;K&#8217; (note the capital) in normal mode.  In stock vim if you try this on a word it will run man  (cword is vim-speak for word under cursor).  pi is actually shipped as part of puppet (at least it&#8217;s in the gem install) as an analog to ri (ruby documentation).  It acts exactly the same as puppet describe.  This means that in a manifest I can position the cursor on say an &#8216;exec&#8217; resource that I&#8217;m writing and hit &#8216;K&#8217; and it&#8217;ll shell out and run <code>pi exec</code> (puppet describe exec) and give me all the resource documentation for that version of puppet (assuming I&#8217;m on a box that has puppet installed).  This is great when I can&#8217;t remember the exact attribute on a resource or similar.  My only complaint is that pi doesn&#8217;t page when it returns a lot of text (see <code>pi file</code>) and it&#8217;s annoying to have to page up to start reading (I run 100% of the time in screen and have my pageup key mapped to copymode).  But wait I have a solution.  Vim always runs <code>&amp;kp </code> so I can&#8217;t really set kp to something with a pipe and pager in it.  If you try: <code>:set kp="pi  | less -F"</code> you will end up running: <code>pi exec |less -F exec</code>as kp always appends .  So in my .bashrc I define the following:</p>
<pre>function pi() {
  command pi "$@" | less -F
}</pre>
<p>This defines a local bash function called pi which calls pi with whatever arguments were passed and pipes it to less -F (-F only paging if there&#8217;s more than 1 screen of text).  The command construct in bash prevents a loop between the function and the actual command.  It also allows the path to be used rather than hardcoding <code>/usr/bin/pi</code> which would have the same net effect.  It&#8217;s a tad more portable.  Now in vim when I cursor over a resource and hit &#8216;K&#8217; I get nice puppet documentation without having to switch windows or anything.  Be aware that since it&#8217;s a locally defined function you have to set <code>set shellcmdflag=-ic </code> in your .vimrc else when vim shells out the function won&#8217;t be defined.  I could also make a shell command in my path somewhere and use that as that adding the &#8216;i&#8217; flag to the shell causes it to bg vim in certain circumstances as it&#8217;s an interactive shell now.</p>
<p>The surround plugin is great for throwing quotes or curlys around things, since puppet uses two different syntaxes for variables when they are quoted vs bare, I use that alot to wrap a variable in curlys.  The normal mapping (see surround&#8217;s documentation) to do that is: <code>ysiw}</code>.  Cryptic and hard to remember?  Yup.  Basically it&#8217;s &#8216;ys&#8217; (you surround); &#8216;iw&#8217; (inner word, :h text-objects will change your life), &#8216;}&#8217;.  The surround plugin uses the left brace to surround with spaces and the right brace to surround without.  I map this to <code>}</code> to make it easy.</p>
<p>NERD_Commenter (a very awesome plugin to do filetype/language specific comments) uses a dictionary for filetypes to define additional comment characters.</p>
<pre>let g:NERDCustomDelimiters = {
      \ 'puppet': { 'left': '#', 'leftAlt': '/*', 'rightAlt': '*/' }
      \ }</pre>
<p>This defines the comment character (and alternate comment character) for puppet filetypes.  Using NERD_Commenter you can switch between shell style and c-style comments.  Do things like visually select a block and comment it one swoop, and uncomment sections really easily.</p>
<p>Puppet resources use fat comma&#8217;s to specify parameters.  The style guide (and I tend to agree) states that all co-located fat commas should be aligned based on the longest parameter in the list.  Fixing that is tedious and annoying.  This is where the &#8216;Align&#8217; plugin comes in handy.  Align can do a million things to reformat text, but simply for this case I only use it for fat commas.   I want to select a block of text with visual select mode (greatest thing in vim ever btw).<br />
Then run <code>:Align =&gt;</code>.  This will align everything on those delimiters.  I have this mapped to = in my .vimrc.  I don&#8217;t use tabs so there might be additional settings to get it to align with tabs instead of spaces, but I think it honors expandtab and smarttab as needed.</p>
<p>I have ctags and taglist setup to integrate with puppet, but I&#8217;m finding myself not really using it much.  I tend to think in the autoloaders terms and just open a new window/etc to what I need to look up rather than use vim to jump back and forth.  If I could get it setup such that when I cursor over a statement like:<br />
<code>include ssh::server</code>and hit ] (which causes a taglookup); it would then take me to where class ssh::server was defined I would probably use it more, but since &#8216;::&#8217; isn&#8217;t a part of a word boundary that doesn&#8217;t work.  I got the ctags configuration from <a href="nasrat.livejournal.com/51482.html ">Nasrat</a> and it works great, I just haven&#8217;t really figured out how to integrate it into my coding-workflow.  If anyone has any more practical enhancements or advice leave them in the comments.</p>
<p>Syntax checking is a must.  I&#8217;ve written a couple of shell scripts to wrap around <code>puppet --parseonly</code> to check a whole module, do erb checking etc etc.  Then I found syntastic.  Syntastic is simply put&#8230; fan-fucking-tastic.  It supports doing syntax checking based on filetype so you can change things per language.  Vim has always had the &#8216;make&#8217; and &#8216;makeprg&#8217; settings but syntastic wraps that up in a nice package and gives you a way to extend it.  It also provides a function you can put in your statusline to alert you when you open (or save) a file that the file has syntax errors (and where they are).</p>
<p>A quick aside about the statusline.  I used to hate it, this ugly white line at the bottom that broke up the visual and flow of the text and really didn&#8217;t contain anything useful.  Then I discovered how to change it and fill it with all sorts of useful information.  All of my statusline settings (with the exception of setting laststatus=2 in .vimrc) are found in <a href="https://github.com/stick/vimfiles/blob/master/plugin/statusline.vim">statusline.vim</a>.</p>
<p>The code found in <a href="https://github.com/stick/vimfiles/blob/master/syntax_checkers/puppet.vim">syntax_checkers/puppet.vim</a> defines the proper makeprg and does the other syntastic setup.  The hard part is getting the errorformat set correctly.  Vim often times bails back home to it&#8217;s &#8216;C&#8217; roots and this is one of those times.  errorformat (:h errorformat for in depth information) is a pattern that will be matched against the output of the makeprg (in this case puppet apply &#8211;parseonly &#8230; ).  The difficulty is it&#8217;s not a regular expression, it&#8217;s a scanf expression.  scanf is an older c routine for matching single or multiline text and it&#8217;s a bit cryptic and confusing.  Give me a regex anyday, you combine that with how vim needs things escaped and it was a chore.  But it&#8217;s done now and hopefully I&#8217;ve saved you some time.  Puppets parse-only option it&#8217;s terribly smart.  Once it finds a single error it will stop parsing.  I talked to Luke about this and it&#8217;s a limitation of the DSL in ruby.  The parser can&#8217;t really continue once it finds and error so it doesn&#8217;t have any way to report on all the errors.  The net result is that if you sit down and bang out a manifest really fast then syntax check it, you&#8217;ll get the first error, fix it, save see the second, etc etc etc.  Still nicer than having to quit, run puppet, edit, fix, and repeat.  Be aware that forcing a syntax check each time the buffer is opened does slow vim down a bit (well not really vim, it&#8217;s just waiting on puppet), so if you notice it and it bothers you (it doesn&#8217;t me) look at syntastic documentation on how to disable it and only turn it on when you want it.  I&#8217;m toying around with seeing if I can get syntastic to check against running puppet in noop mode to catch things like duplicate definitions and other things that parser doesn&#8217;t deal with, but there&#8217;s a lot to ignore and filter through and noop mode generates a lot of output since it&#8217;s not really changing anything.  I&#8217;m also not sure if it&#8217;s all that useful at that phase, I generally do a lot of sandbox and vm testing anyway which I would still have to do.  I&#8217;m sure if someone wanted to write a specific parser for manifests that was smarter than parseonly but friendlier than noop there would be beer and scotches all around, but I tend to think most of us are more interested in writing actual manifests than something to check manifests.</p>
<p>That&#8217;s all of my puppet specific vim setup, my entire vim tree is online at http://github.com/stick/vimfiles and is mostly documented as to what various things do.  All the credit for the various plugins goes to their authors, the vim community is really good, just spend a bit getting to know vim before you jump in.</p>
<p>Happy puppeteering!</p>
<br />Filed under: <a href='http://onastick.wordpress.com/category/ramblings/'>Ramblings</a>, <a href='http://onastick.wordpress.com/category/sysadminery/'>Sysadminery</a>, <a href='http://onastick.wordpress.com/category/technology/'>technology</a> Tagged: <a href='http://onastick.wordpress.com/tag/coding/'>coding</a>, <a href='http://onastick.wordpress.com/tag/development/'>development</a>, <a href='http://onastick.wordpress.com/tag/editors/'>editors</a>, <a href='http://onastick.wordpress.com/tag/git/'>git</a>, <a href='http://onastick.wordpress.com/tag/puppet/'>puppet</a>, <a href='http://onastick.wordpress.com/tag/textmate/'>textmate</a>, <a href='http://onastick.wordpress.com/tag/vim/'>vim</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/299/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/299/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/299/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=299&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2011/03/30/puppet-and-vim/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>

		<media:content url="http://onastick.files.wordpress.com/2011/03/new-manifest.png?w=150" medium="image">
			<media:title type="html">new-manifest</media:title>
		</media:content>
	</item>
		<item>
		<title>Password Manager for iPhone</title>
		<link>http://onastick.wordpress.com/2009/03/23/password-manager-for-iphone/</link>
		<comments>http://onastick.wordpress.com/2009/03/23/password-manager-for-iphone/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 03:01:05 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[passwords]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/2009/03/23/password-manager-for-iphone/</guid>
		<description><![CDATA[I&#8217;m on the hunt for a good password manager for the iPhone. But there&#8217;s a slight catch. I&#8217;m looking for something that works with fedora. I&#8217;d like to be able to sync it locally as well. There seem to be couple of things that will sync &#8220;to the cloud&#8221; but that seems to be a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=201&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m on the hunt for a good password manager for the iPhone. But there&#8217;s a slight catch. I&#8217;m looking for something that works with fedora. I&#8217;d like to be able to sync it locally as well. There seem to be couple of things that will sync &#8220;to the cloud&#8221; but that seems to be a horrible idea for passwords.</p>
<p>Anyone have suggestions?</p>
<br />Posted in Ramblings, Sysadminery, technology Tagged: fedora, iphone, passwords <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=201&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2009/03/23/password-manager-for-iphone/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>When security takes a backseat to process&#8230;</title>
		<link>http://onastick.wordpress.com/2009/02/16/when-security-takes-a-backseat-to-process/</link>
		<comments>http://onastick.wordpress.com/2009/02/16/when-security-takes-a-backseat-to-process/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 15:54:16 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[itil]]></category>
		<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/?p=198</guid>
		<description><![CDATA[We are currently going through an ITIL implementation.  It&#8217;s had it&#8217;s ups and downs and philosophically I don&#8217;t really believe in it (certainly not in our implementation), but it&#8217;s had a few successes and a few failures.  Without droning too much about it, to make any &#8216;production&#8217; change you have to file an RFC that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=198&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We are currently going through an ITIL implementation.  It&#8217;s had it&#8217;s ups and downs and philosophically I don&#8217;t really believe in it (certainly not in our implementation), but it&#8217;s had a few successes and a few failures.  Without droning too much about it, to make any &#8216;production&#8217; change you have to file an RFC that gets reviewed by a management team.  There is a relatively recent <a href="http://isc.sans.org/diary.html?storyid=5713" target="_blank">DNS attack</a> that involves using root zone recursion to DOS a target server.  We&#8217;re vulnerable to being used in this manner.  It really doesn&#8217;t affect us much  as that our servers handle the requests fine, but we&#8217;re assisting in a DDOS and that&#8217;s not good.  For us the fix is pretty straight forward, because of some historical decisions we have to allow recursion for certain ips, so I need to segment things off into a tighter view and eliminate recursion there.  This is a  pretty straight forward change and one that I would do without a second thought (after testing).  Due to our current climate of process I have to file an RFC, which is fine, I&#8217;m not real happy about it but I&#8217;ll live.</p>
<p>However my RFC was denied not because of any technical reason, not because of any concern over the technology, the implementation, or the timing.  It was denied because I didn&#8217;t put the correct information into the details page and because my dates were wrong.  I&#8217;m all for doing process right (when it makes sense), but does it make sense to derail a security fix for 4 days because the form was incorrect?  Especially when there exists a forum in which you can be asked to clarify anything regarding your RFC.</p>
<p>Now when security takes a backseat to process, your organization has truly begun the decent to failure.  This may indeed be the straw&#8230;</p>
<br />Posted in Sysadminery Tagged: itil, process <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/198/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=198&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2009/02/16/when-security-takes-a-backseat-to-process/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>More posts and more Sysadminery</title>
		<link>http://onastick.wordpress.com/2008/12/23/more-posts-and-more-sysadminery/</link>
		<comments>http://onastick.wordpress.com/2008/12/23/more-posts-and-more-sysadminery/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 14:52:40 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/?p=174</guid>
		<description><![CDATA[I&#8217;m trying to make a concerted effort to first of all blog a little more, and secondly blog more about sysadmin type stuff.  Hopefully that&#8217;ll give me a little bit more direction. Posted in Ramblings, Sysadminery Tagged: sysadmin<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=174&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m trying to make a concerted effort to first of all blog a little more, and secondly blog more about sysadmin type stuff.  Hopefully that&#8217;ll give me a little bit more direction.</p>
<br />Posted in Ramblings, Sysadminery Tagged: sysadmin <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/174/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=174&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2008/12/23/more-posts-and-more-sysadminery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>Fighting with SAN</title>
		<link>http://onastick.wordpress.com/2008/12/23/fighting-with-san/</link>
		<comments>http://onastick.wordpress.com/2008/12/23/fighting-with-san/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 05:39:45 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netapp]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[rhel5]]></category>
		<category><![CDATA[san]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/?p=171</guid>
		<description><![CDATA[We&#8217;ve been a big NAS shop for a number of years, actually well before I come on board.  We are starting to use SAN more and more nowadays.  We have a much more stable SAN fabric (the network side of fiber channel storage for those of you keeping score at home).  So I spend several [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=171&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been a big NAS shop for a number of years, actually well before I come on board.  We are starting to use SAN more and more nowadays.  We have a much more stable SAN fabric (the network side of fiber channel storage for those of you keeping score at home).  So I spend several days before the break fighting with various SAN issues.  Most of them were my lack of particular experience with our SAN implementation as well as host level tools.  The pain of SAN comes largely from the host end.  Your SAN device (even in our case with NetAPP) is probably pretty good at doing it&#8217;s end and is well documented.  But on the linux side SAN is very vendor specific, which always leads to problems.  For example if you are using an EMC you have to get supported HBAs then in some cases run a custom kernel to support that HBA and then you probably end up needed vendor specific tools for handling things.  In my setup I don&#8217;t need a custom kernel, but we do have to support a small vendor package of tools.  NetApp is actually pretty good when it comes linux supoprt, they package RPMs in most cases and stay current with versions as far as support.</p>
<p><span id="more-171"></span>Several of the things I played with were adding a lun to a machine and getting it to show up without rebooting.  Translating docs gleaned from the web to my configuration was a bit tough at the beginning because we have a highly redundant fabric.  That meaning we have 2 HBAs in each host each with 2 fiber paths.  What this means is that when I get luns to show up I see them 4 times for each lun.  Apparently most people that write about their SAN experiences do it with a single path to their storage device through the fabric.   I also went through the rigamarole of removing a lun from a host (again without rebooting).  All in all it was pretty clean, a series of echo&#8217;s to the /sys subsystem, not nearly as ugly as adding and removing actual scsi devices.  It was also completely non-disruptive to other luns and overall performance.</p>
<p>There&#8217;s been quite a bit of debate among the other SAs at work about how we should handle luns at the host level.  Originally the thought was to add LVM on top of the LUN (which with multipath is kinda a bear) then create the filesystem on top of LVM.  The thought was originally that this would enable us to grow and shrink as needed and give us a similiar flexibility to the NFS volumes we are so used to dealing with.  Turns out shrinking is still iffy.  I&#8217;ve tried it twice now and had catestrophic failures both times.  The filer seems to handle it fine, but the host just flat out fails to see it as a valid filesystem once the lun gets smaller.</p>
<p>With multipath configured correctly what we see with an fdisk -l is 5 new &#8216;disks&#8217;.  sdX &#8211; sd{X+4} and dm-X.  So depending on how many existing scsi devices (including other luns) we have sde,f,g,h and dm-0 (assuing a, b, c already existing and no other san luns).  What&#8217;s a little confusing is that each of these devices is the same disk, you don&#8217;t want to use the sdX devices for anything (unless it&#8217;s a onetime operation) in case you lose a path.  So you do everything to the dm-X device created by multipath.  The other confusing thing is that while these are &#8216;disks&#8217; they also are not.  You can create partitions on them but you don&#8217;t really need to, so it kinda confuses your brain in what you are used to dealing with.</p>
<p>So the original plan with LVM was to create a partition consisting of the entire disk, add it as a PV, create a volume group, then a LV on the volume group of the whole size.  It struck several of us that this really was overkill.  Where LVM shines is when you have lots of descrete storage objects and you want to group them all together.  Logically this &#8216;thing&#8217; is a single lun where all the physical abstraction is already done (with about 4 levels of abstraction in the case of NetApp).  The other alternative, which I ended up doing for this particular implementation, was to just create a filesystem right on dm-0.  I didn&#8217;t create a partition, didn&#8217;t do LVM, just mkfs.ext3 /dev/dm-0.  Worked like a charm, no wasted space, very simple.</p>
<p>There is a gotcha though.  Multipath has the annoying habit of renaming the multi-disk device (dm-X) when the host reboots and it encounters additional luns.  So if you add a lun to a machine that already has one then reboot it&#8217;s possible, nigh on likely, that they will swap dm-1 and dm-0 to the opposite of what you expect.  This is pretty annoying from a mounting standpoint.  This is one potential winning point for LVM, since the LVM data is written to the disk itself you can have a consistent name which to use in fstab etc.  But all that overhead just for a consistent name?  Am I really getting anything else out of LVM in this scenerio?</p>
<p>Enter ext2/3 labels.  Most SAs I know don&#8217;t like labels because if you do things like label a disk &#8216;/&#8217; and try to put it in another machine for recover purposes, you probably won&#8217;t get the disk you expect (it&#8217;ll depend on bus order).  However labels give us a way to consistently name a dm device regardless of what multipath wants to call it.  This also lets me give meaningful symbolic names to SAN disks that may move hosts (oracle volumes is their current use, so there are 2, 1 for primary and 1 for standby).  So I use e2label /dev/dm-0 FOO to label my san disk.  Then in fstab I use LABEL=FOO. An interesting side effect is that df output shows the uuid of the disk rather than it&#8217;s multipath name, but other than that it seems to work.</p>
<p>Next I need so spend a bunch of time with a non-critical volume and figure out all the ins and outs of growing and (maybe) shrinking the fileystem.  All of the above work was done on a RHEL5 system (64bit), my feeling is that all bets are off when it comes to RHEL4 and LVM might be a very real hard requirement.  I also wonder if multipath is the right way to go.  Would it be possible to use LVM to create a fault tolerant storage device?</p>
<br />Posted in Sysadminery Tagged: linux, netapp, redhat, rhel5, san, sysadmin <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=171&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2008/12/23/fighting-with-san/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
		<item>
		<title>LISA &#039;08 Recap</title>
		<link>http://onastick.wordpress.com/2008/11/22/lisa-recap/</link>
		<comments>http://onastick.wordpress.com/2008/11/22/lisa-recap/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 22:35:42 +0000</pubDate>
		<dc:creator>stick</dc:creator>
				<category><![CDATA[Sysadminery]]></category>
		<category><![CDATA[california]]></category>
		<category><![CDATA[drinking]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[lisa08]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://www.miscellaneous.net/?p=152</guid>
		<description><![CDATA[Recently I just got back from LISA (Large Install System Administrators) Conference in San Diego.  Overall I really enjoy this conference.  My employer generally doesn&#8217;t spend very much on conferences, at least not for people in my position, so it&#8217;s nice that I get to go to this one.  There are very few Sysadmin specific [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=152&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I just got back from LISA (Large Install System Administrators) Conference in San Diego.  Overall I really enjoy this conference.  My employer generally doesn&#8217;t spend very much on conferences, at least not for people in my position, so it&#8217;s nice that I get to go to this one.  There are very few Sysadmin specific conferences out there.  Velocity seems to have some potential despite it being very Web (2.0) centric.  I haven&#8217;t been to Velocity so I really can&#8217;t comment.</p>
<p><span id="more-152"></span></p>
<p>This was my second trip to LISA, I went last year in Dallas.  This year was definatly better.  It being in San Diego meant not only the the weather was fantastic, but there was also lots to do outside of the conference.  I think that particular locale made it easier for people on the west coast to come.  For those that haven&#8217;t been, LISA consists on basically 2 &#8216;tracks&#8217;, which you can mix and match.  The technical sessions, which are later in the week and the training sessions, which run the entire week long (up to 2 per day).  This year I took a full week of training.</p>
<p>All in all the training is good.  There&#8217;s a bit of a trick to it.  You have to take classes on things that you don&#8217;t know anything about because they tend not to be very advanced.  Also from year to year the training doesn&#8217;t seem to improve much, many of the instructors are using their same slides from the previous year (or further back).  The Technical sessions are more like 2 hour lectures on a particular topic.  They are not geared toward training but more toward presenting.  I&#8217;ve never found them that interesting.</p>
<p>By far where LISA wins out is what&#8217;s called the &#8216;Hallway Track&#8217;.  This is basically the hobnobbing in the halls with other SAs and going out to dinner and all the conversations that occur as a result of that.  Each year I&#8217;ve found that amazingly useful.  Most SAs operate in a bit of a vacum, they may have a small (or large) team, but there&#8217;s a heirarchy there.  If they are in a solo shop they don&#8217;t usually have someone to bounce ideas off of.  Even if they do company size, budget, etc limit the focus.  The people you meet with at LISA cover all sorts of areas from the large financial sector, to academia, to startups.  It&#8217;s those different perspectives that are really valuable and why I go back each year.</p>
<p>I am however disappointed that LISA has been shrinking a bit, they need to improve their training and try to attract different groups of SAs.  I think alot of small shop SAs don&#8217;t come to LISA because it has this air of being only for really large installs.  If you are serious about your craft as an SA you hope to one day be in a large install, either by growing the one you have or moving into one.  I think it&#8217;s important for small SAs to attend a conference like this to learn about techniques they could implement before they get too big.</p>
<p>Another point of disappoitment is with the vendors.  As an employee for what easily can be described as a vendor we don&#8217;t have a presence at LISA (except as attendees).  There were probably only 25 vendors this year and most of them were in the SAN space.  SUN was there, but they didn&#8217;t really seem into promoting their product.  FreeBSD was there as well, but they are kinda preaching to the choir with their userbase if you ask me.  Fedora had no presence there, Red Hat had nothing.  Where were all the security product vendors?  Where were the groupware vendors?  Splunk always shows up and does a good job.  In fact I started using Splunk last year after talking with their sales guys at LISA &#8217;07. Alot of people at LISA are either buying or making the technical recommendation and indirectly buying the products that their companies will use.  Reductive Labs personally has LISA to thank for at least one contract.  I wouldn&#8217;t have bought a support contract with them if I hadn&#8217;t met Luke and had some really good discussions with him.</p>
<p>The after hours stuff at LISA is also excellent.  They have BoFs (Birds of a Feather) sessions about a wide range of topics.  Anyone can run a BoF, they are meant to be informal roundtable discussions about a particular topic.  They often stray off the technical, there was a hockey bof last year, and their&#8217;s usually a semi-secret scotch bof every year as well.</p>
<p>Next year LISA will be in Baltimore.  I will likely go because it&#8217;s so close and I get alot out if each year.  Even when I don&#8217;t learn alot of training, being around a bunch of other SAs and spending a week discussing methods and other aspects of SA always invigorates me and gets me all fired up for when I return to work.  It&#8217;s kinda like a career reset.  When your job has you beaten down and you&#8217;re burned out sometimes a vacation helps release that pent of stress.  Sometimes however getting away from work but staying technical and learning about other ways of doing your job can be an even bigger boost.</p>
<br />Posted in Sysadminery Tagged: california, drinking, fedora, freebsd, lisa08, redhat, sun, sysadmin <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/onastick.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/onastick.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/onastick.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/onastick.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/onastick.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/onastick.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/onastick.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/onastick.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/onastick.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/onastick.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/onastick.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/onastick.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/onastick.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/onastick.wordpress.com/152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=onastick.wordpress.com&amp;blog=19419720&amp;post=152&amp;subd=onastick&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://onastick.wordpress.com/2008/11/22/lisa-recap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/10dcfb54c464136b8be684b80ddd3515?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">stickm13</media:title>
		</media:content>
	</item>
	</channel>
</rss>
