<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><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:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Nickapedia</title>
	
	<link>http://nickapedia.com</link>
	<description>abstract your problems away</description>
	<lastBuildDate>Tue, 24 Jan 2012 15:06:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Nickapedia" /><feedburner:info uri="nickapedia" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Nickapedia</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Top Blog Voting : Cast Your Vote</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/2eaZLsOn4VI/</link>
		<comments>http://nickapedia.com/2012/01/24/top-blog-voting-cast-your-vote/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 14:58:13 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Life/Work]]></category>
		<category><![CDATA[Slider_Featured]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[top 25 vmware blogs]]></category>
		<category><![CDATA[top blogs]]></category>
		<category><![CDATA[top posts]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=2000</guid>
		<description><![CDATA[Once again the time has come in the year when vSphere-land.com does their voting for Top VMware/Virtualization blogs. I am a firm believer in voting for who you love so head over and take the quick couple minutes to choice your favorites. If something I have done on Nickapedia.com has been cool, useful, or inspiring [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nickapedia.com/wp-content/uploads/2012/01/vote-for-me-e1303746179672.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px; margin: 5px;" title="vote-for-me-e1303746179672" src="http://nickapedia.com/wp-content/uploads/2012/01/vote-for-me-e1303746179672_thumb.jpg" alt="vote-for-me-e1303746179672" width="228" height="240" align="right" border="0" /></a>Once again the time has come in the year when vSphere-land.com does their voting for <a href="http://www.surveygizmo.com/s3/786135/Top-VMware-virtualization-blogs-2012" target="_blank">Top VMware/Virtualization blogs.</a></p>
<p>I am a firm believer in voting for who you love so head over and take the <a href="http://www.surveygizmo.com/s3/786135/Top-VMware-virtualization-blogs-2012" target="_blank">quick couple minutes to choice your favorites</a>. If something I have done on <a href="http://nickapedia.com" target="_blank">Nickapedia.com</a> has been cool, useful, or inspiring then showing me through a vote would be awesome.</p>
<p>Here are some of the most popular posts I have done in the last year:</p>
<ul>
<li><a href="http://nickapedia.com/2010/10/04/play-it-again-sam-celerra-uber-v3-2/" target="_blank">Celerra VSA UBER 3.2</a></li>
<li><a href="http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/" target="_blank">UBERAlign</a> – VMware Alignment</li>
<li><a href="http://nickapedia.com/2011/02/16/virtual-selection-cloud-constructs-for-rapid-prototypingtesting/" target="_blank">Virtual Selection</a></li>
<li><a href="http://nickapedia.com/2011/01/15/fistful-of-cloud-interactive-cloud-demo/" target="_blank">Fistful of Cloud</a> (vSphere + Kinect)</li>
<li><a href="http://nickapedia.com/2010/11/01/ubershell-ninja-scripting/" target="_blank">UBERShell</a> (<a href="http://technet.microsoft.com/en-us/scriptcenter/powershell.aspx" target="_blank">Powershell</a> for Celerra)</li>
<li><a href="http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/" target="_blank">UBER Network Fuser</a> (Mac OSX tool for VMware Fusion)</li>
</ul>
<p>But, even if I don’t make your list. Vote anyways – this is a great way to provide feedback to bloggers.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2010/09/13/selfish-self-promotion-vote-for-me/" rel="bookmark" class="crp_title">Selfish Self Promotion : Vote For Me!</a></li><li><a href="http://nickapedia.com/2011/05/16/vmworld-2011-one-lonely-session/" rel="bookmark" class="crp_title">VMworld 2011 : One lonely session</a></li><li><a href="http://nickapedia.com/2010/12/28/2010-close-2011-open/" rel="bookmark" class="crp_title">2010.Close; 2011.Open;</a></li><li><a href="http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/" rel="bookmark" class="crp_title">Breaking new ground : An UBER Tool for the Mac</a></li><li><a href="http://nickapedia.com/2012/01/04/the-next-iteration-what-i-learned-what-you-can-expect/" rel="bookmark" class="crp_title">The next iteration : What I learned &#038; what you can expect</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/2eaZLsOn4VI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2012/01/24/top-blog-voting-cast-your-vote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2012/01/24/top-blog-voting-cast-your-vote/</feedburner:origLink></item>
		<item>
		<title>Quick Update : UNF version 1.701</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/N4e9SNLMvqU/</link>
		<comments>http://nickapedia.com/2012/01/11/quick-update-unf-version-1-701/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 21:42:45 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Life/Work]]></category>
		<category><![CDATA[Manic Innovation Challenge]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Custom networks]]></category>
		<category><![CDATA[Mac tools]]></category>
		<category><![CDATA[OSX Lion]]></category>
		<category><![CDATA[UBER]]></category>
		<category><![CDATA[UBER Tool]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[VMware Fusion]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1988</guid>
		<description><![CDATA[I got some feedback that some users running Snow Leopard were crashing every time they started UNF. Turns out there was a method being used on a Cocoa control that required changes made in the 10.7 SDK. I rewrote the function to not need the method and have released a new version (version 1 build [...]]]></description>
			<content:encoded><![CDATA[<p>I got some feedback that some users running Snow Leopard were crashing every time they started UNF.</p>
<p>Turns out there was a method being used on a Cocoa control that required changes made in the 10.7 SDK. I rewrote the function to not need the method and have released a new version (version 1 build 701). All download links are updated but you can download the new version here:</p>
<p><a href="http://ftp.vspecialists.com/public/Tools/ubernetfuser_1.701.dmg" target="_blank">UBER Network Fuser 1.701 Download</a></p>
<p>Lion users don&#8217;t need to update.</p>
<p>Thanks,</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/" rel="bookmark" class="crp_title">Breaking new ground : An UBER Tool for the Mac</a></li><li><a href="http://nickapedia.com/2011/04/08/new-uber-model-uber-vnx-nfs-v1/" rel="bookmark" class="crp_title">New UBER Model : UBER VNX (NFS) v1</a></li><li><a href="http://nickapedia.com/2010/10/04/play-it-again-sam-celerra-uber-v3-2/" rel="bookmark" class="crp_title">Play it again, Sam: Celerra UBER v3.2</a></li><li><a href="http://nickapedia.com/2010/10/21/slap-a-gui-on-it-new-emc-uber-dhsm-tool/" rel="bookmark" class="crp_title">Slap a GUI on it : New EMC UBER DHSM Tool</a></li><li><a href="http://nickapedia.com/2010/09/30/smoothed-edges-celerra-uber-vsa-update-v3-1/" rel="bookmark" class="crp_title">Smoothed Edges : Celerra UBER VSA Update v3.1</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/N4e9SNLMvqU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2012/01/11/quick-update-unf-version-1-701/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2012/01/11/quick-update-unf-version-1-701/</feedburner:origLink></item>
		<item>
		<title>Breaking new ground : An UBER Tool for the Mac</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/rIMBqPWtwJw/</link>
		<comments>http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 15:15:53 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Life/Work]]></category>
		<category><![CDATA[Manic Innovation Challenge]]></category>
		<category><![CDATA[Slider_Featured]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[Custom networks]]></category>
		<category><![CDATA[Mac tools]]></category>
		<category><![CDATA[OSX Lion]]></category>
		<category><![CDATA[UBER]]></category>
		<category><![CDATA[UBER Tool]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[VMware Fusion]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1980</guid>
		<description><![CDATA[A few months ago I bought my first Mac. I had been a hardcore Windows workstation kind of guy. And being a C# coder in the late hours of the night it was all I needed. But, after seeing my former teammates (vSpecs) using their sexy Mac Books I finally made the switch. I picked [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nickapedia.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-10-at-12.45.45-AM.png"><img style="background-image: none; margin: 15px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="Screen Shot 2012-01-10 at 12.45.45 AM" src="http://nickapedia.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-10-at-12.45.45-AM_thumb.png" alt="Screen Shot 2012-01-10 at 12.45.45 AM" width="244" height="192" align="right" border="0" /></a>A few months ago I bought my first Mac. I had been a hardcore Windows workstation kind of guy. And being a C# coder in the late hours of the night it was all I needed. But, after seeing my former teammates (vSpecs) using their sexy Mac Books I finally made the switch. I picked up a Mac Book Air and from the minute I started using it, fell in love with everything about it.</p>
<p>Because of this switch I have come to learn the things that the Mac (and Lion) do really well with some things while Windows does better with others. For almost all of my UBER projects I use my beefy Windows workstation running VMware Workstation to setup my lab/dev environments.</p>
<p>But, recently I started trying to move over to my Mac and using VMware Fusion to build lab virtual machines for developing. And to my surprise I found that things in the Fusion world aren&#8217;t quite the same as for Workstation. Namely, the networking options are rather limited. By default you only get the choices of three networks 1) DHCP w/ NAT  2) DHCP and 3) Bridging to a physical interface. For me that meant that I couldn&#8217;t get a network without DHCP (important if you are testing it) or create multiple isolated networks like I could on Workstation.</p>
<p>So I went digging and found that at one point someone has written some slick scripts to allow for custom multi-network setup but it stopped being updated after Fusion 2. I also found that VMware has some KB articles on how to hack your way to adding networks. But neither was very easy to do or dealt with modifying the VM&#8217;s well.</p>
<p>So I decided to fill this gap myself. Over the Christmas holiday I worked furiously to make this and now I am proud to present the next UBER release and my first project in the Manic Innovation Challenge: UBER Network Fuser (UNF)</p>
<p>UNF is a native Mac OSX application supported on Snow Leopard and Lion that allows you to add additional networks to VMware Fusion, customize their settings, and easily change network selection for any Fusion VM&#8217;s. I designed it to be simple to use and be similiar to how VMware Workstation network editor works.</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-10-at-12.46.01-AM.png"><img style="background-image: none; margin: 10px 40px 10px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="Screen Shot 2012-01-10 at 12.46.01 AM" src="http://nickapedia.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-10-at-12.46.01-AM_thumb.png" alt="Screen Shot 2012-01-10 at 12.46.01 AM" width="240" height="190" align="left" border="0" /></a>Here is the full feature list:</p>
<ol>
<li>Allows up to 10 additional custom networks (total of 12)</li>
<li>You can enable/disable DHCP, NAT, virtual host adaptor on any network</li>
<li>Protects and provides rollback of default Fusion settings</li>
<li>Allows dynamic changes of network membership with Fusion VM&#8217;s</li>
<li>You may alias networks with custom names (even Workstation doesn&#8217;t do this)</li>
<li>Tested and confirmed that VLAN tagging works as expected within private networks</li>
<li>Saves configuration per user (names, paths, etc)</li>
<li>Integrates with Apple&#8217;s Security framework for elevated privileges when needed</li>
</ol>
<p>&nbsp;</p>
<p>I created a video to demonstrate how it works below:</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:7e9d5552-3f65-410e-ac4f-4522cbbc7f74" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<div><object width="601" height="338" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=34827507&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="601" height="338" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=34827507&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></div>
</div>
<p>And to download (free as always) use the link below:</p>
<p><a href="http://ftp.vspecialists.com/public/Tools/ubernetfuser_1.701.dmg" target="_blank">Download UBER Network Fuser 1.0 – DMG for Snow Leopard &amp; Lion</a> (Updated link to new 1.701 version)</p>
<p>&nbsp;</p>
<p>This is my first release in the <a href="http://nickapedia.com/category/manic-innovation-challenge/" target="_blank">Manic Innovation Challenge</a>. It is written in Objective C &amp; C and uses the Cocoa and Security frameworks. Challenge-wise it was definitely an experience learning and writing an app in Objective C in  few weeks. But, it was crazy fun and I have all kinds of cool ideas for the Mac now.</p>
<p>Also, this marks post #100 for me in the 2.3 years I have been running <a href="http://nickapedia.com" target="_blank">Nickapedia.com</a>. Being that it is also my birthday I am considering today a good day.</p>
<p>As always please test and play with it and let me know with some comments below.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2010/12/27/behind-the-theme-music-chads-world/" rel="bookmark" class="crp_title">Behind the theme music : Chad’s World</a></li><li><a href="http://nickapedia.com/2010/12/27/creating-a-vapp-uber-uim/" rel="bookmark" class="crp_title">Creating a vApp : UBER UIM</a></li><li><a href="http://nickapedia.com/2012/01/04/the-next-iteration-what-i-learned-what-you-can-expect/" rel="bookmark" class="crp_title">The next iteration : What I learned &#038; what you can expect</a></li><li><a href="http://nickapedia.com/2011/03/18/excited-about-emcworld-2011-show-it-off/" rel="bookmark" class="crp_title">Excited about EMCWorld 2011? : Show it off</a></li><li><a href="http://nickapedia.com/2011/02/22/being-a-vspec-one-year-under-the-belt/" rel="bookmark" class="crp_title">Being a vSpec : One year under the belt</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/rIMBqPWtwJw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/</feedburner:origLink></item>
		<item>
		<title>The next iteration : What I learned &amp; what you can expect</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/EZlKFdIOcdk/</link>
		<comments>http://nickapedia.com/2012/01/04/the-next-iteration-what-i-learned-what-you-can-expect/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 15:35:11 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Life/Work]]></category>
		<category><![CDATA[Manic Innovation Challenge]]></category>
		<category><![CDATA[commentary]]></category>
		<category><![CDATA[Goals]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1965</guid>
		<description><![CDATA[Honestly I think the only reason I started this blog what as a holding spot for crazy things I wrote/built in my spare time. I never thought people would actually pay attention at first. Now I look back and realize that while I have stayed pretty true to that original course in some aspects, things [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nickapedia.com/wp-content/uploads/2012/01/Drive.jpg"><img style="background-image: none; margin: 10px 10px 10px 15px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="Drive" src="http://nickapedia.com/wp-content/uploads/2012/01/Drive_thumb.jpg" alt="Drive" width="240" height="320" align="right" border="0" /></a>Honestly I think the only reason I started this blog what as a holding spot for crazy things I wrote/built in my spare time. I never thought people would actually pay attention at first. Now I look back and realize that while I have stayed pretty true to that original course in some aspects, things have evolved a bit also. Going from customer, to vendor as part of sales org, to being part of engineering/R&amp;D product development has changed my perspective and interests.</p>
<p>And honestly I don&#8217;t know where I will end up in 2012. But I have made myself a goal for self development that I am hoping will both challenge myself and encourage others to challenge themselves.</p>
<p>I am going to be taking on (what I call) the <strong>Manic Innovation Challenge</strong> in 2012. In simple terms and with simple rules to follow I will attempt to create something unique and creative using as wide a variety of frameworks, codebases, and presentation methods as possible. My goal is to release one example each month with a stretch goal of one example every two weeks.</p>
<p>All this work will be in my spare time unless it is also an EMC supported example. I have a couple crazy ideas kicking around in my head and one midway to completion.</p>
<p>I will also be starting a new series of commentary posts focused on what I see are cool trends in modern information technology at a very geek-centric level. My goal on these is brevity and something to hook you into exploring more on a topic.</p>
<p>Ultimately this blog has been a massive outlet for my personal development and I want to extend that in 2012 even further. Thanks for reading this so far and hopefully I can find a way to keep your interest this coming year.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/" rel="bookmark" class="crp_title">Breaking new ground : An UBER Tool for the Mac</a></li><li><a href="http://nickapedia.com/2012/01/24/top-blog-voting-cast-your-vote/" rel="bookmark" class="crp_title">Top Blog Voting : Cast Your Vote</a></li><li><a href="http://nickapedia.com/2012/01/04/the-late-recap-post-aka-top-7-things-i-learned-in-2011/" rel="bookmark" class="crp_title">The late recap post : AKA Top 7 things I learned in 2011</a></li><li><a href="http://nickapedia.com/2011/05/16/vmworld-2011-one-lonely-session/" rel="bookmark" class="crp_title">VMworld 2011 : One lonely session</a></li><li><a href="http://nickapedia.com/2011/10/17/note-to-self-scary-choices-pay-off/" rel="bookmark" class="crp_title">Note to self : Scary choices pay off</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/EZlKFdIOcdk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2012/01/04/the-next-iteration-what-i-learned-what-you-can-expect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2012/01/04/the-next-iteration-what-i-learned-what-you-can-expect/</feedburner:origLink></item>
		<item>
		<title>The late recap post : AKA Top 7 things I learned in 2011</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/uWL2k5t8Jos/</link>
		<comments>http://nickapedia.com/2012/01/04/the-late-recap-post-aka-top-7-things-i-learned-in-2011/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 14:58:59 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[EMC]]></category>
		<category><![CDATA[Life/Work]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[converntions]]></category>
		<category><![CDATA[Recap]]></category>
		<category><![CDATA[rental cars]]></category>
		<category><![CDATA[zombies]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1953</guid>
		<description><![CDATA[2011 was a banner year for me in accomplishing great things and learning new lessons. To recap my 2011 I thought I would share: &#160;  Top 7 Things I Learned in 2011 &#160; 1. I must be doing something right This is the obligatory stats part of my list. Comparing 2011 to 2010 I doubled [...]]]></description>
			<content:encoded><![CDATA[<p>2011 was a banner year for me in accomplishing great things and learning new lessons. To recap my 2011 I thought I would share:</p>
<p>&nbsp;</p>
<h1> Top 7 Things I Learned in 2011</h1>
<h2></h2>
<p>&nbsp;</p>
<h2>1. I must be doing something right</h2>
<p>This is the obligatory stats part of my list. Comparing 2011 to 2010 I doubled my visits, unique visitors, and pageviews. Time on site went up about 33% per visit which may just be because I cleaned up the look and made it easier to find stuff. The most interesting thing is my traffic has been much higher in the last half of this year. It is yet to be seen if I can keep this up in 2012.<span id="more-1953"></span></p>
<h2>2. Rental cars need love too</h2>
<p>I learned a couple good lessons about rental cars this year. First, if you attend a conference and park your rental car right under the awning of a luxury golf resort hotel. And because you travel all the time you *think* you remember that you had it valeted when you didn&#8217;t. You may have an awkward moment 22 hours later when the very large head of security finds you by having the local police track your license plate. And an even more awkward walk through the gauntlet of freshly pressed security guard suits while you are holding the keys in your hand to go move it.</p>
<p>Also, a nice tip to remember is that push button cars require you to push the button to turn them off. And 4 hours of idling in a parking lot will make a 2011 Dodge Charger a refrigerator with foggy windows if you happen to have left the AC on MAX&#8230;</p>
<h2>3. Vegas can get old</h2>
<p>Seriously, not trying to make those that didn&#8217;t get to go to Vegas tons of times feel bad. But, after calling Vegas hotels home for more conferences that I can remember in 2011 I am ready for some more Boston, San Francisco, or Orlando in 2012.</p>
<h2>4. What being a zombie is like</h2>
<p>As part of the prep for making the EMCWorld vLabs work this year both myself and my team lost a LOT of sleep. In fact that was the first time I saw a human being work for 40 hours straight without sleeping and still be lucid (Chris &#8220;The Rock&#8221; Horn). There are gaps in my memory that I will never fill. But when the fog lifted and the labs rocked I don&#8217;t think I have ever had quite such an awesome feeling. I think I can still walk from a Venetian hotel room through the casino and into the convention center by sound and smell alone.</p>
<h2>5. If you build it they will come</h2>
<p>I have had a massive amount of downloads from both the older VSA&#8217;s and newer tools (UBERAlign for one). YTD comes out to over 30,000+ downloads with the majority being over 2GB in size. Nothing makes me happier than some crazy idea in my head making someone&#8217;s life easier.</p>
<h2>6. I know jack about Cloud</h2>
<p>This is a tough one to admit. But, 2011 was the year where I ended it questioning whether I had a decent grasp of cloud computing like I thought I did. I believe the key to development is knowing you need to know more. And I really want to dive into the guts of the evolving cloud paradigm from more than just a virtualization or storage perspective.</p>
<h2>7. People matter</h2>
<p>From my incredible teammates, my managers, my close friends, my family, and my community friends I have been supported in so many ways. Leaving my old vSpecialist team was very hard. And I miss their infectious interactions. I am looking forward to working closely with more people in 2012, meeting new rockstars I can learn from, and hopefully positively affecting others.</p>
<p>2011 was a good year. I am looking forward to what this next year will be like. Thanks for visiting <a href="http://nickapedia.com" target="_blank">Nickapedia.com</a> in 2011.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2010/12/28/2010-close-2011-open/" rel="bookmark" class="crp_title">2010.Close; 2011.Open;</a></li><li><a href="http://nickapedia.com/2012/01/24/top-blog-voting-cast-your-vote/" rel="bookmark" class="crp_title">Top Blog Voting : Cast Your Vote</a></li><li><a href="http://nickapedia.com/2011/07/01/lightning-strikes-twice-vmware-vexpert-2011/" rel="bookmark" class="crp_title">Lightning Strikes Twice : VMware vExpert 2011</a></li><li><a href="http://nickapedia.com/2011/10/17/note-to-self-scary-choices-pay-off/" rel="bookmark" class="crp_title">Note to self : Scary choices pay off</a></li><li><a href="http://nickapedia.com/2012/01/04/the-next-iteration-what-i-learned-what-you-can-expect/" rel="bookmark" class="crp_title">The next iteration : What I learned &#038; what you can expect</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/uWL2k5t8Jos" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2012/01/04/the-late-recap-post-aka-top-7-things-i-learned-in-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2012/01/04/the-late-recap-post-aka-top-7-things-i-learned-in-2011/</feedburner:origLink></item>
		<item>
		<title>Proving a another guy’s point : MacBook Air &amp; Node.js as a Webserver</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/GOtfHWJDSSg/</link>
		<comments>http://nickapedia.com/2011/12/19/proving-a-another-guys-point-macbook-air-node-js-as-a-webserver/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 22:39:23 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Life/Work]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[MacBook]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[Web Server]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1940</guid>
		<description><![CDATA[Ok, this is a real quick example of someone else’s idea. Namely Christofer Hoff of Juniper (infamous blog &#38; twitter account) who in response to my tweet about my MacBook and a webserver (I am a Mac-newbie). Suggested I try using Node.js. At first I was a little taken back. I think @Beaker thought I [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, this is a real quick example of someone else’s idea. Namely Christofer Hoff of Juniper (infamous <a href="http://www.rationalsurvivability.com/blog/" target="_blank">blog</a> &amp; <a href="http://twitter.com/beaker" target="_blank">twitter account</a>) who in response to my tweet about my MacBook and a webserver (I am a Mac-newbie). Suggested I try using <a href="http://nodejs.org" target="_blank">Node.js</a>.</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2011/12/beaker_being_beaker.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="beaker_being_beaker" src="http://nickapedia.com/wp-content/uploads/2011/12/beaker_being_beaker_thumb.png" alt="beaker_being_beaker" width="457" height="251" border="0" /></a></p>
<p>At first I was a little taken back. I think @Beaker thought I didn’t get the point (and I don’t more than I do).</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2011/12/beaker_being_beaker2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="beaker_being_beaker2" src="http://nickapedia.com/wp-content/uploads/2011/12/beaker_being_beaker2_thumb.png" alt="beaker_being_beaker2" width="468" height="444" border="0" /></a></p>
<p>So I *cheated* and just turned on Web Sharing with the good tips from my other twitter buddies. But the <a href="http://nodejs.org/" target="_blank">Node.js</a> idea bugged me because technically Chris is right. It should work fine.</p>
<p>So I did it. I installed the <a href="http://nodejs.org/" target="_blank">Node.js</a> <a href="http://nodejs.org/dist/v0.6.6/node-v0.6.6.pkg" target="_blank">package for OSX</a> (been using the Linux version) and fired up TextEdit and wrote this simple bit of code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> http <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> fs <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fs'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> path <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'path'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> rootpath <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;/Users/lynxbat/Webroot&quot;</span><span style="color: #339933;">;</span>
&nbsp;
console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'*Starting'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
http.<span style="color: #660066;">createServer</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>request<span style="color: #339933;">,</span> response<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Server started'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #003366; font-weight: bold;">var</span> pathToFile <span style="color: #339933;">=</span> rootpath <span style="color: #339933;">+</span> request.<span style="color: #660066;">url</span><span style="color: #339933;">;</span>
 console.<span style="color: #660066;">log</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'File was requested: '</span> <span style="color: #339933;">+</span> pathToFile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 path.<span style="color: #660066;">exists</span><span style="color: #009900;">&#40;</span>pathToFile<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>exists<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>exists<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  fs.<span style="color: #660066;">readFile</span><span style="color: #009900;">&#40;</span>pathToFile<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>error<span style="color: #339933;">,</span> content<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>error<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    response.<span style="color: #660066;">writeHead</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    response.<span style="color: #660066;">end</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    response.<span style="color: #660066;">writeHead</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">200</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'Content-Type'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'application/x-gzip'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    response.<span style="color: #660066;">end</span><span style="color: #009900;">&#40;</span>content<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
     response.<span style="color: #660066;">writeHead</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">404</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     response.<span style="color: #660066;">end</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">listen</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">8010</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Server running at http://127.0.0.1:8010/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>I fired up the server:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">node webserver.js</pre></div></div>

<p>And opened my Safari browser to request a file I had dropped in my root directory.</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-19-at-4.18.55-PM.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; margin-left: auto; margin-right: auto; padding-top: 0px; border-style: initial; border-color: initial; border-image: initial; border-width: 0px;" title="Screen Shot 2011-12-19 at 4.18.55 PM" src="http://nickapedia.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-19-at-4.18.55-PM_thumb.png" alt="Screen Shot 2011-12-19 at 4.18.55 PM" width="678" height="160" border="0" /></a></p>
<p>Which works perfectly. Output on cli:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">*</span>Starting
Server running at http:<span style="color: #000000; font-weight: bold;">//</span>127.0.0.1:<span style="color: #000000;">8010</span><span style="color: #000000; font-weight: bold;">/</span>
Server started
File was requested: <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>lynxbat<span style="color: #000000; font-weight: bold;">/</span>Webroot<span style="color: #000000; font-weight: bold;">/</span>node-v0.6.6.pkg</pre></div></div>

<p>Now in my case I am using the Webserver to hand out packages for installing as a local mirror for some VM’s I am building (big demo for Jan). So I hardcoded the MIME type and left response encoding unset. If you were looking to properly serve you should perhaps add some logic for switching types and responses based on the file extension. Kind of like a proper web server works.</p>
<p>So Chris was right. This works. Though I think proving him right probably isn’t a good habit to pick up.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2011/07/01/lightning-strikes-twice-vmware-vexpert-2011/" rel="bookmark" class="crp_title">Lightning Strikes Twice : VMware vExpert 2011</a></li><li><a href="http://nickapedia.com/2011/02/21/back-to-the-geek-future-cool-old-stuff/" rel="bookmark" class="crp_title">Back to the Geek Future : Cool Old Stuff</a></li><li><a href="http://nickapedia.com/2011/02/25/dont-drop-the-box-windowsmac-scripts-for-dropbox-on-vpn/" rel="bookmark" class="crp_title">Don&#8217;t Drop the box : Windows/Mac scripts for Dropbox on VPN</a></li><li><a href="http://nickapedia.com/2011/04/08/new-uber-model-uber-vnx-nfs-v1/" rel="bookmark" class="crp_title">New UBER Model : UBER VNX (NFS) v1</a></li><li><a href="http://nickapedia.com/2011/02/16/interactive-cloud-video-chad-sakac-demo-vmware-pex-2011/" rel="bookmark" class="crp_title">Interactive Cloud Video : Chad Sakac Demo / VMware PEX 2011</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/GOtfHWJDSSg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2011/12/19/proving-a-another-guys-point-macbook-air-node-js-as-a-webserver/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2011/12/19/proving-a-another-guys-point-macbook-air-node-js-as-a-webserver/</feedburner:origLink></item>
		<item>
		<title>IT, Silos, Cloud, &amp; You : What do you want to be when Cloud grows up?</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/mw5-SlVTEEg/</link>
		<comments>http://nickapedia.com/2011/12/17/it-silos-cloud-you-what-do-you-want-to-be-when-cloud-grows-up/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 03:59:44 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[Life/Work]]></category>
		<category><![CDATA[Slider_Featured]]></category>
		<category><![CDATA[Career Development]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Cloud Foundry]]></category>
		<category><![CDATA[commentary]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[Iron Foundry]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[Uhuru]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1873</guid>
		<description><![CDATA[Senior Developers, Network Admins, Virtualization Architect, Security folks, and more &#8211; in the world of skilled labor in IT there sometimes seem to be more common boxes we like to place people in than most other fields. These boxes exist partly due to the fact that the CFO/HR/recruiting folks need nicely written job descriptions to [...]]]></description>
			<content:encoded><![CDATA[<p>Senior Developers, Network Admins, Virtualization Architect, Security folks, and more &#8211; in the world of skilled labor in IT there sometimes seem to be more common boxes we like to place people in than most other fields. These boxes exist partly due to the fact that the CFO/HR/recruiting folks need nicely written job descriptions to map resources and maybe a little bit because of how people assume these position &#8211; through the fires of a limited education systems and bootstrap-yanking from the bottom. <a href="http://nickapedia.com/wp-content/uploads/2011/12/square_peg_in_round_hole_2.jpg"><img style="background-image: none; margin: 20px 20px 20px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="square_peg_in_round_hole_2" src="http://nickapedia.com/wp-content/uploads/2011/12/square_peg_in_round_hole_2_thumb.jpg" alt="square_peg_in_round_hole_2" width="161" height="122" align="left" border="0" /></a>Regardless of why, we organize skilled people into buckets in much the same way everyone else is world is either an accountant, attorney, marketing expert, business analyst, or any specialty therein.</p>
<p><span id="more-1873"></span>What is interesting about the intra-IT delineation of suspect proficiency is that the ever-shifting world of technology and its self-evolving nature lead to new roles, terms, and sudden expertise in a constantly changing landscape. While the COBOL programmers were a hot item back when I was in diapers, most of those folks evolved to fit other roles as time marched on (but not all).</p>
<p>This evolution of new boxes to put people in can be driven by market dominance demanding new silos of expertise. Being an expert in Microsoft, VMware, Oracle, Cisco, EMC (obligatory plug) and many more can be directly linked to the success in the product&#8217;s dominance in some facet of the market. <span class="pullquote">And to that extent we all should admit that the further you develop and professionalize yourself for a silo product, the more invested you are in their success.</span></p>
<p>The scope of this can also be driven by the degree of depth needed. Disciplines driven by deep foundations (such as the Cisco CCIE program) or some of the requirements for being an expert in intimidating tech (like Linux Kernel development) lead to highly paid fur-lined boxes for specific needs. This is based more on a technology skill being a bottleneck, or maybe we should say enabler for the needs of an organization. It can be argued either way whether this is more prevalent in software development or infrastructure circles.</p>
<p>Though the finely tuned and specific box for the Exchange guru, or the Oracle database master, and the C# event-driven wizard is easy to understand, well-defined silos are not the only type of stereotype to apply. Many individuals out there claim the *generalist* title and claim it well. They possess broad abilities to understand software stacks from multiple vendors as well as (and maybe even more importantly) how to layer and integrate vendor components together. I see the root of this type being based on critical troubleshooting and analysis skill sets. Those with the ability to understand and consume a tech quickly and then offer immediate value eventually learn that this has demand. These titles usually fall under more generic names like Network Administrator or Senior Systems Engineer. And when these generalists grow up they can develop into nicely titled generic boxes like Infrastructure, Software, or even Cloud Architect(my new favorite). These boxes are a loose analogue to hold this individual to a semblance of definition for their broad ability to connect and understand dots.</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2011/12/img151.jpg"><img style="background-image: none; margin: 20px 20px 20px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="img15" src="http://nickapedia.com/wp-content/uploads/2011/12/img15_thumb1.jpg" alt="img15" width="301" height="171" align="right" border="0" /></a>The real question is, how the paradigm changes for our somewhat newly evolving cloud constructs will affect these definitions? How will we slice ourselves into containers and how will existing skill sets migrate to them? In my mind I see the effects being completely different depending on where you start.</p>
<p>Let us start with an example of a powerful Infrastructure Architect. In their current world, value for them comes from an innate or trained ability to assemble layers of hardware and software stacks into consumable services. Whether as an internal role or as a service sold to a business as a consultant, they can take the complex and varied and produce a result. They do not need the ability to debug a kernel or write a endpoint for a service bus to accomplish their job. What is interesting is how the new infrastructure or platform as a service models(<a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_service#Infrastructure" target="_blank">IaaS</a>, <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a>) affect them. Suddenly organizations are being presented the option to purchase stacks that come pre-built for internal use or offerings that provide the required services and frameworks immediately as an instantiated third-party platform.</p>
<p>Now we have an issue for our generalist. While the adoption of these new *aaS models will take time, steadily and to some degree his or her value proposition will become diminished. <span class="pullquote">Why does a business need a smart and savvy architect to align the stars to make our services work if we can buy them for purpose and on demand?</span> Maybe they might have a role in evaluating new service platforms; but in itself this might be limited and a conflict of interest. With <a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_service#Infrastructure" target="_blank">IaaS</a> (public/private) for hosting of vertical applications like Exchange, SAP, Oracle, and more becoming solution-based offerings on a menu. And with <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> services now offering enterprise architects and developers the ability to demand and develop on their own, where does our infrastructure expert move to next?</p>
<p>I think the answer is two-fold. In reality the demand for a person with broad skills and maybe even more importantly, possessing a broad-mindset, does not actually go away. Rather, it just relocates to be more aligned with the newer model. If the consumer of platform and infrastructure services no longer has to assume the responsibility to build and create them, then the demand moves to whomever now provides that service. <span class="pullquote">As time moves on and business start expecting an <a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_service#Infrastructure" target="_blank">IaaS</a> or <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> service to meet their needs, the demand for these providers will grow.</span> This new galaxy of platform and infrastructure suppliers will need highly skilled and broad-minded generalists to help them build a better mousetrap.</p>
<p>And while we are on the subject of mousetraps, this becomes an important driver also. As adoption of <a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_service#Infrastructure" target="_blank">IaaS</a> and <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> develops, demand for different levels and specializations of an *aaS will surface. Some services will spring up that need to meet specific demands by verticals such as healthcare, government, or even really narrow ones like insurance providers. Now providers we are in a position where expertise in these fields in building broad platforms while understanding the basic tenant needs will be valuable. And now, our infrastructure architect with 10 years experience in the healthcare industry suddenly is valuable again. She or he is now a critical asset in helping shape an *aaS that meets demands. They become an important cog in building the better mousetrap for our business consumer. <span class="pullquote">The same skills in understanding vendors, layers, and models are just as important for a provider as they were as part of a business consumer.</span></p>
<p>And I would venture that this creates an even more specialized role for a broad skilled individual. In a previous life, they may have had to deal with business demands that led to environments with nice clean lines of separation between infrastructure and development zones of control to make things work. But in an *aaS world, things may naturally be more focused.  Providing a well-defined and measured service is critical to the success of a cloud service. <span class="pullquote">The greater the ability of our architect to have in-depth understanding of selected codebases and deep integration levels, where maybe they were not so deep before; the better equipped they are for their business goals.</span> Now we have an interesting situation where broad skills could possibly evolve into more focused experience in delivering value. This also makes an interesting case for why something like DevOps is becoming a hot topic in the convergence of operations and development silos.</p>
<p>Perhaps our generalist does not necessarily lose value after all with cloud constructs. Their value migrates in the new model. And maybe in the end the broad abilities become more narrow and specific in a quest to deliver that better mousetrap.</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2011/12/leon-the-professional-crimezine-tonybulmer.jpg"><img style="background-image: none; margin: 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="leon-the-professional-crimezine-tonybulmer" src="http://nickapedia.com/wp-content/uploads/2011/12/leon-the-professional-crimezine-tonybulmer_thumb.jpg" alt="leon-the-professional-crimezine-tonybulmer" width="301" height="180" align="right" border="0" /></a>Now let us switch back to our focused expert, our development guru in .Net or our data analytic expert. It is much tougher to predict how cloud models will affect an individual with highly specialized skills. Really, the same rules apply above in many ways. You would expect some roles in networking, database or development silos to remain in demand and just slowly merge across service-consumer and service-provider lines. But in the end, some may always remain within medium to larger orgs. It is likely that some will also phase out as technologies begin to be replaced completely by cloud offerings. This of course means people in those roles may have to migrate to a newer way of doing the same thing; which is something that has happened many times over in the past.</p>
<p>But what is more interesting at a choice level is how things like <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> enable more options around platform choices. A good example is recent announcements around .Net enablement of formerly primarily open-system focused language <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> platforms like Cloud Foundry (see: <a href="http://www.ironfoundry.org/" target="_blank">Iron Foundry</a> and <a href="http://www.uhurusoftware.com/products.aspx" target="_blank">Uhuru</a>). Which opens up interesting thoughts on whether that changes *how* developers are specialized.</p>
<p>Lets say I am a developer that has used and abused .Net since C# was barely a twinkle in Anders Hejlsberg&#8217;s eye. I work for a banking institution that has moved from building applications in-house and hosting them on infrastructure managed by an outsourcing firm, to using a newly minted <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> provider with a focus on banking vertical. In my previous life I would find a way to solve a problem using my core codebase. But now, my new <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> provider not only has great options for using the .Net framework- they also offer options for Ruby, Node.js, Scala, and other frameworks. Instead of limitations because of integration and build hurdles by the outsourcing firm(expense/time) and even my own feelings of safety by remaining on my core knowledge-base; I am now presented with easy avenues to utilize codebases I never had before. And because the path is easier, my excuses for not using the best-of-breed development solution for a given service model or core component become fewer. <span class="pullquote">It presents an interesting question whether the new multi-codebase <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> cloud service eventually causes developers to become more broad in the way they look at attacking problems.</span> If I can use the same development toolkit to deploy .Net, C++, Ruby, or  Scala to the same <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> platform without having to worry about obstacles normally inherit in internal enterprise solutions, how does that change my personal development?</p>
<p>It presents an interesting idea of the multi-disciplined developer who uses any given framework available via his <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> provider(s) depending on the core need. They could approach module building differently than the old paradigm by using Scala for building resilient APIs, C# for data presentation, Node.js for Map/Reduce streaming, and Ruby for user portal creation/extension or any other permutation. More than this, exposed constructs around normally infrastructure-based terminology can be used by developers in modern <a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_service#Infrastructure" target="_blank">IaaS</a>/<a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> designs for cool orchestration, isolation, and metrics in a new way (<a href="http://wiki.openstack.org/Donabe" target="_blank">one barely out of the gate example</a>).</p>
<p>As the languages, models and more become consumable by internal development teams and the walls dividing languages and frameworks break down- we are left with an interesting scenario for our silo-trained experts. And while it is impossible to predict outcomes, I predict many individuals branching out into new tech and new ways of doing things. <span class="pullquote">No longer is their proficiency domain sacred in this new world.</span> <a href="http://nickapedia.com/wp-content/uploads/2011/12/sushiusb11.jpg"><img style="background-image: none; margin: 20px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="sushiusb1" src="http://nickapedia.com/wp-content/uploads/2011/12/sushiusb1_thumb1.jpg" alt="sushiusb1" width="174" height="103" align="right" border="0" /></a>I offer no other proof than the simple example of how Microsoft themselves both helped the development(<a href="https://github.com/tjanczuk/iisnode" target="_blank">iisnode</a>) and <a href="http://arstechnica.com/microsoft/news/2011/12/azure-price-cuts-bigger-databases-now-with-nodejs-and-mongodb-support-hadoop-on-its-way.ars" target="_blank">released Node.js</a> on their <a href="https://www.windowsazure.com/en-us/" target="_blank">Azure</a> platform recently. I think this speaks to the wisdom of looking at languages and frameworks as tools and the viability of multiple codebase options with <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> as a model.</p>
<p>And what we are left with is interesting if we step back. The narrow-focused expert may end up broadening how they apply their efforts in building value. It may no longer be about how to be the best with a hammer since it is the only tool you can bet on. It may be about knowing the difference between the hammer and the nail-gun. And even more importantly, knowing when and where to use each.</p>
<p>The key to either change is that responsibilities may move but in the end people are still required. <span class="pullquote">What I personally find fascinating is how valuable individuals with curiosity for knowledge and passion for communication will have the opportunity to excel.</span> A Infrastructure Architect who spends his/her time really understanding the needs and constructs of a vertical-focused <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a> could be a boon to a new startup. There are opportunities in these new worlds for ideas to provide major innovation and market value. Especially around stuff like DevOps integration(process &amp; toolchain), infrastructure automation/modeling for IaaS, and fast-to-market development frameworks for <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a>.</p>
<p>Another interesting thought is how this may affect vendor-focused specialties. Someday being specifically an expert in a single vendor may be less useful than being an expert in the application of the common model used. I think advanced training and hands-on experience with a leading vendor&#8217;s technology will always be valuable, especially ones that stay current with cloud adoption and model their own products accordingly. And as always, this is usually controlled more by the market dominance and success of the vendor than anything. But, this is definitely something to watch as time goes by for whether it morphs into something different.</p>
<p>Having said all that let me get to the point of this blog post and say this directly to you. If you are a person that fits in a box like I described above and you are wondering where you fit in the crazy world of change- take heart that this is more of an opportunity for development than a dead end. Nothing changes overnight, and much has yet to be proven and produced. Because of this, <span class="pullquote">there is going to be a massive demand for individuals that are capable of evolving into new roles for cloud models</span>. There will be a need a combination of strong foundations in technology and forward-thinking mindset to attack the impossible in a new way. Or in a more concise and less dramatic way of saying it: technology will always need good people.</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2011/12/470platypus01.jpg"><img style="background-image: none; margin: 20px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="470platypus,0" src="http://nickapedia.com/wp-content/uploads/2011/12/470platypus0_thumb1.jpg" alt="470platypus,0" width="170" height="108" align="left" border="0" /></a>I believe that critical mass is reached where several of the IT containers we have placed ourselves in start to converge and evolve through the need for communication, common understanding, and the enabling technologies like <a href="http://en.wikipedia.org/wiki/Infrastructure_as_a_service#Infrastructure" target="_blank">IaaS</a> and <a href="http://en.wikipedia.org/wiki/Platform_as_a_service" target="_blank">PaaS</a>. Some see cloud as a threat to their career development paths. Some see it as marketing labels and hot air. I see it as the next evolution of how IT defines itself. A reordering of roles and ideas. Nothing new, just the next evolution of technology. And I for one, welcome our new cloud overlords.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2010/09/30/vision-of-a-creator-the-silent-revolution-in-technology/" rel="bookmark" class="crp_title">Vision of a creator : The silent revolution in Technology</a></li><li><a href="http://nickapedia.com/2011/07/10/organic-cloud/" rel="bookmark" class="crp_title">Organic Cloud : Modeling After The Natural World</a></li><li><a href="http://nickapedia.com/2011/01/22/the-vce-model-yes-it-is-different/" rel="bookmark" class="crp_title">The VCE Model : Yes, it is different</a></li><li><a href="http://nickapedia.com/2009/03/07/virtualizing-the-data-warehouse-vmware-sql-server-2005-and-emc-clariion/" rel="bookmark" class="crp_title">Virtualizing the Data Warehouse : VMware, SQL Server 2005, and EMC Clariion</a></li><li><a href="http://nickapedia.com/2010/06/29/cisco-live-2010-its-all-about-the-milk-cookies/" rel="bookmark" class="crp_title">Cisco Live 2010 : It&#8217;s all about the Milk &#038; Cookies</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/mw5-SlVTEEg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2011/12/17/it-silos-cloud-you-what-do-you-want-to-be-when-cloud-grows-up/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2011/12/17/it-silos-cloud-you-what-do-you-want-to-be-when-cloud-grows-up/</feedburner:origLink></item>
		<item>
		<title>Now for something completely different : Ubuntu 11.10, KVM, &amp; VLAN trunking</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/AG_oW_Xr6Ic/</link>
		<comments>http://nickapedia.com/2011/11/28/now-for-something-completely-different-ubuntu-11-10-kvm-vlan-trunking/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 19:20:26 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[EMC]]></category>
		<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Slider_Featured]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VirtualAppliances]]></category>
		<category><![CDATA[bridge-utils]]></category>
		<category><![CDATA[Crowbar]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Fix]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[Trunking]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[VLAN]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1842</guid>
		<description><![CDATA[Sometimes the path to learn something means using very different tools along the way. In my case, I have been learning more on the developing virtual network world along with some of the new DevOps toolsets popping up. As part of this I have started using KVM as a hypervisor on an Ubuntu 11.10 platform [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes the path to learn something means using very different tools along the way. In my case, I have been learning more on the developing virtual network world along with some of the new <a href="http://en.wikipedia.org/wiki/DevOps" target="_blank">DevOps</a> toolsets popping up.</p>
<p>As part of this I have started using KVM as a hypervisor on an <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a> 11.10 platform in a portion of my home lab. I have learned quickly that getting something simple done in vSphere can be a bit of a chore in the <a href="http://www.linux-kvm.org/page/Main_Page" target="_blank">KVM</a> world. But on the flipside, <a href="http://www.linux-kvm.org/page/Main_Page" target="_blank">KVM</a> has been a fun learning experience in understanding <a href="http://en.wikipedia.org/wiki/Virtualization" target="_blank">virtualization</a> in a more raw format.</p>
<p>One of these challenges I have decided to share is a simple one. I was wanting to play with the Dell-created DevOps deployment tool: <a href="https://github.com/dellcloudedge/crowbar" target="_blank">Crowbar</a>. Crowbar is an wrapper for <a href="http://www.opscode.com/" target="_blank">OpsCode Chef Server</a>. While a pretty slick little utility to research in the cloud deployment and automation space; one glaring problem is it is designed to run on Dell PowerEdge servers. Since I don’t have PowerEdge servers lying around anymore I needed to run this in a virtual machine. This in itself isn’t a huge problem as a virtual machine can pretty much match most of the logical hardware pieces needed. But, the one problem I ran into was that Crowbar out of the box likes to have a couple interfaces with the ability to tag VLANs itself. In a bare-metal world connecting 802.1q trunk ports to a server is pretty common. And even in the VMware vSphere world you can create trunk portgroups for a guest VM using <a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1004074" target="_blank">documented methods</a>(See VGT). But the problem I ran into is how do I pass a trunk port through in KVM/QEMU when using the default <strong><a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge" target="_blank">bridge-utils</a></strong> setup (not using ovswitch in this case)?<span id="more-1842"></span></p>
<p>It turns out that quite a lot of articles out there on KVM explicitly state that this isn’t possible (<a href="http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaat%2Fliaatkvmsecconfvlans.htm" target="_blank">link</a>, <a href="http://www.orbit-lab.org/wiki/Documentation/OpenFlow/ofTopology" target="_blank">link</a>). Seems like the default behavior strips tagging between bridge connected interfaces which defeats any attempt to trunk to a guest VM. So it seemed it was not possible.  And at one point after testing myself I was convinced it was not possible too. But, thanks to a teammate who somehow got it working in his lab I decided to press on further and see if there was a way to configure <a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge" target="_blank">bridge-utils</a> in Ubuntu 11.10 to pass VLAN tags frames in a way that behaves like a trunk port to its guest VM.</p>
<p>And it turns out that not only is it possible but it is also not that hard after all.</p>
<p>My baseline Ubuntu is the 11.10 Server edition with KVM and bridge-utils installed. Here the list of packages installed via apt-get after a clean OS install:</p>
<ul>
<li>openssh-server (SSH)</li>
<li>ubuntu-desktop (for using virt-manager)</li>
<li>gtk2-engines-pixbuf (see above)</li>
<li>vlan (need vlan ability on host)</li>
<li>bridge-utils (base bridge for KVM guests)</li>
<li>qemu-kvm (the KVM/QEMU packages for Ubuntu 11.10)</li>
<li>kvm-pxe (needed for PXE and to stop annoying error messages)</li>
<li>libvirt-bin (Libvirt API for managing my KVM)</li>
<li>virtinst (Handy python tool for creating guests)</li>
<li>virt-manager (Cool GUI interface for managing KVM guests)</li>
<li>virt-top (‘top’ like tool for guests)</li>
</ul>
<p>And for those that want to past a nice clean line into a shell window</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> openssh-server ubuntu-desktop gtk2-engines-pixbuf vlan bridge-utils qemu-kvm kvm-pxe libvirt-bin virtinst virt-manager virt-top</pre></div></div>

<p>After installing packages above we need to do a couple steps to configure our host system bridging and networking.</p>
<p>First let’s activate our VLAN module now:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">modprobe 8021q</pre></div></div>

<p>And we need to drop it into our modules file for loading next boot:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> “8021q” <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>modules</pre></div></div>

<p>&nbsp;</p>
<p>By default our Libvirt will come configured with a default network that will create a virtual bridge called “virbr0” which is setup for NAT to internal guests. In this case we want to use our own custom bridge and remove this virtual one. You can skip this if you want both.</p>
<p>Stop the network if active:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">virsh net-destroy default</pre></div></div>

<p>Undefine (remove) the network from the libvirt config:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">virsh net-undefine default</pre></div></div>

<p>Restart our libvirt service:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">service libvirt-bin restart</pre></div></div>

<p>&nbsp;</p>
<p>By default Ubuntu 11.10 will come with some rules setup to allow iptables/ebtables to do filtering on packets passed on bridge interfaces. You have two choices with how to deal with this. You can either setup nice clean rules in iptables/ebtables that allow traffic (including VLAN tagged) through or you can stop them from filtering in the first place. The latter is much easier to do and what I am showing below. If you want to do the former then hit Google up for articles on how to enable filtering with iptables/ebtables and bridge-utils.</p>
<p>First let’s add our bridge module in earlier in the boot process:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> “bridge” <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>modules</pre></div></div>

<p>Now open /etc/sysctl.conf up in VIM or Nano and add the following lines to the end:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">net.bridge.bridge-nf-call-ip6tables = <span style="color: #000000;">0</span>
net.bridge.bridge-nf-call-iptables = <span style="color: #000000;">0</span>
net.bridge.bridge-nf-call-arptables = <span style="color: #000000;">0</span>
net.bridge.bridge-nf-filter-pppoe-tagged = <span style="color: #000000;">0</span>
net.bridge.bridge-nf-filter-vlan-tagged = <span style="color: #000000;">0</span></pre></div></div>

<p>These lines disable any filtering of frames on the bridge devices.</p>
<p>Let’s enable the new settings with this command:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">sysctl –p</pre></div></div>

<p>And we add this command to make sure these settings are applied last when our host server boots. Add the following to /etc/rc.local above the ‘exit 0’ line:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>sysctl <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysctl.conf</pre></div></div>

<p>&nbsp;</p>
<p>Now in my setup I am using a host with two network interfaces both of which are presented trunk ports from the attached switch. The first interface (Eth0) will be used for Guest VM traffic and the second (Eth1) will be used for host server management (think: vSphere Service Console). While we will manually create the networking config in a second; we need to have a startup config present so we don’t have to do this every time we boot up. Here are the contents of my /etc/network/interfaces:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Loopback</span>
auto lo
iface lo inet loopback
&nbsp;
<span style="color: #666666; font-style: italic;"># eth0 used by br0 so we put it in manual mode</span>
<span style="color: #666666; font-style: italic;"># and add ‘up/down’ commands to enable it</span>
auto eth0
iface eth0 inet manual
up <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> eth0 up <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">true</span>
down <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> eth0 down <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">true</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># eth1 is used by host for management so we leave dhcp</span>
<span style="color: #666666; font-style: italic;"># enabled. This can be replaced with static config also</span>
auto eth1
iface eth1 inet dhcp
&nbsp;
<span style="color: #666666; font-style: italic;"># We need to make sure our eth0 interface is 8021q enabled</span>
<span style="color: #666666; font-style: italic;"># We do this by adding an arbitrary VLAN 0 subinterface to it</span>
<span style="color: #666666; font-style: italic;"># In manual mode so it should never actually enable by init</span>
<span style="color: #666666; font-style: italic;"># vlan-raw-device is required to map when in manual mode</span>
auto eth0.0
iface eth0.0 inet manual
vlan-raw-device eth0
&nbsp;
<span style="color: #666666; font-style: italic;"># We create our bridge interface here</span>
<span style="color: #666666; font-style: italic;"># Since eth0 can’t be used as a host interface I am using br0</span>
<span style="color: #666666; font-style: italic;"># as one itself. By enabling dhcp it will pull an IP and behave</span>
<span style="color: #666666; font-style: italic;"># just like eth0 for the host itself. You can also put into manual</span>
<span style="color: #666666; font-style: italic;"># mode but must uncomment the ‘up’ line to make sure it comes up</span>
auto br0
iface br0 inet dhcp <span style="color: #666666; font-style: italic;"># ‘dhcp’ can be ‘manual’ for no IP or ‘static’ for a static IP</span>
bridge_ports eth0 <span style="color: #666666; font-style: italic;"># Add our host VLAN-enabled interface to bridge</span>
bridge_stp off <span style="color: #666666; font-style: italic;"># disable STP</span>
pre-up <span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> eth0 up <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">true</span> <span style="color: #666666; font-style: italic;"># make sure eth0 is started</span>
<span style="color: #666666; font-style: italic;">#up /sbin/ifconfig br0 up || /bin/true # uncomment if br0 in manual mode</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># You can also have a host interface on the bridge for a specific VLAN.</span>
<span style="color: #666666; font-style: italic;"># This is optional and needed if using single interface host. This is not</span>
<span style="color: #666666; font-style: italic;"># required to make VLAN trunking work.</span>
<span style="color: #666666; font-style: italic;"># My host will get a VLAN 100 network DHCP address for a br0.100 subinterface</span>
auto br0.100
iface br0.100 inet dhcp
vlan-raw-device br0
<span style="color: #666666; font-style: italic;"># Nicholas Weaver</span>
<span style="color: #666666; font-style: italic;"># last mod: 11/28/2011</span></pre></div></div>

<p>Once you customize the file above and update your interfaces file you can actually just run ‘/etc/init.d/networking restart’ to apply the changes. But let’s walk through the manual config also to see the steps:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Clear any IP address on eth0 as it won’t work</span>
<span style="color: #666666; font-style: italic;"># and routing will be hosed once the bridge owns the port</span>
ip address flush eth0
<span style="color: #666666; font-style: italic;"># We need to enable VLANs on our source interface (eth0)</span>
vconfig add eth0 <span style="color: #000000;">0</span>
<span style="color: #666666; font-style: italic;"># Create our bridge</span>
brctl addbr br0
<span style="color: #666666; font-style: italic;"># Add our interface to our bridge</span>
brctl addif br0 eth0
<span style="color: #666666; font-style: italic;"># Get an IP address for eth0 on the br0 (optional, see above)</span>
dhclient br0
<span style="color: #666666; font-style: italic;"># Create a VLAN subinterface for host VLAN traffic on eth0 (optional, just an example)</span>
vconfig add br0 <span style="color: #000000;">100</span>
<span style="color: #666666; font-style: italic;"># Get DHCP address for br0.100 from the VLAN 100 DHCP server</span>
dhclient br0.100</pre></div></div>

<p>The commands above result in a single bridge (br0) attached to an interface (eth0) that is enabled for VLAN tagging. At this point we can create a guest VM and test. I recommend using the ‘ubuntu-vm-builder’ package available via apt-get or ‘virt-install’ which we already installed. What is important is that with our current config we are no longer using the default network that comes with Librvirt (virbr0). So some changes need to be configured in the guest domain XML in Libvirt to bind virtual interfaces in the guest to our newly created bridge. Here is an example of how to modify your guest XML:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;interface</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'bridge'</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mac</span> <span style="color: #000066;">address</span>=<span style="color: #ff0000;">'52:54:00:ba:ba:bf'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source</span> <span style="color: #000066;">bridge</span>=<span style="color: #ff0000;">'br0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">dev</span>=<span style="color: #ff0000;">'vnet0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;alias</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">'net0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;address</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'pci'</span> <span style="color: #000066;">domain</span>=<span style="color: #ff0000;">'0x0000'</span> <span style="color: #000066;">bus</span>=<span style="color: #ff0000;">'0x00'</span> <span style="color: #000066;">slot</span>=<span style="color: #ff0000;">'0x05'</span> <span style="color: #000066;">function</span>=<span style="color: #ff0000;">'0x0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/interface<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>As you can see above the interface type is changed to ‘bridge’ and the source bridge is pointed at ‘br0’. This means when Libvirt starts our KVM Guest in QEMU it will place the Vnet0 interface from our guest on the Br0 bridge. We can then create subinterfaces inside the guest for Eth0 (which is Vnet0 on the host) and tag traffic for transmission our our VLAN-enabled Br0 &amp; Eth0. In my case I created the default Eth0 and an Eth0.100 and was able to communicate on both the native VLAN and VLAN 100 from within the guest.</p>
<p>Now one last important note for those running some distros underneath KVM. I had issues with VLAN tagging being stripped by the guest VM before it was submitted to the underlying bridge even though VLAN tagging was enabled in the guest. Turns our that the config above automatically chooses Virtio as the interface type used. And in my case my Crowbar VM was build for Ubuntu 10.10 and was not correctly installing the driver for the Virtio network device it was presented. My solution was to switch to the more compatible E1000 device type (also slower) and tagging started working like a charm. Here is an example config with ‘model type’ specified:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;interface</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'bridge'</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mac</span> <span style="color: #000066;">address</span>=<span style="color: #ff0000;">'52:54:00:ba:ba:bf'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source</span> <span style="color: #000066;">bridge</span>=<span style="color: #ff0000;">'br0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;model</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'e1000'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">dev</span>=<span style="color: #ff0000;">'vnet0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;alias</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">'net0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;address</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'pci'</span> <span style="color: #000066;">domain</span>=<span style="color: #ff0000;">'0x0000'</span> <span style="color: #000066;">bus</span>=<span style="color: #ff0000;">'0x00'</span> <span style="color: #000066;">slot</span>=<span style="color: #ff0000;">'0x05'</span> <span style="color: #000066;">function</span>=<span style="color: #ff0000;">'0x0'</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/interface<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>So if you are doing as I am and testing the Crowbar VM inside KVM you will need to use E1000 to get the tagging working.</p>
<p>Couple of last cool notes. The entire config above was actually done inside VMware Workstation 8. It does work with VLAN tagging between VMs on the same Host Network. So in my lab I am using VMW –&gt; KVM –&gt; Guest VMs for some great Inception-style networking.</p>
<p>Also, it is possible to configure the all the above as a Libvirt defined network in newer versions of Libvirt. But by default the libvirt-bin package installed via apt-get for Ubuntu 11.10 is 0.9.2 which is missing some of the options we need.</p>
<p>I have more posts coming on some of the stuff I am playing with soon. So stay tuned.</p>
<p>Comments/corrections/free-food welcome.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2012/01/10/breaking-new-ground-an-uber-tool-for-the-mac/" rel="bookmark" class="crp_title">Breaking new ground : An UBER Tool for the Mac</a></li><li><a href="http://nickapedia.com/2010/09/12/ubertastic-celerra-uber-vsa-v3-unisphere/" rel="bookmark" class="crp_title">UBERTastic : Celerra UBER VSA v3 &#8211; Unisphere</a></li><li><a href="http://nickapedia.com/2011/12/19/proving-a-another-guys-point-macbook-air-node-js-as-a-webserver/" rel="bookmark" class="crp_title">Proving a another guy&#8217;s point : MacBook Air &#038; Node.js as a Webserver</a></li><li><a href="http://nickapedia.com/2009/01/03/dell-server-lcd-update-script/" rel="bookmark" class="crp_title">Dell Server LCD Update Script</a></li><li><a href="http://nickapedia.com/2011/03/02/more-ps-fun-fix-vcenter-startup-w-powershell/" rel="bookmark" class="crp_title">More PS Fun : Fix vCenter Startup w/ PowerShell</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/AG_oW_Xr6Ic" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2011/11/28/now-for-something-completely-different-ubuntu-11-10-kvm-vlan-trunking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2011/11/28/now-for-something-completely-different-ubuntu-11-10-kvm-vlan-trunking/</feedburner:origLink></item>
		<item>
		<title>For Advanced Users : UBERAlign API / CLI / Powershell</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/othMAHDfDI0/</link>
		<comments>http://nickapedia.com/2011/11/07/for-advanced-users-uberalign-api-cli-powershell/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 02:51:17 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[EMC]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VirtualAppliances]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Disk Alignment]]></category>
		<category><![CDATA[Disk Utility]]></category>
		<category><![CDATA[EMC Corporation]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[orchestration]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[UBER]]></category>
		<category><![CDATA[UBER Tool]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[vSpecialists]]></category>
		<category><![CDATA[vSphere]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1819</guid>
		<description><![CDATA[From the beginning I knew some UBERAlign users would want to go into power user mode. The UBERAlign Console was designed to allow for easy use for the average Joe. But, there are people out there with the desire, guts, and ability to script and automate that want more. So this post will inform you [...]]]></description>
			<content:encoded><![CDATA[<p>From the beginning I knew some <a href="http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/" target="_blank">UBERAlign </a>users would want to go into power user mode. The <a href="http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/" target="_blank">UBERAlign Console</a> was designed to allow for easy use for the average Joe. But, there are people out there with the desire, guts, and ability to script and automate that want more. So this post will inform you on two other options for <a href="http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/" target="_blank">UBERAlign</a>.</p>
<h2>1. The CLI</h2>
<p>Each vAligner is a <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a> Linux VM. On the VM is a set of binary files that do all work. One is a startup file for initializing, one is a daemon for accepting new jobs via the REST API, and the final is the actual magic behind the scenes. From the beginning UBERAlign was designed to be run from the command line. In fact back months ago the vSpecialist actually got a copy of this to try out and help me test. So for those that do not want to use the Console here are some reasons and instructions on how to run alignment, reclaim, and alignment+reclaim jobs manually.</p>
<p>Some of the reasons you may want to do this:</p>
<ol>
<li>Hate MS Windows – Since the console is a .Net WPF app some Mac users (<a href="http://twitter.com/mcowger">@mcowger</a>) have already asked how to skip using a Windows VM.</li>
<li>VM size is too big – If the VM is more than 50% of the size of the datastore then a snapshot of it can potentially cause an out of space issue if it grows to full size (which and align can do). So if you have a good backup or are using array-based snapshots why use VMware snapshots? The CLI allows you to skip having to use a VMware snapshot which is required for using the Console.</li>
<li>Aligns disks not attached to a VM -  The manually method just needs a valid VMDK file. Whether from a backup or anywhere. The Console requires a VM. Technically you can use tricks with snap and copy similar to the way VMware Converter works with online VM’s if you want.</li>
</ol>
<p>So here are the steps:</p>
<ol>
<li>You must have the vAligner running and it must be on a vSphere host than can reach the datastore your VMDK is on.</li>
<li>Make sure that any secondary disks are removed from the vAligner from a previous job.</li>
<li>Make sure no UBERAlign Consoles are using this vAligner. Easy way is to disconnect the NIC and use the console if you are worried. If you console is showing weird FD0 garbage, grab a new copy of the vAligner OVA as this was patched.</li>
<li>Add a Hard Disk to the vAligner (while it is running) to SCSI 0:1. Make sure and choose an existing disk and point it to the VMDK you want to run against.</li>
<li>Login to the vAligner with root/UBERAlign.</li>
<li>Make sure at least 15-20 seconds have passed since step 4. From the command line run: <strong>‘fdisk –lu’</strong> and make sure /dev/sdb is showing. Confirm the partition layout is as expected.</li>
<li>Change directory to the UBERAlign binaries with <strong>‘cd /opt/uberalign/bin’</strong></li>
</ol>
<p>Now that you have everything attached we are running to run a job. If you run ‘./uberalign’ you will see a printout of the command syntax like what follows:</p>
<blockquote><p>./uberalign MODE  DEVICE  [OFFSET]  [ID]  [NAME]</p></blockquote>
<p>MODE = The mode you want to run in and is formatted. <strong>Syntax:</strong>  <strong>-r:[a|r|s|c]</strong></p>
<ul>
<li>[a] = Align &amp; Reclaim</li>
<li>[r] = Align only</li>
<li>[s] =  Simulate</li>
<li>[c] = Check alignment only</li>
<li>[z] = Reclaim only</li>
</ul>
<p>DEVICE = The hardware device your VMDK is mounted on(normally /dev/sdb): <strong>Syntax: /dev/sdb</strong></p>
<p>OFFSET = The target offset you want to align to. This defaults to 2048 sectors if not specified.</p>
<p>ID / NAME = Only useful for the API leave these off or use for logging purposes.</p>
<p>Example:</p>
<blockquote><p>./uberalign –r:a /dev/sdb 2048</p></blockquote>
<p>Once you run this command the uberalign program will process and log to the screen it’s progress while it works. When it completes, disconnect your VMDK from the vAligner and check your VMDK within a VM. It is as simple as that.</p>
<h2>2. The API</h2>
<p>The UBERAlign vAligner comes with a REST API that the UBERConsole uses for managing. While the state machine, <a href="http://en.wikipedia.org/wiki/Orchestration_(computing)" target="_blank">orchestration</a> for vSphere, and GUI are all a part of the console; you can still use the vAligner API to integrate into any existing processes you may have. Here is a short guide to the REST API. All data is return in JSON format. The first section explains the API get/put and the second explains the object structure in a pseudo format.</p>
<p><strong>Methods</strong></p>
<p>Root Path: <em><strong>http://&lt;valigner IP&gt;/uberalign/api/</strong></em></p>
<p><span style="color: #000000;"><strong>Get Current State (GET)</strong></span><br />
Path: <em>/uberalign/api/state</em><br />
Parameter: n/a<br />
Return: <strong>UAState</strong><br />
Description: Returns the current state of the vAligner</p>
<p><span style="color: #000000;"><strong>Get Current Job (GET)</strong></span><br />
Path:<em> /uberalign/</em><em>api/job/current</em><br />
Parameter: n/a<br />
Return: <strong>UAJob</strong><br />
Description: Returns the current job of the vAligner. On first boot this is an rather blank object.</p>
<p><span style="color: #000000;"><strong>Get All Completed(Historical) Jobs (GET)</strong></span><br />
Path: <em>/uberalign/</em><em>api/job</em><br />
Parameter: n/a<br />
Return: <strong>UAJob</strong>[]<br />
Description: Returns an array with all completed jobs. This list will include all jobs still the vAligner was first deployed. Can be useful for historical purposes.</p>
<p><span style="color: #000000;"><strong>Get Session (GET)</strong></span><br />
Path: <em>/uberalign/</em><em>api/session</em><br />
Parameter: n/a<br />
Return: <strong>UASessionLock</strong><br />
Description: Returns the session lock information. This object contains information on the current lock status of the vAligner.</p>
<p><span style="color: #000000;"><strong>Lock vAligner (PUT)</strong></span><br />
Path: <em>/uberalign/</em><em>api/session/lock</em><br />
Parameter: <strong>UASessionLock</strong><br />
Return: string (“true” | “false”)<br />
Description: Used to lock a vAligner for 30 seconds. A locked vAligner will not accept new jobs from another source. Once a job is started it will not accept a new job until idle again. Use this method to maintain a lock on a vAligner while using it. Must specify a unique GUID that must match the GUID in the job ticket. GUID is a string and should be unique and not change for the duration of the session.</p>
<p><span style="color: #000000;"><strong>Submit New Job Ticket (PUT)</strong></span><br />
Path: <em>/uberalign/api/job/new</em><br />
Parameter: <strong>UAJobTicket</strong><br />
Return: string (“true” | “false”)<br />
Description: Used to submit a new job ticket to the vAligner. A job ticket goes into a queue and is picked up by the daemon &lt;15 seconds. The submitted <strong>UAJobTicket</strong> must have the same GUID as the lock and a lock must exist. Also the vAligner state must either be in Idle(0) or IdleWithError(9). You can use both the Get Current State and Get Current Job to watch for a job starting. The Current Job returns the <strong>UAJob</strong> object which will have a Name and ID that will match the  <strong>UAJobTicket</strong> Name and GUID fields you submitted.</p>
<p>&nbsp;</p>
<p>Object Definitions:</p>
<blockquote><p>Class <strong>UAState</strong><br />
{<br />
string ip;<br />
string errmsg;<br />
string mac;<br />
States state;<br />
}</p>
<p>Class <strong>UAJob</strong><br />
{<br />
string id;<br />
string name;<br />
string disk;<br />
<strong>UADiskDetails</strong> diskdetails;<br />
int offset;<br />
States type;<br />
string errmsg;<br />
string currentstep;<br />
string laststep;<br />
double duration;<br />
<strong>UAPartition</strong>[] partitions;<br />
string msg;<br />
string timestamp;<br />
string completetimestamp;<br />
}</p>
<p>Class <strong>UAPartition</strong><br />
{<br />
string _system;<br />
string _aligned;<br />
string _id;<br />
string _device;<br />
string _offsetdiff;<br />
string _boot;<br />
string _start;<br />
string _blocks;<br />
string _end;<br />
}</p>
<p>Class <strong>UADiskDetails</strong><br />
{<br />
string _cyclinders;<br />
string _size;<br />
string _sectorsize;<br />
string _totalsectors;<br />
string _sectoratrack;<br />
string _heads;<br />
string _diskserial;<br />
}</p>
<p>Class <strong>UASessionLock</strong><br />
{<br />
string guid;<br />
string ip;<br />
int timestamp;<br />
bool locked;<br />
int secondsleft;<br />
}</p>
<p>Class <strong>UAJobTicket</strong><br />
{<br />
<strong>States</strong> type;<br />
double offset;<br />
string id;<br />
string name;<br />
string guid;<br />
}</p>
<p>Enum <strong>States</strong><br />
{<br />
Idle = 0,<br />
AlignNoZero = 1,<br />
AlignWithZero = 2,<br />
Simulate = 3,<br />
CheckOnly = 4,<br />
ZeroOnly = 5,<br />
GrowOnly = 6,<br />
IdleWithError = 9<br />
}</p></blockquote>
<p>The objects above are simplified from my C# class structure.</p>
<p>This workflow for a job submission would look like this:</p>
<ol>
<li>Check vAligner state (is idle?)</li>
<li>Lock vAligner (and continue to re-lock &lt;30s until done with it)</li>
<li>Mount Disk using vSphere API/Manually</li>
<li>Create and submit new Job Ticket</li>
<li>Watch vAligner State and Current Job to watch status</li>
<li>After seeing the job completes (state=Idle or IdleWithError) un-mount disk</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>I know what some of you are going to say now: &#8220;But, Nick &#8211; how can I use the API now?&#8221;. The answer is provided by the vSpecialist rock-star Clint Kitson in his EMC Community release today. Clint built an awesome example of using Powershell to integrate and control UBERAlign via the REST API. This is so cool because if you already have scripting/code toolsets you use for automation, you can integrate UBERAlign right in. Check out more on this in<strong> <a href="https://community.emc.com/message/574435" target="_blank">Clint&#8217; post here</a></strong>.</p>
<p>This is a basic overview and I am sure will probably just lead to more questions <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://nickapedia.com/wp-content/uploads/2011/11/wlEmoticon-smile1.png" alt="Smile" />. Please feel free to play around with both the CLI and API and post questions/comments below.</p>
<p>Thanks,</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/" rel="bookmark" class="crp_title">Straighten up with a new UBER tool : Presenting UBERAlign</a></li><li><a href="http://nickapedia.com/2012/01/24/top-blog-voting-cast-your-vote/" rel="bookmark" class="crp_title">Top Blog Voting : Cast Your Vote</a></li><li><a href="http://nickapedia.com/2011/03/01/powercli-and-vaai-quick-and-dirty-script/" rel="bookmark" class="crp_title">PowerCLI and VAAI : Quick and dirty script</a></li><li><a href="http://nickapedia.com/2011/06/28/vmware-workstation-ubuntu-11-04-console-bug/" rel="bookmark" class="crp_title">VMware Workstation &#038; Ubuntu 11.04 : Console Bug</a></li><li><a href="http://nickapedia.com/2010/10/21/slap-a-gui-on-it-new-emc-uber-dhsm-tool/" rel="bookmark" class="crp_title">Slap a GUI on it : New EMC UBER DHSM Tool</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/othMAHDfDI0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2011/11/07/for-advanced-users-uberalign-api-cli-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2011/11/07/for-advanced-users-uberalign-api-cli-powershell/</feedburner:origLink></item>
		<item>
		<title>Straighten up with a new UBER tool : Presenting UBERAlign</title>
		<link>http://feedproxy.google.com/~r/Nickapedia/~3/koTlUUc6JfE/</link>
		<comments>http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 17:06:33 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[EMC]]></category>
		<category><![CDATA[Slider_Featured]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VirtualAppliances]]></category>
		<category><![CDATA[Disk Alignment]]></category>
		<category><![CDATA[Disk Utility]]></category>
		<category><![CDATA[EMC Corporation]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[orchestration]]></category>
		<category><![CDATA[Space Reclaim]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[UBER]]></category>
		<category><![CDATA[UBER Tool]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[vSpecialists]]></category>
		<category><![CDATA[vSphere]]></category>

		<guid isPermaLink="false">http://nickapedia.com/?p=1800</guid>
		<description><![CDATA[NOTICE: For more info on UBERAlign Advanced (API / CLI / Powershell) features also read the new post here: http://nickapedia.com/2011/11/07/for-advanced-users-uberalign-api-cli-powershell/ You know how in cartoons they show a small snowball rolling down a hill until it grows into a massive beast of a snow boulder? Well, that is kind of how my most recent UBER project [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #ff0000;">NOTICE: </span><span>For more info on UBERAlign Advanced (API / CLI / Powershell) features also read the new post here: <a href="http://nickapedia.com/2011/11/07/for-advanced-users-uberalign-api-cli-powershell/">http://nickapedia.com/2011/11/07/for-advanced-users-uberalign-api-cli-powershell/</a></span></strong></p>
<p>You know how in cartoons they show a small snowball rolling down a hill until it grows into a massive beast of a snow boulder?</p>
<p>Well, that is kind of how my most recent UBER project has gone. I know it is a been a little while since I have released a tool for the community and I am hopefully making that up with my newest creation: <strong>UBERAlign</strong>.</p>
<p>The idea of creating this came from the lack of a decent free alignment tool out there for VMware admins. Most every other one at there was either something you had to purchase or you had to be a customer of the vender to get access to it. And even after getting access these tools were either (in my opinion) limited in what they did, how they did it, or had become obsolete in a console-less vSphere 5 architecture.</p>
<p>For those they don’t know, alignment with Virtual Machine disks on top of Storage Arrays has been a performance issue for a long time. I won’t go into long detail explaining the problem or the benefits to alignment. There are great posts by Duncan (<a href="http://www.yellow-bricks.com/2010/04/08/aligning-your-vms-virtual-harddisks/">http://www.yellow-bricks.com/2010/04/08/aligning-your-vms-virtual-harddisks/</a>) and Kevin(<a href="http://www.blueshiftblog.com/?p=300">http://www.blueshiftblog.com/?p=300</a>) on what the issues are and some of the tools available.</p>
<p>So my goal in creating UBERAlign was to once and for all create a free and powerful tool resolve this issue for everyone in the VMware community. Along the way I ended up probably overdoing the way I went about it. Turns out there are issues with aligning Windows boot disks, drive letter mappings getting lost on changes, current tools requiring copying of the whole disk, and tools frying NTFS metadata. I ended up deep in the weeds learning more than I have wanted to about NTFS, MBR/GPT, and disk logical formats. I also ended spending days writing data movement algorithms on my whiteboard over and over and I tried to solve specific problems with aligning a VM. And along the way I realized I had an opportunity to solve another issue that did not have a good universal answer.</p>
<p>So let me cut the background story down and get right to the details.</p>
<p>Presenting UBERAlign, a tool for VMware Virtual Machine alignment and Space Reclamation<a href="http://nickapedia.com/wp-content/uploads/2011/11/3.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-color: initial; border-style: initial; border-width: 0px; margin: 20px;" title="3" src="http://nickapedia.com/wp-content/uploads/2011/11/3_thumb.jpg" alt="3" width="400" height="238" align="right" border="0" /></a></p>
<p>Features:</p>
<ul>
<li>Allows for fast alignment checking of virtual machines with detailed logging.</li>
<li>Can perform alignment to any offset you want. Even the crazy ones that you shouldn’t choose.</li>
<li>Works with both <strong>Windows 2000/</strong><a href="http://en.wikipedia.org/wiki/Extreme_Programming" target="_blank"><strong>XP</strong></a><strong>/2003/2008 (NTFS)</strong> and <strong>Linux Distros (EXT2/EXT3/EXT4).</strong></li>
<li>Is able to work on <strong>NTFS boot drives perfectly</strong>. It does this by rewriting NTFS Metadata (the right way).</li>
<li>Auto detects Windows 2008 and Windows 7 native installs (alignment not needed). Will not touch a System Reserved Partition (important for Windows 2008).</li>
<li>Preserves all Windows drive mapping (AFAIK only one to do so). This means no having to remap drive letters and complete support for non “C:\”  system drives with some Windows builds (some Citrix stuff).</li>
<li>Doesn’t trash the NTFS and Boot mirrors like other tools.</li>
<li>Handles <strong>Primary</strong> and <strong>Extended</strong> partitions like it is no big deal on both Windows and Linux.</li>
<li>Has the ability to handle multiple disks for a VM.</li>
<li>Multiple disks + Multiple Partitions + Multiple types (primary, logical) + Multiple file systems (NTFS, EXT#) =  no problem</li>
<li><strong><span style="text-decoration: underline;"><span style="color: #ff0000;">Also allows for optional Space Reclamation on both NTFS and Ext!</span></span></strong> That’s right: you can choose to do space reclamation at the same time as an alignment or as a option to itself. This means you can retrieve space no longer used on Thin VM’s using UBERAlign.</li>
<li>Operational model allows for completely <strong><span style="color: #ff0000;">CONCURRENCY</span></strong> with processing VMs. You can run up to <span style="text-decoration: underline;"><strong><span style="color: #ff0000;">6 simultaneous jobs per Console</span></strong></span> and as many Consoles as your VCenter can handle. This was designed to allow people with big environments to process through a large set of VM’s.</li>
<li>Options to check, align, or reclaim any choice of disks in a VM.</li>
<li>Powerful very simple to use graphic console and easy to deploy OVA’s.</li>
<li><a href="http://en.wikipedia.org/wiki/Orchestration_(computing)" target="_blank">Orchestration</a> for batch operations allowing you to process groups of VM’s with just a couple clicks.</li>
<li>Getting started is simple with just entering VCenter credentials/IP and pointing at a vAligner.</li>
<li>Space Reclamation should also help with possibly speeding up defragmentation of some NTFS file systems after. Your mileage may vary.</li>
<li>Space Reclamation can help you turn a thick VM into a thin one and actually get the space back!</li>
<li>Does all operations IN-PLACE! My first big goal was this. No more having to copy disks using the ESX command line(especially since ESX is going away). This will process a VM’s disks in-place.</li>
<li>Automatically makes a snapshot before running for failback. If you turn on your VM to check it and see anything you don’t like you can simply revert to the UBERAlign snapshot and be right back. (You should always have a backup and test also, see prereqs)</li>
<li>Automatically rolls the snapshots back if it sees an error. UBERAlign has the ability to do health check throughout the jobs and if it sees something wrong it will roll back it’s own snapshots for you.</li>
<li>Automatically enables CHKDSK scanning on each NTFS volume on the next boot.</li>
<li><span style="color: #000000;"><strong><span style="text-decoration: underline;">Completely Storage Array agnostic</span></strong></span>. That’s right: if it connects to vSphere and host storage UBERAlign will work with it. This includes local disks (see prereqs below) and arrays other than EMC. Don’t say that the EMC vSpecialists don’t love all VMware users.</li>
<li>Completed tested against vSphere 4.1 / 5 environments.</li>
</ul>
<p>So as you can see UBERAlign got to be a bit of a beast along the way.</p>
<p><a href="http://nickapedia.com/wp-content/uploads/2011/11/2.jpg"><img style="background-image: none; margin: 20px 20px 20px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="2" src="http://nickapedia.com/wp-content/uploads/2011/11/2_thumb.jpg" alt="2" width="323" height="193" align="left" border="0" /></a>UBERAlign comes in two pieces. The UBERAlign Console which is a graphical interface meant to be run on a Windows XP/7/Server system with .Net 4.0 or greater. And the UBERAlign vAligner vAppliance which is deployed from OVA into a vSphere <a href="http://en.wikipedia.org/wiki/Natural_environment" target="_blank">environment</a>. The console connect to the vSphere via SOAP and to up to 6 vAligners via REST interface. The way it works is: each vAligner can process VM’s on the storage the vSphere Host it lives on has access to. So you should spread vAligners across clusters and make sure one is on any vSphere Host that has local storage you want to access.</p>
<p>These features are meant to make the life of a VMware admin much easier when taking on this kind of task. But, let me cover some prereqs and how-to information.</p>
<p>Prerequisites/Tips/Caveats:</p>
<ul>
<li>All VM’s must be turned off to run any operation on. I won’t go into detail on why in-place + on is risky but suffice to say I wasn’t going to give it to you <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://nickapedia.com/wp-content/uploads/2011/11/wlEmoticon-smile.png" alt="Smile" /></li>
<li>Console has been tested on Windows 7 SP1 and Windows 2008 R2. You need the very latest .Net 4.0 updates also.</li>
<li>As said above: only VM’s powered off and residing on storage visible to an attached vAligner will be selectable. You don’t have to restart the console but it may take up to 60 seconds for you to see a newly turned off VM.</li>
<li>Only vAligners managed by the VCenter you connected will be useable. One VCenter per console.</li>
<li>Concurrency is based on the VM level. Which means each vAligner can handle and process through different VMs. But, a single VM with multiple disks will not be split across multiple vAligners. They will process in a linear fashion one at a time.</li>
<li>If UBERAlign detects an error on a VM disk when a previous disk was processed it will revert the previous jobs also. This is because snapshots are handled at a VM-level.</li>
<li>When doing multi-disk Windows VM’s it is recommended to align them all and to use the same offset. When the System disk is processed it assumes all the disks will be done and at the same offset. You don’t HAVE to do this but you may have to remap drive letters otherwise (not a huge deal, just annoying).</li>
<li>In order for Space Reclamation to work you must boot VM (check that it is healthy), delete all snapshots, svMotion to a different datastore while specifying that you want it thin (important). Another option is to clone the existing VM from a power off state to a new VM on another datastore while <a href="http://nickapedia.com/wp-content/uploads/2011/11/1.jpg"><img style="background-image: none; margin: 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="1" src="http://nickapedia.com/wp-content/uploads/2011/11/1_thumb.jpg" alt="1" width="299" height="179" align="right" border="0" /></a>specifying Thin for the disk format.</li>
<li>By default *Natively* installed Windows 2008 and Windows 7 installs don’t need alignment. Upgrades from Windows 2003 do. But Space Reclamation works on all of them.</li>
<li>Space Reclamation does make alignment jobs take about 15-20% longer. It all depends on the speed of the storage underneath.</li>
<li>You need to have <span style="text-decoration: underline;">at least 20% free space on any NTFS volume</span> to safely align/reclaim. This can be less on a very large volume but is a safe rule to follow. If you have to, expand a drive to make a little extra room. The alignment check reports information you can use to check.</li>
<li>vAligners currently pick up a <a href="http://en.wikipedia.org/wiki/DHCP" target="_blank">DHCP</a> address. You can view what the address has become by looking at the info pane in VCenter. Or you can set an IP manually. The vAligners are running <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a> and the login is <span style="text-decoration: underline;"><strong>root/UBERAlign.</strong></span></li>
<li>I have tested the console over WAN (Texas –&gt; North Carolina) and it works very well.</li>
<li>LVM&#8217;s are NOT supported. Long story but #1 the test cases for this are crazy and difficult to QA and #2 technically LVM gives you its own options.</li>
<li>UBERAlign is aware of how much storage space is used/available within a datastore. It keeps track and will not start jobs if there is a possibility it could cause an out of space error.</li>
</ul>
<p><strong>*DISCLAIMER*</strong><br />
Ok, before I go any further I want to mention one important thing. UBERAlign is an experimental tool and carries no support from EMC Corporation or myself (Nicholas Weaver). It is being released in beta state and while it does have functions that allow for failback you should only perform operations on Virtual Machines for which you have a solid backup. Also, I recommend you test in your lab thoroughly to make sure you understand it fully. You accept full responsibility when you use this tool.<br />
<strong>*DISCLAIMER*</strong></p>
<p>Ok, now that that is out of the way here are a few videos showing off the console and some of the cool things you can do (these are some quick/rough cuts):</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:785afe15-e8b1-4a80-bd82-39463534d288" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<div><object width="601" height="451" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=31551540&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="601" height="451" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=31551540&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></div>
<div style="width: 601px; clear: both; font-size: .8em;">.</div>
</div>
<p><object width="601" height="451" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=31551795&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="601" height="451" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=31551795&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></p>
<p><object width="601" height="451" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=31555866&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed width="601" height="451" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=31555866&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowfullscreen="true" allowscriptaccess="always" /></object></p>
<p>And now for the downloads:<br />
(<span style="color: #ff0000;">New links are HTTP, no more FTP issues</span>)</p>
<blockquote><p><strong><a href="http://72.15.252.40/public/vApps/UBERAlign/UBERAlign-Console_v1.1.10.zip" target="_blank">UBERAlign Console 1.1 – FTP</a></strong></p>
<p><strong><a href="http://72.15.252.40/public/vApps/UBERAlign/valigner_base_.5.110.ova" target="_blank">UBERAlign vAligner OVA (~500 MB) – FTP</a></strong></p></blockquote>
<p>This was a long process for me. It was something I started in June and had to delay because of VMworld 2011 and side projects. It is my last tool as a vSpecialist (<a href="http://nickapedia.com/2011/10/17/note-to-self-scary-choices-pay-off/" target="_blank">more on my move here</a>) and I hope it helps the VMware community somehow. The good news is this was designed from the beginning to be hypervisor agnostic so watch for a Hyper-V and Xen version in the future.</p>
<p>I also want to thank Larry Whitlock (EMC vSpec) who was the primary tester during the harder part of this. Without his help I would not have gotten anywhere.</p>
<p>Questions, comments, and critisism are all welcomed.</p>
<p>.nick</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://nickapedia.com/2010/12/27/behind-the-theme-music-chads-world/" rel="bookmark" class="crp_title">Behind the theme music : Chad’s World</a></li><li><a href="http://nickapedia.com/2011/11/07/for-advanced-users-uberalign-api-cli-powershell/" rel="bookmark" class="crp_title">For Advanced Users : UBERAlign API / CLI / Powershell</a></li><li><a href="http://nickapedia.com/2011/03/18/excited-about-emcworld-2011-show-it-off/" rel="bookmark" class="crp_title">Excited about EMCWorld 2011? : Show it off</a></li><li><a href="http://nickapedia.com/2011/02/22/being-a-vspec-one-year-under-the-belt/" rel="bookmark" class="crp_title">Being a vSpec : One year under the belt</a></li><li><a href="http://nickapedia.com/2010/12/27/creating-a-vapp-uber-uim/" rel="bookmark" class="crp_title">Creating a vApp : UBER UIM</a></li></ul></div><img src="http://feeds.feedburner.com/~r/Nickapedia/~4/koTlUUc6JfE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/feed/</wfw:commentRss>
		<slash:comments>97</slash:comments>
		<feedburner:origLink>http://nickapedia.com/2011/11/03/straighten-up-with-a-new-uber-tool-presenting-uberalign/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.896 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-01-24 22:50:04 --><!-- Compression = gzip -->

