<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Curious</title>
	<atom:link href="http://blogs.plexibus.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.plexibus.com</link>
	<description>Thoughts, questions and opinions - some from the trenches, a few from the Ivory Tower</description>
	<lastBuildDate>Mon, 08 Mar 2010 22:22:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Amazon EC2 Reservation ID and one of it&#8217;s uses</title>
		<link>http://blogs.plexibus.com/2010/02/23/amazon-ec2-reservation-id-and-one-of-its-uses/</link>
		<comments>http://blogs.plexibus.com/2010/02/23/amazon-ec2-reservation-id-and-one-of-its-uses/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 04:37:50 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Appistry]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[amazon ec2 reservation id st. louis cloud computing user group]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/2010/02/23/amazon-ec2-reservation-id-and-one-of-its-uses/</guid>
		<description><![CDATA[At this month&#8217;s St. Louis Cloud Computing User Group a question was posed: 
What does Reservation id mean when an AMI instance is provisioned? And what is it&#8217;s use?
If you do not know what I&#8217;m talking about, see the following command ec2-run-instances (and it&#8217;s output) which is used to launch any number of instances of [...]]]></description>
			<content:encoded><![CDATA[<p>At this <a href="http://stlcloudusers.org/2010/02/february-meeting-details/" target="_blank">month</a>&#8217;s <a href="http://stlcloudusers.org/" target="_blank">St. Louis Cloud Computing User Group</a> a question was posed: </p>
<blockquote><p>What does <i>Reservation id</i> mean when an <a href="http://aws.amazon.com/ec2/" target="_blank">AMI</a> instance is provisioned? And what is it&#8217;s use?</p></blockquote>
<p>If you do not know what I&#8217;m talking about, see the following command <font face="Courier New">ec2-run-instances</font> (and it&#8217;s output) which is used to launch any number of instances of a specified Amazon AMI:</p>
<pre class="java-codeface">
roshan@roshan:~/.ec2$ ec2-run-instances ami-cddf39a4
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
[Deprecated] Xalan: org.apache.xml.res.XMLErrorResources_en_US<br />
RESERVATION	r-06acd26e	365788654425	default<br />
INSTANCE	i-2358b248	ami-cddf39a4			pending	roshmac-keypair	0		m1.small	2010-02-19T15:04:28+0000	us-east-1d			windows	monitoring-disabled		instance-store
</div>
<p>In the above output the <font face="Courier New">RESERVATION ID</font> is <font face="Courier New">r-06acd26e</font>.</p>
<p>At the meeting I attempted to answer that question by waving my arms in a very mumbo jumbo sort of way. Pretty much like how those marketing/sales guys you meet do <img src='http://blogs.plexibus.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (j/k)<br />
I did not make sense at all. Therefore I decided to spend some time putting my thoughts down in this post.</p>
<p><strong>Reservation</strong><br />
A reservation in the above context is an atomic launch of one or many instances. One reservation does not imply a single reserved instance. For example, if you launch 1 instance, you get 1 instance ID and 1 reservation ID. If you launch 2 instances in a single <font face="Courier New">ec2-run-instances</font> command, you get 2 instance IDs, but still 1 reservation ID. Likewise if you launch <i>N</i> instances in a single <font face="Courier New">ec2-run-instances</font> command, you still get only 1 reservation ID.</p>
<p><strong>Use</strong><br />
Since a reservation is an atomic launch and the reservation id serves as an identifier to a <i>group</i> of instances, you could use it, for instance, to terminate the entire reservation of instances. The attached <a href="http://www.scala-lang.org/" target="_blank">Scala</a> script does just that! It takes a reservation id as a parameter, gets the list of instances in that reservation and then terminates those instances. This script saves you the trouble of terminating each instance manually.</p>
<p>Let&#8217;s see this script (using reservation id) in action. Let&#8217;s start 5 instances of an AMI.</p>
<pre class="java-codeface">
roshan@roshan:~/.ec2$ ec2-run-instances ami-cddf39a4 -n 5
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
[Deprecated] Xalan: org.apache.xml.res.XMLErrorResources_en_US<br />
RESERVATION	r-72feba1a	365788654425	default<br />
INSTANCE	i-f1ac539a	ami-cddf39a4			pending	roshmac-keypair	0		m1.small	2010-02-24T04:05:48+0000	us-east-1d	windows	monitoring-disabled					instance-store<br />
INSTANCE	i-f7ac539c	ami-cddf39a4			pending	roshmac-keypair	1		m1.small	2010-02-24T04:05:48+0000	us-east-1d	windows	monitoring-disabled					instance-store<br />
INSTANCE	i-f5ac539e	ami-cddf39a4			pending	roshmac-keypair	2		m1.small	2010-02-24T04:05:48+0000	us-east-1d	windows	monitoring-disabled					instance-store<br />
INSTANCE	i-cbac53a0	ami-cddf39a4			pending	roshmac-keypair	3		m1.small	2010-02-24T04:05:48+0000	us-east-1d	windows	monitoring-disabled					instance-store<br />
INSTANCE	i-c9ac53a2	ami-cddf39a4			pending	roshmac-keypair	4		m1.small	2010-02-24T04:05:48+0000	us-east-1d	windows	monitoring-disabled					instance-store
</div>
<p>Now, to delete all instances under reservation id <font face="Courier New">r-72feba1a</font>, all I have to do is the following:</p>
<pre class="java-codeface">
roshan@roshan:~/.ec2$ ec2-terminate-reservation r-72feba1a
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
Instance ids: List(i-c9ac53a2, i-cbac53a0, i-f5ac539e, i-f7ac539c, i-f1ac539a)<br />
INSTANCE	i-f7ac539c	pending	shutting-down<br />
INSTANCE	i-c9ac53a2	pending	shutting-down<br />
INSTANCE	i-f5ac539e	pending	shutting-down<br />
INSTANCE	i-f1ac539a	pending	shutting-down<br />
INSTANCE	i-cbac53a0	pending	shutting-down<br />
[Deprecated] Xalan: org.apache.xml.res.XMLErrorResources_en_US
</div>
<p>As you can see from the above output of <font face="Courier New">ec2-terminate-reservation</font>, the instances are now in the <font face="Courier New">shutting-down</font> state</p>
<p><font face="Courier New">ec2-describe-instances</font> confirms that the instances are being shutdown</p>
<pre class="java-codeface">
roshan@roshan:~/.ec2$ ec2-describe-instances
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
[Deprecated] Xalan: org.apache.xml.res.XMLErrorResources_en_US<br />
RESERVATION	r-36da9e5e	365788654425	default<br />
INSTANCE	i-e7728e8c	ami-9dde38f4			terminated		0		m1.small	2010-02-24T02:33:32+0000	us-east-1d	windows	monitoring-disabled					instance-store<br />
INSTANCE	i-e5728e8e	ami-9dde38f4			terminated		1		m1.small	2010-02-24T02:33:32+0000	us-east-1d	windows	monitoring-disabled					instance-store<br />
RESERVATION	r-72feba1a	365788654425	default<br />
INSTANCE	i-f1ac539a	ami-cddf39a4	ec2-184-73-35-115.compute-1.amazonaws.com	ip-10-242-193-159.ec2.internal	shutting-down	roshmac-keypair	0	m1.small	2010-02-24T04:05:48+0000	us-east-1d			windows	monitoring-disabled	184.73.35.115	10.242.193.159			instance-store<br />
INSTANCE	i-f7ac539c	ami-cddf39a4	ec2-67-202-43-95.compute-1.amazonaws.com	ip-10-243-23-239.ec2.internal	shutting-down	roshmac-keypair	1	m1.small	2010-02-24T04:05:48+0000	us-east-1d			windows	monitoring-disabled	67.202.43.95	10.243.23.239			instance-store<br />
INSTANCE	i-f5ac539e	ami-cddf39a4	ec2-184-73-10-172.compute-1.amazonaws.com	ip-10-243-25-175.ec2.internal	shutting-down	roshmac-keypair	2	m1.small	2010-02-24T04:05:48+0000	us-east-1d			windows	monitoring-disabled	184.73.10.172	10.243.25.175			instance-store<br />
INSTANCE	i-cbac53a0	ami-cddf39a4	ec2-174-129-77-181.compute-1.amazonaws.com	ip-10-242-73-220.ec2.internal	shutting-down	roshmac-keypair	3	m1.small	2010-02-24T04:05:48+0000	us-east-1d			windows	monitoring-disabled	174.129.77.181	10.242.73.220			instance-store<br />
INSTANCE	i-c9ac53a2	ami-cddf39a4	ec2-75-101-231-29.compute-1.amazonaws.com	ip-10-242-77-126.ec2.internal	shutting-down	roshmac-keypair	4	m1.small	2010-02-24T04:05:48+0000	us-east-1d			windows	monitoring-disabled	75.101.231.29	10.242.77.126			instance-store
</div>
<p><strong>How to use <font face="Courier New">ec2-terminate-reservation</font></strong><br />
Download the attached <font face="Courier New">ec2-terminate-reservation.sh</font> script to your <font face="Courier New">$EC2_HOME/bin</font> directory, rename it to ec2-terminate-reservation and make it executable. </p>
<pre class="java-codeface">
roshan@roshan:~/.ec2$ chmod +x ec2-terminate-reservation
</pre>
<p>You should have <a href="http://www.scala-lang.org/downloads" target="_blank">Scala</a> installed and the <font face="Courier New">$SCALA_HOME/bin</font> appended to your <font face="Courier New">PATH</font> for the script to work.</p>
<p><strong><a href="http://blogs.plexibus.com/wp-content/uploads/2010/02/ec2-terminate-reservation.sh">ec2-terminate-reservation</a></strong></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=d85bfd0f-9b40-83dc-a7a1-c7e30ab332df" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2010/02/23/amazon-ec2-reservation-id-and-one-of-its-uses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does your processor support virtualization technology?</title>
		<link>http://blogs.plexibus.com/2010/01/21/does-your-processor-support-virtualization-technology/</link>
		<comments>http://blogs.plexibus.com/2010/01/21/does-your-processor-support-virtualization-technology/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 01:28:24 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Appistry]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[hardware virtualization]]></category>
		<category><![CDATA[kvm]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/2010/01/21/does-your-processor-support-virtualization-technology/</guid>
		<description><![CDATA[Most newer processors from Intel (VT) and AMD (AMD-V) now come with hardware support for virtualization. Which makes using virtualization frameworks or hypervisors like KVM, XEN, etc. possible.
But before you jump into virtualization, how can you find out if your existing infrastructure/machines support it?
In Linux, you can do this by checking for the following flags [...]]]></description>
			<content:encoded><![CDATA[<p>Most newer processors from Intel (VT) and AMD (AMD-V) now come with hardware support for virtualization. Which makes using virtualization frameworks or hypervisors like KVM, XEN, etc. possible.</p>
<p>But before you jump into virtualization, how can you find out if your existing infrastructure/machines support it?</p>
<p>In Linux, you can do this by checking for the following flags in the /proc/cpuinfo file:
<ul>
<li>vmx (for intel)</li>
<p>
<li>svm (for amd)</li>
<p></ul>
<p>Run the following command:
<pre class="java-codeface">
egrep '(vmx|svm)' --color=always /proc/cpuinfo
</pre>
<p>If your processors supports virtualization, you will see an output like the following:
<div style="border: 1px solid black; width: 90%; background-color: rgb(0, 0, 0); font-size: 11px; color: rgb(255, 255, 255);">flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow<br />flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow</div>
<p>Since I have 2 processors, the above output shows 2 &#8220;flags&#8221; section.</p>
<p>Note the above command only indicates that your processors support virtualization. You will need to make sure that it is not disabled in your machine&#8217;s BIOS.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=10a1f665-34bb-8051-9e79-eb522dafac99" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2010/01/21/does-your-processor-support-virtualization-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No putty-cm for the Mac, will have to do with iTerm</title>
		<link>http://blogs.plexibus.com/2010/01/19/no-putty-cm-for-the-mac-will-have-to-do-with-iterm/</link>
		<comments>http://blogs.plexibus.com/2010/01/19/no-putty-cm-for-the-mac-will-have-to-do-with-iterm/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 21:10:10 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[iTerm]]></category>
		<category><![CDATA[putty-cm]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/2010/01/19/no-putty-cm-for-the-mac-will-have-to-do-with-iterm/</guid>
		<description><![CDATA[In the Windows world, connecting and managing SSH sessions to multiple Linux hosts is made easy by using putty in conjunction with putty connection manager (PuTTY-CM). 
The three features I really like about PuTTY-CM are:

Ability to re-size and arrange windows (SSH sessions to multiple Linux machines) within the parent window
Ability to execute a command across [...]]]></description>
			<content:encoded><![CDATA[<p>In the Windows world, connecting and managing SSH sessions to multiple Linux hosts is made easy by using <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/" target="_blank">putty</a> in conjunction with <a href="http://puttycm.free.fr/" target="_blank">putty connection manager</a> (PuTTY-CM). </p>
<p>The three features I really like about PuTTY-CM are:</p>
<ul>
<li>Ability to re-size and arrange windows (SSH sessions to multiple Linux machines) within the parent window</li>
<li>Ability to execute a command across multiple active SSH sessions at the same time</li>
</ul>
<p>The ability to execute the same command on multiple SSH sessions is HUGE for me given that I am generally working with either VMs or multiple physical machines at any given point of time.</p>
<p>I have googled quite a bit to find an equivalent of PuTTY-CM for the Mac. And the closest I have come is <a href="http://iterm.sourceforge.net/" target="_blank">iTerm</a>.<br />
I say <i>closest</i>, since iTerm does not have the feature of re-sizing/re-arranging the SSH sessions (tabs) within a parent window. </p>
<p>But hey, the ability to &#8220;Send Input to all tabs&#8221; (Shift + Command + I) within a window is still HUGE and an excellent feature over the Terminal app that comes bundled with the Mac OS X.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=6cc67775-419f-863b-bbd2-854c05fc21fe" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2010/01/19/no-putty-cm-for-the-mac-will-have-to-do-with-iterm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running multiple Eclipse editor instances on Mac OS X</title>
		<link>http://blogs.plexibus.com/2010/01/05/running-multiple-eclipse-editor-instances-on-mac-os-x/</link>
		<comments>http://blogs.plexibus.com/2010/01/05/running-multiple-eclipse-editor-instances-on-mac-os-x/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 19:22:32 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/2010/01/05/running-multiple-eclipse-editor-instances-on-mac-os-x/</guid>
		<description><![CDATA[I recently started using a MacBook Pro and it is turning into my primary development machine. And in the process I&#8217;m learning more about Mac OS X every day. For instance, when I first started using Eclipse on the Mac, I could not figure out how to start multiple instances of Eclipse. 
I generally categorize [...]]]></description>
			<content:encoded><![CDATA[<p>I recently started using a MacBook Pro and it is turning into my primary development machine. And in the process I&#8217;m learning more about Mac OS X every day. For instance, when I first started using Eclipse on the Mac, I could not figure out how to start multiple instances of Eclipse. </p>
<p>I generally categorize my projects into multiple Eclipse workspaces and at times like having them open at the same time. In Windows/Linux OSes, this is a no-brainer &#8211; just click on the shortcut and this will start up a new process. But in Mac OS X, clicking on the Eclipse launcher in the taskbar just brought the existing Eclipse process into the foreground.</p>
<p>Finally I found out that I could accomplish what I wanted with the <font face="Courier New">open</font> command. Add it to a script as shown below and bingo, starting up multiple Eclipse workspaces is a piece of cake.</p>
<pre class="java-codeface">
#!/bin/bash

ECLIPSE_HOME=~/tools/editors/eclipse35-JEE-x86_64/eclipse
open -n $ECLIPSE_HOME/Eclipse.App
</pre>
<p>
</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=2cba6ac9-bbf6-88be-800e-4fe29fb8cc8c" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2010/01/05/running-multiple-eclipse-editor-instances-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bashisms and Ubuntu</title>
		<link>http://blogs.plexibus.com/2010/01/04/bashisms-and-ubuntu/</link>
		<comments>http://blogs.plexibus.com/2010/01/04/bashisms-and-ubuntu/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 16:00:51 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bashisms]]></category>
		<category><![CDATA[checkbashisms]]></category>
		<category><![CDATA[dash]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/2010/01/04/bashisms-and-ubuntu/</guid>
		<description><![CDATA[
Bashisms are bash extensions that are not strictly POSIX compliant. Using some of these extensions can lead to portability issues between different shells.
Since Ubuntu 6.10, the default system shell, /bin/sh, was changed to dash.  This change will cause /bin/sh scripts to fail if bash extensions exist.


There is a tool called checkbashisms that is shipped [...]]]></description>
			<content:encoded><![CDATA[<p>
Bashisms are bash extensions that are not strictly POSIX compliant. Using some of these extensions can lead to portability issues between different shells.</p>
<p>Since Ubuntu 6.10, the default system shell, <font face="Courier New">/bin/sh</font>, was changed to <font face="Courier New">dash</font>.  This change will cause /bin/sh scripts to fail if bash extensions exist.
</p>
<p>
There is a tool called <font face="Courier New">checkbashisms</font> that is shipped along with the &#8220;devscripts&#8221; package, which is able to find several kind of bashisms in /bin/sh scripts and makefiles.
</p>
<p>
<strong>Install checkbashisms</strong><br />
First, check if checkbashisms is installed using the following command:</p>
<pre class="java-codeface">
$ aptitude show devscripts
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
Package: devscripts<br />
State: not installed<br />
Version: 2.10.11ubuntu5.8.04.2<br />
Priority: optional<br />
Section: devel<br />
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com><br />
Uncompressed Size: 1274k<br />
Depends: debianutils (>= 2.0), dpkg-dev, libc6 (>= 2.1.3), perl (>= 5.8), sed (>= 2.95), wget | curl<br />
Recommends: debhelper, fakeroot<br />
Suggests: at, build-essential, cvs | subversion | svk | tla | bzr | git-core | mercurial, cvs-buildpackage, dctrl-tools, debian-keyring, devscripts-el, dupload (>= 2.1) | dput, gnupg (>= 1.0.7), gnuplot, libcrypt-ssleay-perl,<br />
          libdigest-md5-perl, libfile-desktopentry-perl, libsoap-lite-perl, libtimedate-perl, liburi-perl, libwww-perl, lintian | linda, mailx | mailutils, man-db, mutt, patch, patchutils, ssh, strace, wdiff, wget,<br />
          www-browser<br />
Conflicts: debmake (< 3.5), dupload (< 2.1), kdesdk-scripts (< 4:3.5.6-2), suidmanager (< 0.51)<br />
Description: Scripts to make the life of a Debian Package maintainer easier<br />
 Contains the following scripts, dependencies/recommendations shown in brackets afterwards: </p>
<p> * annotate-output: run a command and prepend time and stream (O for stdout, E for stderr) for every line of output<br />
 * archpath: print tla/Bazaar package names [tla | bazaar]<br />
 * bts: a command-line tool for manipulating the BTS [www-browser, libsoap-lite-perl, libwww-perl, mailx | mailutils]<br />
 * chdist: tool to easily play with several distributions [dctrl-tools]<br />
 * checkbashisms: check whether a /bin/sh script contains any common bash-specific contructs<br />
 * cvs-debi, cvs-debc: to call debi and debc from the CVS working directory after running cvs-debuild or cvs-buildpackage [cvs-buildpackage]<br />
 * cvs-debrelease: to call debrelease from the CVS working directory after running cvs-debuild or cvs-buildpackage [cvs-buildpackage, dupload | dput, ssh]<br />
 * cvs-debuild: run cvs-buildpackage using debuild (see below) as the package building program [cvs-buildpackage, fakeroot, lintian | linda, gnupg]<br />
 * dd-list: given a list of packages, pretty-print it ordered by maintainer<br />
 * debc: display the contents of just-built .debs<br />
 * debchange/dch: automagically add entries to debian/changelog files [wget, liburi-perl]<br />
 * debcheckout: checkout the development repository of a debian package<br />
 * debclean: purge a Debian source tree [fakeroot]<br />
 * debcommit: commit changes to cvs, svn, svk, tla, bzr, git, or hg, basing commit message on changelog [cvs | subversion | svk | tla | bzr | git-core | mercurial]<br />
 * debdiff: compare two versions of a Debian package to check for added and removed files [wdiff, patchutils]<br />
 * debi: install a just-built package<br />
 * debpkg: dpkg wrapper to be able to manage/test packages without su<br />
 * debrelease: wrapper around dupload or dput [dupload | dput, ssh]<br />
 * debsign, debrsign: sign a .changes/.dsc pair without needing any of the rest of the package to be present; can sign the pair remotely or fetch the pair from a remote machine for signing [gnupg, debian-keyring, ssh]<br />
 * debuild: wrapper to build a package without having to su or worry about how to invoke dpkg to build using fakeroot.  Also deals with common environment problems, umask etc. [fakeroot, lintian | linda, gnupg]<br />
 * deb-reversion: increases a binary package version number and repacks the archive<br />
 * desktop2menu: produce a skeleton menu file from a freedesktop.org desktop file [libfile-desktopentry-perl]<br />
 * dget: downloads Debian source and binary packages [wget]<br />
 * dpkg-depcheck, dpkg-genbuilddeps: determine the packages used during the build of a Debian package; useful for determining the Build-Depends control field needed [build-essential, strace]<br />
 * dscverify: verify the integrity of a Debian package from the .changes or .dsc files [gnupg, debian-keyring, libdigest-md5-perl]<br />
 * grep-excuses: grep the update_excuses.html file for your packages [wget]<br />
 * licensecheck: attempt to determine the license of source files<br />
 * list-unreleased: searches for unreleased packages<br />
 * manpage-alert: locate binaries without corresponding manpages [man-db]<br />
 * mass-bug: mass-file bug reports [mailx | mailutils]<br />
 * mergechanges: merge .changes files from a package built on different architectures<br />
 * nmudiff: mail a diff of the current package against the previous version to the BTS to assist in tracking NMUs [patchutils, mutt]<br />
 * plotchangelog: view a nice plot of the data in a changelog file [libtimedate-perl, gnuplot]<br />
 * pts-subscribe: subscribe to the PTS for a limited period of time [mailx | mailutils, at]<br />
 * rc-alert: list installed packages which have release-critical bugs [wget]<br />
 * rmadison: remotely query the Debian archive database about packages [wget, liburi-perl]<br />
 * svnpath: print svn repository paths [subversion]<br />
 * tagpending: shell script which runs from a Debian source tree and tags bugs that are to be closed in the latest changelog as pending. [wget, liburi-perl]<br />
 * uscan: scan upstream sites for new releases of packages [libcrypt-ssleay-perl, libwww-perl]<br />
 * uupdate: integrate upstream changes into a source package [patch]<br />
 * whodepends: check which maintainers' packages depend on a package<br />
 * who-uploads [gnupg, debian-keyring, wget]: determine the most recent uploaders of a package to the Debian archive<br />
 * wnpp-alert: list installed packages which are orphaned or up for adoption [wget] </p>
<p> Also included are a set of example mail filters for filtering mail from Debian mailing lists using exim, procmail, etc.
</p></div>
<p>Since in our case it is not installed, we will install <font face="Courier New">checkbashisms</font> using the following command:</p>
<pre class="java-codeface">
$ sudo aptitude -y install devscripts
</pre>
</p>
<p>
<strong>Using checkbashisms</strong><br />
Once you have the devscripts package installed, you can check for bashisms in scripts using the the following command:<br />
$ checkbashisms [-n] [-f] [-x] script_filename<br />
For example, to check for bashisms in the start-up script for Appistry CloudIQ cloud platform, use the following command:</p>
<pre class="java-codeface">
$ checkbashisms -f /etc/init.d/fabric_keeper
</pre>
<p>The above command returns the following output:</p>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
possible bashism in /etc/init.d/fabric_keeper line 29 (ulimit):<br />
ulimit -c unlimited<br />
possible bashism in /etc/init.d/fabric_keeper line 95 (kill -[0-9] or -[A-Z]):<br />
      kill -15 `cat $FABRIC_HOME/$1.pid`<br />
possible bashism in /etc/init.d/fabric_keeper line 103 (let &#8230;):<br />
        let counter=counter+1<br />
possible bashism in /etc/init.d/fabric_keeper line 104 (kill -[0-9] or -[A-Z]):<br />
        [ -r $FABRIC_HOME/$1.pid ] &#038;&#038; kill -0 `cat $FABRIC_HOME/$1.pid 2>/dev/null` 2>/dev/null
</div>
<p>
Checkbashisms provides a good starting point to find bash extensions in /bin/sh scripts. Using this tool, you should be well on your way to getting rid of these bash extensions and towards creating portable scripts.
</p>
<p>
To learn more about <i>bashisms</i> see <a href="https://wiki.ubuntu.com/DashAsBinSh">https://wiki.ubuntu.com/DashAsBinSh</a>
</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=e4d547ea-454e-89bc-a25d-b3cded31b7e9" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2010/01/04/bashisms-and-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Appistry CloudIQ on Ubuntu</title>
		<link>http://blogs.plexibus.com/2010/01/04/appistry-cloudiq-on-ubuntu/</link>
		<comments>http://blogs.plexibus.com/2010/01/04/appistry-cloudiq-on-ubuntu/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 14:26:39 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Appistry]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloudiq]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[appistry cloud platform]]></category>
		<category><![CDATA[cloudiq engine]]></category>
		<category><![CDATA[cloudiq manager]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/2010/01/04/appistry-cloudiq-on-ubuntu/</guid>
		<description><![CDATA[
In this post, I have laid out instructions on installing Appistry CloudIQ on Ubuntu. Since Appistry does not provide a .deb package on it&#8217;s download site, I composed these instructions once I converted and installed the .rpm on my Ubuntu OS.
The various steps detailed below are available as a script that you can download and [...]]]></description>
			<content:encoded><![CDATA[<p>
In this post, I have laid out instructions on installing Appistry CloudIQ on Ubuntu. Since Appistry does not provide a .deb package on it&#8217;s download site, I composed these instructions once I converted and installed the .rpm on my Ubuntu OS.<br />
The various steps detailed below are available as a script that you can download and run. See &#8220;Download&#8221; section below.</p>
<p>Note: <i>These instructions should work with other Debian flavors as well.</i>
</p>
<div style="float: right; margin: 10px 0 10px 30px; padding: 10px 20px 20px 20px; width: 33%; border: 1px solid black; background-color: #F4F4F4; font-size: 11px;">
<strong>What is Appistry CloudIQ</strong>?</p>
<p>
<a href="http://www.appistry.com/">Appistry</a> <a href="http://www.appistry.com/products">CloudIQ</a> is a Cloud Platform that can be installed on-premise in your lab/datacenter OR on public infrastructure cloud offerings such as Amazon EC2, RackSpace cloud, GoGrid, etc.</p>
<p>Appistry CloudIQ not only enables enterprises to deploy/manage applications onto physical or virtualized infrastructure but also provides an environment that allows applications to scale linearly and reliably.
</p>
</div>
<p>
<strong>Download Appistry-CloudIQ</strong><br />
Download the rpm package for Appistry-CloudIQ from the Community site. The <a href="http://www.appistry.com/community/content/downloads">free Community edition</a> is great to start building a small enterprise cloud on-premise. For the purpose of this post, I&#8217;m Appistry-CloudIQ Platform 4.2 Community edition for RHEL 5.x, x86 32-bit version.
</p>
<p>
After you have downloaded, you should see something like this:</p>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
roshan@ubuntuWorkerB:~$ ls -l<br />
total 44988<br />
-rw-r&#8211;r&#8211; 1 roshan roshan 46015607 2009-12-17 14:57 appistry-cloudiq-4.2.1.2-rhel5.rpm
</div>
</p>
<p>
<strong>Create .deb package</strong><br />
Once you have the package downloaded, use <font face="Courier New">alien</font> to convert the rpm to a .deb package using the commands below. The package <font face="Courier New">alien</font> allows you to convert rpm packages to debian packages and then install them via <font face="Courier New">dpkg</font>. See <a href="http://blogs.plexibus.com/2010/01/04/install-rpms-packages-on-ubuntu-using-alien-2/">how-to</a> install <font face="Courier New">alien</font>how-to</font>.</p>
<p>Convert the rpm package to the debian package using the following command:</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo alien -kc appistry-cloudiq-4.2.1.2-rhel5.rpm
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
appistry-cloudiq_4.2.1.2-rhel5_i386.deb generated
</div>
</p>
<p>
<strong>Install the .deb pacakge</strong><br />
Now that you have the .deb package, install it using <font face="Courier New">dpkg</font>.</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo dpkg -i appistry-cloudiq_4.2.1.2-rhel5_i386.deb
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
(Reading database &#8230; 47465 files and directories currently installed.)<br />
Unpacking appistry-cloudiq (from appistry-cloudiq_4.2.1.2-rhel5_i386.deb) &#8230;<br />
Setting up appistry-cloudiq (4.2.1.2-rhel5) &#8230;<br />
Adding group &#8216;fabricuser&#8217;<br />
Adding user &#8216;fabricuser&#8217;<br />
Usage: useradd [options] LOGIN</p>
<p>Options:<br />
  -b, &#8211;base-dir BASE_DIR       base directory for the new user account<br />
                                home directory<br />
  -c, &#8211;comment COMMENT         set the GECOS field for the new user account<br />
  -d, &#8211;home-dir HOME_DIR       home directory for the new user account<br />
  -D, &#8211;defaults                print or save modified default useradd<br />
                                configuration<br />
  -e, &#8211;expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE<br />
  -f, &#8211;inactive INACTIVE       set password inactive after expiration<br />
                                to INACTIVE<br />
  -g, &#8211;gid GROUP               force use GROUP for the new user account<br />
  -G, &#8211;groups GROUPS           list of supplementary groups for the new<br />
                                user account<br />
  -h, &#8211;help                    display this help message and exit<br />
  -k, &#8211;skel SKEL_DIR           specify an alternative skel directory<br />
  -K, &#8211;key KEY=VALUE           overrides /etc/login.defs defaults<br />
  -l,                           do not add the user to the lastlog and<br />
                                faillog databases<br />
  -m, &#8211;create-home             create home directory for the new user<br />
                                account<br />
  -N, &#8211;no-user-group           do not create a group with the same name as<br />
                                the user<br />
  -o, &#8211;non-unique              allow create user with duplicate<br />
                                (non-unique) UID<br />
  -p, &#8211;password PASSWORD       use encrypted password for the new user<br />
                                account<br />
  -r, &#8211;system                  create a system account<br />
  -s, &#8211;shell SHELL             the login shell for the new user account<br />
  -u, &#8211;uid UID                 force use the UID for the new user account<br />
  -U, &#8211;user-group              create a group with the same name as the user</p>
<p>chown: invalid user: `fabricuser:fabricuser&#8217;
</p></div>
</p>
<p>
The install fails to create the user &#8220;fabricuser&#8221;. So let&#8217;s create it and add it to group &#8220;fabricuser&#8221;.</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo useradd -s /bin/bash -g fabricuser fabricuser
</pre>
<p>You can confirm that the user was created by running the following command:</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ cat /etc/passwd | grep fabricuser
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
fabricuser:x:1001:1001::/home/fabricuser:/bin/bash
</div>
</p>
<p>
<strong>Change ownership of /usr/local/appistry/cloudiq to fabricuser</strong><br />
Change ownership of the /usr/local/appistry/cloudiq directory recursively to fabricuser using the following command:</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo chown -R fabricuser:fabricuser /usr/local/appistry/cloudiq
</pre>
</p>
<p>
<strong>Update scripts and create <font face="Courier New">/bin/arch</font> script</strong><br />
First, update the start-up scripts &#8211; fabric_keeper and fabric_system_service to explicitly use the <font face="Courier New">/bin/bash</font> interpreter. These two scripts are located under <font face="Courier New">/etc/init.d</font> directory.</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo sed -ie 's/\/bin\/sh/\/bin\/bash/g' /etc/init.d/fabric_system_service
roshan@ubuntuWorkerB:~$ sudo sed -ie 's/\/bin\/sh/\/bin\/bash/g' /etc/init.d/fabric_keeper
</pre>
<p>The reason for doing this is because of the <i><a href="http://blogs.plexibus.com/2010/01/04/bashisms-and-ubuntu/">bashisms</a></i> that exist in the two scripts. </p>
<div style="float: right; margin: 10px 0 10px 30px; padding: 10px 20px 20px 20px; width: 33%; border: 1px solid black; background-color: #F4F4F4; font-size: 11px;">
<strong>Bashisms</strong></p>
<p>
<i>Bashisms</i> are bash extensions that are not strictly POSIX compliant. Using some of these extensions can lead to portability issues between different shells.
</p>
<p>
Appsitry CloudIQ start-up scripts contain some <i>bashisms</i> such as <font face="Courier New">let</font> which cause the scripts to fail when <font face="Courier New">dash</font> runs them. Therefore the explicit change from <font face="Courier New">/bin/sh</font> to <font face="Courier New">/bin/bash</font>. A cleaner approach would be to remove these <i>bashisms</i> which perhaps the Appistry CloudIQ developers will get around to doing so sometime in the near future. If you have a few more minutes on your hand, feel free to remove the <i>bashisms</i>
</p>
</div>
<p>Next, we need to create an executable script <font face="Courier New">arch</font> under the <font face="Courier New">/bin</font> directory.</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ echo "uname -m" &gt; arch
roshan@ubuntuWorkerB:~$ sudo mv arch /bin/.; sudo chmod +x /bin/arch
</pre>
<p>The reason for doing this is because the start-up scripts <font face="Courier New">source</font> in <font face="Courier New">/etc/fabric_env</font> references <font face="Courier New">/bin/arch</font> which does not exist in Ubuntu since version 7.10. This causes the start-up scripts to fail. See <a href="https://bugs.launchpad.net/ubuntu/+source/util-linux/+bug/148511">https://bugs.launchpad.net/ubuntu/+source/util-linux/+bug/148511</a> for more information.
</p>
<p>
<strong>Set up symlinks for libssl.so.6 and libcrypto.so.6 shared libraries</strong><br />
Since the start up scripts attempt to load the libssl.so.6 and libcrypto.so.6 shared libraries, create symlinks with these names under <font face="Courier New">/usr/lib</font> directory.</p>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
roshan@ubuntuWorkerB:~$ cd /usr/lib<br />
roshan@ubuntuWorkerB:~$ ls -l libss*<br />
lrwxrwxrwx 1 root root 20 2009-11-30 15:28 /usr/lib/libssl.so.0.9.8 -> /lib/libssl.so.0.9.8<br />
roshan@ubuntuWorkerB:/usr/lib$ ls -l libcrypto*<br />
lrwxrwxrwx 1 root root 23 2009-11-30 15:28 libcrypto.so.0.9.8 -> /lib/libcrypto.so.0.9.8
</div>
<pre class="java-codeface">
roshan@ubuntuWorkerB:/usr/lib$ sudo ln -s libssl.so.0.9.8 libssl.so.6
roshan@ubuntuWorkerB:/usr/lib$ sudo ln -s libcrypto.so.0.9.8 libcrypto.so.6
</pre>
<p>If you do not create the above symlinks you will get errors like:</p>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
Starting Appistry Fabric System Service: ./fabric_system_service: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
</div>
<p>and</p>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
Starting Appistry Fabric System Service: ./fabric_system_service: error while loading shared libraries: libcrypto.so.6: cannot open shared object file: No such file or directory
</div>
</p>
<p>
<strong>Reboot to start Appistry CloudIQ</strong><br />
Reboot Ubuntu. You should see the following messages when Ubuntu is restarting.</p>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
Starting Appistry Fabric Keeper:<br />
Starting Appistry Fabric System Service:
</div>
<p>Also, start <font face="Courier New">log_monitor</font>. You should see heartbeat messages.</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ . /etc/fabric_env
roshan@ubuntuWorkerB:~$ log_monitor 239.255.0.1
</pre>
<div style="width: 90%; border: 1px solid black; background-color: #000; font-size: 11px; color: #FFF">
Monitor listening on: 239.255.0.1:4000<br />
Jan 02 15:03:49 10.0.2.15 RegionService[I:8011] Location: 10.0.2.15 Region: 239.255.0.1:32000 Heartbeat size: 1<br />
Jan 02 15:03:53 10.0.2.15 RegionService[I:8011] Location: 10.0.2.15 RegionLeaderRegion:  Heartbeat size: 1<br />
Jan 02 15:03:56 10.0.2.15 RegionService[I:8011] Location: 10.0.2.15 Region: 239.255.0.1:32000 Heartbeat size: 1<br />
Jan 02 15:04:02 10.0.2.15 RegionService[I:8011] Location: 10.0.2.15 Region: 239.255.0.1:32000 Heartbeat size: 1<br />
Jan 02 15:04:04 10.0.2.15 RegionService[I:8011] Location: 10.0.2.15 RegionLeaderRegion:  Heartbeat size: 1<br />
Jan 02 15:04:08 10.0.2.15 RegionService[I:8011] Location: 10.0.2.15 Region: 239.255.0.1:32000 Heartbeat size: 1
</div>
<p>You now have the world&#8217;s best cloud platform &#8211; Appistry CloudIQ &#8211; running on Ubuntu.
</p>
<p>
In future posts, we will see how to create/migrate/manage infrastructure and applications to the &#8220;cloud&#8221; using Appistry CloudIQ
</p>
<p>
<strong>Downloads</strong><br />
Download the following script and place it alongside the appistry-cloudiq-X.x.rpm that you downloaded from the Appistry Community website. </p>
<p><a href='http://blogs.plexibus.com/wp-content/uploads/2010/01/cloudiq-ubuntu-install.sh'>cloudiq-ubuntu-install.sh</a></p>
<p>Next, run the script as follows:</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo sh cloudiq-ubuntu-install.sh appistry-cloudiq-4.2.1.2-rhel5.rpm
</pre>
<p>where, appistry-cloudiq-4.2.1.2-rhel5.rpm is the version that I downloaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2010/01/04/appistry-cloudiq-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install rpms packages on Ubuntu using alien</title>
		<link>http://blogs.plexibus.com/2010/01/04/install-rpms-packages-on-ubuntu-using-alien-2/</link>
		<comments>http://blogs.plexibus.com/2010/01/04/install-rpms-packages-on-ubuntu-using-alien-2/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 14:15:23 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[alien]]></category>
		<category><![CDATA[rpm to deb]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/2010/01/04/install-rpms-packages-on-ubuntu-using-alien-2/</guid>
		<description><![CDATA[
alien is a program that converts between Red Hat rpm, Debian deb, Stampede slp, Slackware tgz, and Solaris pkg file formats.


Install alien
First check if alien is installed

roshan@ubuntuWorkerB:~$ alien


The program &#8216;alien&#8217; is currently not installed.  You can install it by typing:
sudo apt-get install alien
-bash: alien: command not found

Since alien is not installed, use the following [...]]]></description>
			<content:encoded><![CDATA[<p>
<font face="Courier New">alien</font> is a program that converts between Red Hat rpm, Debian deb, Stampede slp, Slackware tgz, and Solaris pkg file formats.
</p>
<p>
<strong>Install alien</strong><br />
First check if <font face="Courier New">alien</font> is installed</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ alien
</pre>
<div style="border: 1px solid black; width: 90%; background-color: rgb(0, 0, 0); font-size: 11px; color: rgb(255, 255, 255);">
The program &#8216;alien&#8217; is currently not installed.  You can install it by typing:<br />
sudo apt-get install alien<br />
-bash: alien: command not found
</div>
<p>Since <font face="Courier New">alien</font> is not installed, use the following command to install it</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo aptitude -y install alien
</pre>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ alien
</pre>
<div style="border: 1px solid black; width: 90%; background-color: rgb(0, 0, 0); font-size: 11px; color: rgb(255, 255, 255);">
You must specify a file to convert.</p>
<p>Usage: alien [options] file [...]<br />
  file [...]                Package file or files to convert.
</p></div>
</p>
<p>
<strong>Using alien</strong></p>
<p>If you have an rpm package, you can convert it to a debian (deb) package using the following command:</p>
<pre class="java-codeface">
roshan@ubuntuWorkerB:~$ sudo alien -kc appistry-cloudiq-4.2.1.2-rhel5.rpm
</pre>
<div style="border: 1px solid black; width: 90%; background-color: rgb(0, 0, 0); font-size: 11px; color: rgb(255, 255, 255);">
appistry-cloudiq_4.2.1.2-rhel5_i386.deb generated
</div></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2010/01/04/install-rpms-packages-on-ubuntu-using-alien-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting System Environment variables in Windows using Windows Scripting Host</title>
		<link>http://blogs.plexibus.com/2009/04/14/setting-system-environment-variables-in-windows-using-windows-scripting-host/</link>
		<comments>http://blogs.plexibus.com/2009/04/14/setting-system-environment-variables-in-windows-using-windows-scripting-host/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 20:15:24 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[setting environment variables]]></category>
		<category><![CDATA[windows scripting]]></category>
		<category><![CDATA[windows scripting host]]></category>
		<category><![CDATA[wsh]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/?p=106</guid>
		<description><![CDATA[There are various ways to do this. The approach discussed here uses Windows Scripting Host (WSH) and probably offers the least amount of resistance and the most bang for the buck.
All Windows OSes with the exception of Windows 95 (I think) come with WSH pre-installed. And if you need it for Windows 95, you could [...]]]></description>
			<content:encoded><![CDATA[<p>There are various ways to do this. The approach discussed here uses Windows Scripting Host (WSH) and probably offers the least amount of resistance and the most bang for the buck.</p>
<p>All Windows OSes with the exception of Windows 95 (<i>I think</i>) come with WSH pre-installed. And if you need it for Windows 95, you could download it from the Microsoft site.</p>
<p>To display the version of WSH installed on Windows, type <strong><i>cscript</i></strong> at the command prompt and then press ENTER. It should display an output like the following:</p>
<blockquote><p>
C:\Documents and Settings\xxxx>cscript<br />
Microsoft (R) Windows Script Host Version 5.7<br />
Copyright (C) Microsoft Corporation. All rights reserved.</p>
<p>Usage: CScript scriptname.extension [option...] [arguments...]</p>
<p>Options:<br />
 //B         Batch mode: Suppresses script errors and prompts from displaying<br />
 //D         Enable Active Debugging<br />
&#8230;<br />
&#8230;
</p></blockquote>
<p>To read more about WSH: <a href="http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_overview.mspx">http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_overview.mspx</a></p>
<p>Enough talk. Let&#8217;s see an example script that sets an environment variable (say, &#8221;environSet.vbs&#8221;):</p>
<pre class="vb-codeface">
'Set JAVA_HOME, JRE_HOME and update PATH
set shellObj = WScript.CreateObject("WScript.Shell")
set envObj = shellObj.Environment("System")
envObj("JAVA_HOME")="C:\tools\jdk\jdk1.6.0_10"
envObj("JRE_HOME")="C:\tools\jdk\jdk1.6.0_10\jre"
envObj("PATH")=envObj("PATH") &#038; ";%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin\client"
</pre>
<p>To run the above script, you can open a command shell, type <i>cscript environSet.vbs</i> (or just <i>environSet.vbs</i>) and press ENTER or just double-click the <i>environSet.vbs</i> file.</p>
<p>In the above example, the JAVA_HOME and JRE_HOME system environment variables are set to &#8220;c:\tools\jdk\jdk1.6.0_10&#8243; and &#8220;c:\tools\jdk\jdk1.6.0_10\jre&#8221; respectively. The PATH system environment variable is <u>updated</u> and appended with &#8220;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin\client&#8221;.</p>
<p><strong>Notes</strong>:</p>
<ul>
<li>If the variables do not exist, they are created. If they already exist, they will be over-written unless you take care to append them as shown in the above example (see PATH)</li>
<li>When you run the above script, the updates are also reflected in the registry. In the above case since we have set the System environment variables you could browse to <i>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\</i> in <i>regedit</i> to see the system environment variables.</li>
<li>Some pre-defined system variables such as PATH may not be picked by Windows services and will require a Windows Reboot.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2009/04/14/setting-system-environment-variables-in-windows-using-windows-scripting-host/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Community One East and Cloud Application Platforms</title>
		<link>http://blogs.plexibus.com/2009/03/19/community-one-east-and-cloud-application-platforms/</link>
		<comments>http://blogs.plexibus.com/2009/03/19/community-one-east-and-cloud-application-platforms/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 21:18:56 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[appistry cloud platform]]></category>
		<category><![CDATA[community one]]></category>
		<category><![CDATA[community one east]]></category>
		<category><![CDATA[plexibus]]></category>
		<category><![CDATA[sun cloud]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/?p=90</guid>
		<description><![CDATA[First of all a big thank you to all who made it for my talk at Community One East, NY. It was on &#8220;Cloud Computing for Enterprise Software Developers&#8221;. After the talk I had a chance to network with some really smart people and talk about Appistry&#8217;s CloudIQ Platform and Sun Cloud. 
Pete Koomen, the [...]]]></description>
			<content:encoded><![CDATA[<p>First of all a big thank you to all who made it for my talk at Community One East, NY. It was on &#8220;Cloud Computing for Enterprise Software Developers&#8221;. After the talk I had a chance to network with some really smart people and talk about <a href="http://www.appistry.com/products">Appistry&#8217;s CloudIQ Platform</a> and Sun Cloud. </p>
<p>Pete Koomen, the product manager for <a href="http://code.google.com/appengine">Google App Engine</a> showed interested in the CloudIQ Engine piece of CloudIQ especially given that Goople App Engine is one of the key players in the Cloud Platform area &#8211; Hosted Cloud Platforms or PaaS, to be precise.<br />
Some folks were interested in whether CloudIQ supports scaling out .NET components. While some asked if C, C++ code was supported. <i>Yes</i> and <i>Yes</i>.</p>
<p>I&#8217;m glad I used <a href="http://www.virtualbox.org/">Sun&#8217;s VirtualBox</a> to provision VMs installed with only CloudIQ and the sample application for the demo. I call it the <i>cloud-in-a-box</i>. Also it doesn&#8217;t hurt when VirtualBox is part of Sun Cloud.<br />
Anyway, one of the slides in the presentation was that </p>
<blockquote><p>CloudIQ complements Virtualization</p></blockquote>
<p>And here is how you can do this with VirtualBox:</p>
<ol>
<li>Use VirtualBox (or Sun Cloud when it is released this summer) to provision VMs with an OS and CloudIQ installed </li>
<li>Use <a href="http://www.appistry.com/products/cloud-iq-manager">CloudIQ Manager</a> to provision and manage applications and middleware such as Tomcat, GlassFish, JBoss, etc. </li>
<li>And once you are comfortable with this setup, deploy (&#8221;touchless&#8221; or otherwise) your compute intensive code to <a href="http://www.appistry.com/products/cloud-iq-engine">CloudIQ Engine</a> to achieve linear scalability and reliability at the component level </li>
</ol>
<p>I will blog about my experience with VirtualBox and running Appistry CloudIQ platform on Ubuntu VMs soon. And when Sun&#8217;s cloud offering is released, I will tweak it to use Sun&#8217;s Cloud APIs. But if you cannot wait until then, sign up for the <a href="http://www.appistry.com/community/go/beta-program">Appistry CloudIQ 4.0 beta program</a> or download the community edition of <b>Appistry CloudIQ</b> from <a href="http://www.appistry.com/community/">here</a> and <i>start creating your very own cloud-in-a-box now!</i></p>
<p>Back to the session, I do wish I had time for Q&#038;A. My <a href="http://www.appistry.com/blogs/marksu">boss</a> had warned me about that when he gave me feedback about my presentation slides. What I&#8217;m thinking is that people must have been hungry since my session was just before lunch-break and the guy waving the &#8220;time-remaining&#8221; sign pitied the crowd and decided to cut my session short by 5 minutes. <i>Kidding!</i></p>
<p>Anyway great crowd, good times.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2009/03/19/community-one-east-and-cloud-application-platforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Community One East, Project Kenai and extensions to support Cloud Application Platforms?</title>
		<link>http://blogs.plexibus.com/2009/03/19/community-one-east-project-kenai-and-extensions-to-support-cloud-application-platforms/</link>
		<comments>http://blogs.plexibus.com/2009/03/19/community-one-east-project-kenai-and-extensions-to-support-cloud-application-platforms/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 20:05:52 +0000</pubDate>
		<dc:creator>roshanallan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[appistry cloud platform]]></category>
		<category><![CDATA[cloudiq]]></category>
		<category><![CDATA[plexibus]]></category>
		<category><![CDATA[project kenai]]></category>
		<category><![CDATA[sun cloud]]></category>

		<guid isPermaLink="false">http://blogs.plexibus.com/?p=84</guid>
		<description><![CDATA[As mentioned in my earlier post, Project Kenai is the home for Sun&#8217;s Open Cloud APIs which is a single point of management for the Sun Cloud. Sun is releasing these APIs under a open source license. Sun is looking forward to receiving feedback on these APIs so as to improve it and make it [...]]]></description>
			<content:encoded><![CDATA[<p>As mentioned in my earlier <a href="http://blogs.plexibus.com/2009/03/19/community-one-east-and-sun-cloud/">post</a>, <a href="http://kenai.com/">Project Kenai</a> is the home for Sun&#8217;s Open Cloud APIs which is a single point of management for the Sun Cloud. Sun is releasing these APIs under a open source license. Sun is looking forward to receiving feedback on these APIs so as to improve it and make it as standard.</p>
<p>I attended the Birds-of-a-feather talk hosted by <a href="http://www.tbray.org/ongoing/">Tim Bray</a>, <a href="http://blogs.sun.com/craigmcc/">Craig McClanahan</a> and Lew Tucker where they presented the APIs and answered questions. Both Tim and Craig and their team have done an excellent job of coming up with these APIs that adhere so well to the REST principles. Kudos! Tim has blogged about the Sun Cloud APIs <a href="http://www.tbray.org/ongoing/When/200x/2009/03/16/Sun-Cloud">here</a>. And so has Craig <a href="http://blogs.sun.com/craigmcc/entry/sun_shining_on_the_cloud">here</a>.</p>
<p>During the session, one of the questions was</p>
<blockquote><p>how do you upgrade middleware or applications or framework libraries (say, Hiberate) used by applications that are deployed in the cloud?</p></blockquote>
<p><b>Answer:</b> Use Cloud Application Platforms such as <a href="http://www.appistry.com/">Appistry&#8217;s</a> <a href="http://www.appistry.com/products/cloud-iq-manager">CloudIQ</a>.</p>
<p>In my humble opinion, it would be great if the folks at Project Kenai designed the APIs with extensibility in mind to support Cloud Application Platform APIs such as Appistry&#8217;s CloudIQ APIs (which are also REST based) to deploy, install, update, uninstall applications and middleware. I say this because infrastructure level APIs are limiting. </p>
<p>With infrastructure level APIs you could create a VM, clone it with application servers/applications installed and go live. But what happens when you want to deploy a new version of say, <a href="https://glassfish.dev.java.net/">GlassFish</a> (perhaps with some critical updates) to your existing production cloud? Now suddenly you are back to home-grown scripting or creating additional VMs with the new updates. Now take it to the next level where you have to create and manage these scripts for various OS&#8217;s. <em>Ewwwwww!</em></p>
<p>The solution is to use CloudIQ which abstracts out the virtual machines. Using CloudIQ you could easily deploy the new version of GlassFish to your existing production cloud without resorting to crazy, complex scripts. Save the time from creating additional VMs for every update and spend that time focusing on your business!</p>
<p><b>Another great example to drive home the importance of CloudIQ in the Cloud Computing arena:</b><br />
Assume you are using Hibernate 2.x in a couple of your several web applications running on Tomcat in your production cloud. And now you want to upgrade to the 3.x version of Hibernate for only one of your web applications. So how would you do this easily using infrastructure? </p>
<ol>
<li>Clone a production VM</li>
<li>Replace Hibernate 2.x with 3.x jars in the target web application</li>
<li>Clone that VM</li>
<li>Deploy the new VMs to the production cloud and delete the existing VMs</li>
</ol>
<p><em>Ewwwwwwww!</em></p>
<p>Using CloudIQ, you could do this in half the steps and so fast that it will make your <del datetime="2009-03-19T21:20:10+00:00">VMs</del> head spin.</p>
<ol>
<li>Replace Hibernate 2.x with 3.x jars in the target web application</li>
<li>Deploy the web application using CloudIQ Manager.</li>
</ol>
<p><em>Sweeeeeeeet!</em></p>
<p>The point I&#8217;m trying to make is that CloudIQ <i>virtualizes</i> virtualization <img src='http://blogs.plexibus.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   It gives you more fine-grained control or application level control.</p>
<p>Therefore it would be great to have Project Kenai allow for extensibility to support popular Cloud Application Platforms APIs.</p>
<p><em>What do you think?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.plexibus.com/2009/03/19/community-one-east-project-kenai-and-extensions-to-support-cloud-application-platforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.500 seconds -->
