tag:blogger.com,1999:blog-3429214981094250042024-02-07T06:09:17.018+02:00FOSS BossEgyptian geek's Blog about Linux Solaris Unix open-source and everything hot and cool in technologyKamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.comBlogger91125tag:blogger.com,1999:blog-342921498109425004.post-32382949037339209782013-03-12T00:07:00.000+02:002013-03-12T00:35:25.374+02:00Bash script self-updates from github<div dir="ltr" style="text-align: left;" trbidi="on">
Recently the systems engineering team @ <a href="http://www.cloud9ers.com/" target="_blank">Cloud9ers</a> ($dayjob) has been busy building the infrastructure for a very ambitious and large scale project for one of our customers. The project involves tons of distributed programming besides lots of systems work as well. I'd like to share with the community a small tidbit of information. It's often some small things the one sometimes gives a moment to admire, and hereby share!<br />
<h4 style="text-align: left;">
The problem</h4>
<div>
<ul style="text-align: left;">
<li>We are building a private cloud. Ubuntu server instances running on that are cloned from a master template</li>
<li>While most clouds provide what I call "Instance Identity" information through some pre-known web service URI, in our case we utilize VMware's "<a href="https://www.vmware.com/support/developer/PowerCLI/PowerCLI501/html/Invoke-VMScript.html" target="_blank">Invoke-VMScript</a>" API to run scripts inside the cloned template, thus customizing it and giving it its identity, then <a href="https://puppetlabs.com/" target="_blank">puppet</a> takes it from there. Note that we're using a simple vCenter+ESXi (no vCloud stuff here) no shared storage even!</li>
</ul>
<h4 style="text-align: left;">
Ok the real problem</h4>
</div>
<div>
<ul style="text-align: left;">
<li>Editing the template, and publishing it across the cloud (a topic for another post) takes considerable time! I wanted a way to be able to quickly update my identity scripts without having to re-build and re-publish images</li>
</ul>
<h4 style="text-align: left;">
Solution</h4>
</div>
<div>
<ul style="text-align: left;">
<li>A script with a trivially simple (thus mostly fixed) "bootstrap" section, which auto-updates itself from github and relaunches its-new-self!</li>
</ul>
<h4 style="text-align: left;">
Code</h4>
</div>
<div>
Nothing ground breaking, but still a cool trick eh! Yeah I could have added a broken this into multiple scripts and maybe run-parts them. Of-course this script is quite basic, but it's meant to remain that way since the heavy lifting is puppet's responsibility!<br />
Note: To run this successfully the user this is run under, should have passwordless sudo rights to run "ip" and to run "itself" :) Got cool ideas, thoughts or comments? Leave me a message<br />
<br /></div>
<script src="http://gist-it.appspot.com/github/kim0/vmware-bootstrap-puppet/blob/master/customization.sh?footer=0"></script>
</div>
Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0Cloud Niners30.105163797485403 31.37691201383063330.103446797485404 31.374390513830633 30.106880797485402 31.379433513830634tag:blogger.com,1999:blog-342921498109425004.post-39031299804253891742012-12-26T17:12:00.000+02:002012-12-26T17:12:27.017+02:00LXC lies about /.. inode number making FlexLM unhappy<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
One of our customers wanted to run a flexlm licensed tool on the Amazon EC2 cloud. He turned to us over here at <a href="http://www.cloud9ers.com/" target="_blank">Cloud Niners</a> and we started doing the work. The approach we chose was to start an ec2 Ubuntu precise machine, host a CentOS LXC container on it and run the license daemon inside that. The reason for the CentOS choice is that the tools and license daemons are only certified on RHEL and CentOS is the closest next thing<br />
<br />
Trying to start the license daemon, I hit the following error<br />
<br /></div>
<pre>
8:59:27 (TOOLNAME) Cannot open daemon lock file
<br />
</pre>
Checking the usual suspicions of permissions and the like led no where. Google immediately led me to similar problems for people wanting to run Flexlm tools under Solaris zones (which are quite similar to Linux LXC containers). I was reading about a guy <a href="http://coffeeortech.wordpress.com/2011/07/05/dtrace-saves-the-day/" target="_blank">facing a similar problem</a>, and how Solaris' legend Brendan Gregg wrote <a href="http://dtrace.org/blogs/brendan/2011/06/30/tweaking-memory-on-the-fly/" target="_blank">dtrace scripts to run-time patch memory structures</a> to resolve the issue.<br />
<br />
At first I was dismissive that this was what I was actually see'ing. A quick "ls -lai /" just to confirm /. and /.. actually had the same inode number, and I was sure it was something else<br />
<br />
<pre>
# ls -lai / | grep '\.$'<br />
256 dr-xr-xr-x 1 root root 212 Dec 26 09:08 .<br />
256 dr-xr-xr-x 1 root root 212 Dec 26 09:08 ..<br />
</pre>
<br />
<br />
<br />
but I had one of those mmm moments after stracing the binaries and confirming they are actually failing immediately after calling getdents on "/". This sounds suspiciously close to what the Solaris folks were see'ing. I grabbed gcc and built the sample code in <a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getdents.2.html" target="_blank">getdents kernel doc page</a> (Thankful!) And much to my surprise, inode numbers for /. and /.. were actually different!<br />
<br />
<pre>
# ./a.out / | grep '\.$'<br />
256 directory 24 1 .<br />
42669 directory 24 2 ..<br />
</pre>
<br />
<br />
<br />
Of course this makes sense since the LXC guest was just another directory on the host, but I didn't suspect ls -i was actually lying inside guests!<br />
<br />
At this point, I'm not exactly sure how to resolve my issue apart from reinstalling the LXC guest on a separate block device (like lvm) which I think should resolve the issue. This blog post is simply to confirm the issue, and to gather feedback and potential solutions from smart people reading this. <b>Shoot</b> me a comment</div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com4tag:blogger.com,1999:blog-342921498109425004.post-72283357588276004282012-10-11T11:20:00.001+02:002012-10-11T13:25:00.347+02:00Celebrating Cloud9ers is MEA's leading Amazon Consulting partner<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://aws.amazon.com/solution-providers/si/cloud-niners" target="_blank"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTSd6oMJr21Izhw_IkHh9vmOejX2BFHRNZgHbQwMi5vmflW7LubJXxk69A2fcNcvaW7sqoppiFcJdqfq4Vb_rD608O4A-iwB8XW2gMZW8_aKxoU1vkimgCJc3gCgg4Tv2GxDk0jVBR_9o/s640/cloud-niners-cloud9ers-amzon-cloud-consulting-partner.jpg" width="640" /></a></div>
<br />
It's been quite a while since I last blogged, I think it was over a year ago! I've been taking a break from blogging and focusing on <a href="http://cloud9ers.com/" target="_blank">Cloud Niners</a> my baby startup that I co-founded with a bunch of life long friends.</div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
While many things are interesting over here at <a href="http://cloud9ers.com/" target="_blank">Cloud Niners</a>, this blog post is specifically to <b>celebrate</b> the fact that we've just been upgraded to become an <a href="https://aws.amazon.com/solution-providers/si/cloud-niners" target="_blank">Amazon Consulting Partner</a>. I believe this makes us the first active middle-east <a href="http://aws.amazon.com/" target="_blank">Amazon AWS cloud</a> consulting partner and certainly the best :) I do hear a lot from Amazon that we are the <b>cloud leader</b> in the middle-east! I am quite happy that we've achieved this milestone. I'm a big believer in cloud computing, and I simply enjoy helping our clients understand how the cloud (and <a href="http://www.ubuntu.com/download/server" target="_blank">Ubuntu server</a>) can help them achieve more!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.ubuntu.com/download/server" target="_blank"><img border="0" height="86" src="http://www.ubuntu.com/sites/www.ubuntu.com/files/active/02_ubuntu/U_business/pictograms-server.png" width="320" /></a></div>
My team and I do <a href="http://cloud9ers.com/services/cloud-computing/cloud-development" target="_blank">custom cloud-application development</a>, where we write top notch <a href="http://en.wikipedia.org/wiki/HTML5" target="_blank">html5</a>/CSS3/JS web applications that run and make use of the Amazon AWS scalable cloud infrastructure. We also do mobile applications backends and front-end (<a href="http://cloud9ers.com/services/mobile-development/android-development" target="_blank">Android</a>, <a href="http://cloud9ers.com/services/mobile-development/ios-development" target="_blank">iOS</a>). We usually use the frankly excellent <a href="http://www.ubuntu.com/business/server/overview" target="_blank">Ubuntu server</a>, unless the customer forces us otherwise! Ubuntu server is simply the best OS for the cloud IMO. Our <a href="http://en.wikipedia.org/wiki/Devops" target="_blank">DevOps</a> team helps our customers migrate and run their apps on the cloud (and on Ubuntu server) at top quality!<br />
<br />
If you've read so far, here's a <b>Gift</b> for you! I'm offering my (and my team's) help (up-to-24hrs) for free in the next 30-days. If you're thinking about coding a custom cloud app, or have questions about any <a href="http://cloud9ers.com/services/cloud-computing/amazon-services" target="_blank">Amazon services</a>, I'll give you free consultation and answer any questions. Shoot me a comment over here, or <a href="http://cloud9ers.com/contact" target="_blank">contact</a> the team. Oh yeah, feel free to share this blog post with friends, to let them have the free goodies!</div>
</div>
Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-44455883247718077482011-09-23T20:53:00.001+02:002011-09-23T21:06:39.830+02:00Oneiric server, Deploy Server fleets p2Welcome to the second installment of this article series. In the first part of this article we installed an Ubuntu server instance, made sure it became an orchestra installation server. If this is new to you, Orchestra is a new Oneiric server feature that enables admins to very easily deploy fleets of Ubuntu servers. Let's pick up where the first article stopped<br />
<br />
First, let's check where we are. You see installing the orchestra server, it automatically downloads and imports various Ubuntu server ISOs and creates all the needed structure (distros, profiles ...etc) in the underlying cobbler system. Let's see what have we<br />
<br />
<pre>$ sudo cobbler list
distros:
hardy-i386
hardy-x86_64
lucid-i386
lucid-x86_64
maverick-i386
maverick-x86_64
natty-i386
natty-x86_64
oneiric-i386
oneiric-x86_64
profiles:
hardy-i386
hardy-i386-juju
hardy-x86_64
hardy-x86_64-juju
lucid-i386
lucid-i386-juju
lucid-x86_64
lucid-x86_64-juju
maverick-i386
maverick-i386-juju
maverick-x86_64
maverick-x86_64-juju
natty-i386
natty-i386-juju
natty-x86_64
natty-x86_64-juju
oneiric-i386
oneiric-i386-juju
oneiric-x86_64
oneiric-x86_64-juju
systems:
repos:
hardy-i386
hardy-i386-security
hardy-x86_64
hardy-x86_64-security
lucid-i386
lucid-i386-security
lucid-x86_64
lucid-x86_64-security
maverick-i386
maverick-i386-security
maverick-x86_64
maverick-x86_64-security
natty-i386
natty-i386-security
natty-x86_64
natty-x86_64-security
oneiric-i386
oneiric-i386-security
oneiric-x86_64
oneiric-x86_64-security
images:
mgmtclasses:
orchestra-juju-acquired
orchestra-juju-available
</pre>woah! that sure makes my life easier. If you're interested to see where the isos were downloaded (like I was) here you are<br />
<pre>ls /var/lib/cobbler/isos/
hardy-i386-mini.iso lucid-i386-mini.iso maverick-i386-mini.iso natty-i386-mini.iso oneiric-i386-mini.iso
hardy-x86_64-mini.iso lucid-x86_64-mini.iso maverick-x86_64-mini.iso natty-x86_64-mini.iso oneiric-x86_64-mini.iso
</pre><br />
Let's create a new virtual box VM, to serve as our new "server" that needs to be installed. Here's how it looks for me<br />
<a href="http://www.flickr.com/photos/90048824@N00/6175453989/" title="12-oneiric01-vboxsettings by Ahmed-Kamal, on Flickr"><img alt="12-oneiric01-vboxsettings" height="500" src="http://farm7.static.flickr.com/6179/6175453989_eddc3b516a.jpg" width="384" /></a><br />
<br />
One thing is worth noting however, it's that the NIC is placed on the "intnet" network, which has the IP range 192.168.77.0/24 that we configured in the first part of this article<br />
<a href="http://www.flickr.com/photos/90048824@N00/6175453857/" title="13-vbox-natty01-netsettings by Ahmed-Kamal, on Flickr"><img alt="13-vbox-natty01-netsettings" height="425" src="http://farm7.static.flickr.com/6166/6175453857_6edd623a70.jpg" width="500" /></a><br />
<br />
now the only "real" thing you have to do, is to add a profile on the orchestra server for your new bare server. The profile binds its mac address, to a name and an installation profile (think OS to install, kickstart ..etc)<br />
<br />
<pre>sudo cobbler system add --name="oneiric01.ubuntu.lan" --mac-address="08:00:27:B7:76:2A" --ip-address="192.168.77.33" --dns-name="oneiric01.ubuntu.lan" --hostname="oneiric01.ubuntu.lan" --profile="oneiric-x86_64-juju" --mgmt-classes="orchestra-juju-available" --kopts=" DEBCONF_DEBUG=developer netcfg/dhcp_timeout=120 netcfg/choose_interface=eth0"
</pre>Boot the server, choose PXE (For vbox that's F12 then "l" that's an L)<br />
<br />
<a href="http://www.flickr.com/photos/90048824@N00/6175981526/" title="14-natty-PXEbooting by Ahmed-Kamal, on Flickr"><img alt="14-natty-PXEbooting" height="317" src="http://farm7.static.flickr.com/6153/6175981526_e4d49e3341.jpg" width="500" /></a><br />
<br />
Watch the installer fly by (look ma hands free)<br />
<br />
<a href="http://www.flickr.com/photos/90048824@N00/6175981638/" title="15-installer-running by Ahmed-Kamal, on Flickr"><img alt="15-installer-running" height="445" src="http://farm7.static.flickr.com/6151/6175981638_432079c8d3.jpg" width="500" /></a><br />
<br />
and your box is ready!<br />
<a href="http://www.flickr.com/photos/90048824@N00/6175981698/" title="16-Oneiric01-ready by Ahmed-Kamal, on Flickr"><img alt="16-Oneiric01-ready" height="416" src="http://farm7.static.flickr.com/6178/6175981698_501492aaa2.jpg" width="500" /></a><br />
<br />
That's how easy it is to install a fresh server off your orchestra box! So basically the only thing you need to do per server, is to attach it to a profile and that's it. Boot it and it installs whatever you provisioned for it. Of course any good admin already did that manually before, but it took effort and it wasn't standardized. Now you can count on Ubuntu server covering your back when you're tasked with installing a hundred servers<br />
<br />
How cool was that! Got thoughts, comments or rotten tomatoes ? Shoot me a commentKamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com7tag:blogger.com,1999:blog-342921498109425004.post-32897148498358728422011-09-21T01:11:00.000+02:002011-09-21T01:11:07.862+02:00Oneiric server, Deploy Server fleets p1<div dir="ltr" style="text-align: left;" trbidi="on">I'm gonna be posting a series of articles on new features and cool technology bits that are landing in Ubuntu Oneiric (11.10) server. Why? I like servers, I like cloud, I like Ubuntu, it all mixes well, what's not to like :)<br />
<br />
During this first article, I'll be demoing (in a graphically intensive way :) what it takes (hint: not much!) to deploy a server fleet with Oneiric server. <a href="https://launchpad.net/orchestra">Orchestra</a> is the name of a wonderful piece of technology that lands in Oneiric, that's been created on top of the open-source <a href="https://fedorahosted.org/cobbler/">cobbler</a> project. Orchestra is super easy to install and get started with, and enables you to very rapidly deploy tens or hundreds of physical servers. I'll be using virtualbox to build a small test "lab" on my laptop for purposes of this article. I did actually try KVM first, but faced some trouble getting PXE booting reliably, so I opted for <a href="http://www.virtualbox.org/">virtualbox</a> which worked flawlessly (kudos vbox guys, you rock!)<br />
<br />
Let's get started, I created a VM to represent the very first "head node", that will install the rest of all nodes. Here is a summary of its configuration<br />
<a href="http://www.flickr.com/photos/90048824@N00/6167776998/" title="1-orchestra by Ahmed-Kamal, on Flickr"><img alt="1-orchestra" height="500" src="http://farm7.static.flickr.com/6159/6167776998_a1b0965c27.jpg" width="364" /></a><br />
Pop in the virtual CD, boot it, press F6, add "priority=critical locale=en_US url=http://bit.ly/uquick" (Thanks <a href="http://blog.dustinkirkland.com/2011/03/ubuntu-server-quick-install-no.html">Dustin</a>!) so it looks like<br />
<a href="http://www.flickr.com/photos/90048824@N00/6167777042/" title="2-orchestra-bootoptions by Ahmed-Kamal, on Flickr"><img alt="2-orchestra-bootoptions" height="416" src="http://farm7.static.flickr.com/6166/6167777042_3a046d47a8.jpg" width="500" /></a><br />
The uquick profile answers all the installer questions, such that the installation is fully automatic. Since the VM contains two NICs however, we'll need to select a primary one (eth0 in my case)<br />
<a href="http://www.flickr.com/photos/90048824@N00/6167242023/" title="3-orchestra-whicheth by Ahmed-Kamal, on Flickr"><img alt="3-orchestra-whicheth" height="408" src="http://farm7.static.flickr.com/6178/6167242023_f6d68d1a1a.jpg" width="500" /></a><br />
The installation runs like a champ, fully automated, give it a few minutes till it finishes everything and reboots into the server OS (oh that was easy!)<br />
<a href="http://www.flickr.com/photos/90048824@N00/6167242047/" title="4-orchestra-login by Ahmed-Kamal, on Flickr"><img alt="4-orchestra-login" height="416" src="http://farm7.static.flickr.com/6151/6167242047_6bd5e2f693.jpg" width="500" /></a><br />
Now I configure eth1 to have a static IP address of 192.168.77.1/24 (I made any address up), here is a snapshot of /etc/network/interfaces and I started eth1 using ifup<br />
<a href="http://www.flickr.com/photos/90048824@N00/6167777170/" title="5-orchestra-eth1up by Ahmed-Kamal, on Flickr"><img alt="5-orchestra-eth1up" height="416" src="http://farm7.static.flickr.com/6167/6167777170_6717546dce.jpg" width="500" /></a><br />
At this stage, I rebooted the server but you definitely don't have to. Let's start actually installing Orchestra<br />
<br />
<pre>sudo apt-get update
sudo apt-get install ubuntu-orchestra-server -y
</pre><br />
Everything proceeds automatically, for any question you get during package installation, I'll provide a picture with the answer :)<br />
<a href="http://www.flickr.com/photos/90048824@N00/6167242113/" title="6-cobbler-password by Ahmed-Kamal, on Flickr"><img alt="6-cobbler-password" height="416" src="http://farm7.static.flickr.com/6174/6167242113_0553b191da.jpg" width="500" /></a><br />
<a href="http://www.flickr.com/photos/90048824@N00/6167242157/" title="7-nextserver by Ahmed-Kamal, on Flickr"><img alt="7-nextserver" height="416" src="http://farm7.static.flickr.com/6168/6167242157_f4587a6af6.jpg" width="500" /></a><br />
<a href="http://www.flickr.com/photos/90048824@N00/6167777288/" title="8-enable-dns-dhcp by Ahmed-Kamal, on Flickr"><img alt="8-enable-dns-dhcp" height="416" src="http://farm7.static.flickr.com/6166/6167777288_4a69c2a9d1.jpg" width="500" /></a><br />
<a href="http://www.flickr.com/photos/90048824@N00/6167777326/" title="9-dhcp-range by Ahmed-Kamal, on Flickr"><img alt="9-dhcp-range" height="416" src="http://farm7.static.flickr.com/6172/6167777326_8fae8c2bd1.jpg" width="500" /></a><br />
<a href="http://www.flickr.com/photos/90048824@N00/6167242275/" title="10-dhcp-gw by Ahmed-Kamal, on Flickr"><img alt="10-dhcp-gw" height="416" src="http://farm7.static.flickr.com/6152/6167242275_ae23aaac7a.jpg" width="500" /></a><br />
<a href="http://www.flickr.com/photos/90048824@N00/6167242329/" title="11-domain-name by Ahmed-Kamal, on Flickr"><img alt="11-domain-name" height="416" src="http://farm7.static.flickr.com/6171/6167242329_dbac14a4e7.jpg" width="500" /></a><br />
<br />
That's it! You've just installed and configured your first Ubuntu Orchestra server, and you're now ready to install a fleet of Ubuntu servers the easy way! In part 2 of this article, I'll go through creating a second server, PXE booting and installing it from the orchestra server. (Extra credit: If you can't wait, try PXE booting a fresh server right now. Note that after installation, orchestra actually downloads and auto-imports a few Ubuntu mini ISOs, thus will need a few minutes depending on your internet connection speed)<br />
<br />
So, what do you think of this coolness? Is this easier than the last time you tried building yourself an automated network installer? Shoot me a comment, let me know what you think</div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com1tag:blogger.com,1999:blog-342921498109425004.post-21789973394864276632011-09-12T14:19:00.002+02:002011-09-12T14:34:18.909+02:00Torrent download Cloud appliance<div dir="ltr" style="text-align: left;" trbidi="on"><h2>The Why</h2><div class="separator" style="clear: both; text-align: center;"><a href="http://www.axleration.com/en/wp-content/uploads/2010/12/Torrents.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="302" src="http://www.axleration.com/en/wp-content/uploads/2010/12/Torrents.jpg" width="302" /></a></div><br />
<br />
A friend of mine who's a Linux systems geek as well, was tasked with building a library of Linux distro ISOs, this involved downloading tens of ISOs many of which were only offered in torrent form. Even if that were not the case, it would still be good practice to download such large binaries from torrent to avoid loading a certain mirror too much. Anyway, we were chatting about it, and since where I live bandwidth (especially upload) is a scarce resource, he was considering paying some service to download the torrents he needed and convert them to HTTP!<br />
<br />
I mentioned I could build something to do just that in about an hour! It wouldn't even be complex. Armed with <a href="https://ensemble.ubuntu.com/">Ensemble</a> I can very simply launch an EC2 instance, install rtorrent (my fav cli torrent client) and rtgui (rtorrent Web UI) and have it ready to crunch on any of your torrenting needs. We both became interested in seeing how well that would work and so here we go...<br />
<br />
<h2>The How</h2><br />
I'll assume you already know how to <a href="https://ensemble.ubuntu.com/docs/getting-started.html">get started with Ensemble</a>. Let's see what it takes to deploy my torrent appliance <br />
<br />
<pre>$ bzr branch lp:~kim0/+junk/rtgui
$ ensemble bootstrap
# Wait for ec2 to catch up (2~5 mins)
$ ensemble deploy --repository . rtgui
$ ensemble expose rtgui
</pre><br />
That is basically all you need to "use" this appliance! Give another few minutes for the rtgui appliance to boot, install and configure itself. You can check status with<br />
<br />
<pre>$ ensemble status
2011-09-12 13:23:53,868 INFO Connecting to environment.
machines:
0: {dns-name: ec2-50-19-19-234.compute-1.amazonaws.com, instance-id: i-2c37ee4c}
1: {dns-name: ec2-107-20-96-125.compute-1.amazonaws.com, instance-id: i-1c28f17c}
services:
rtgui:
exposed: true
formula: local:rtgui-9
relations: {}
units:
rtgui/0:
machine: 1
open-ports: [80/tcp, 55556/tcp, 55557/tcp, 55558/tcp, 55559/tcp, 55560/tcp,
6881/udp]
relations: {}
state: started
2011-09-12 13:24:01,334 INFO 'status' command finished successfully
</pre><br />
The import bit to watch for is "state: started", if it's something else, that means the ec2 instance is still being configured. It's nice to note that the following ports have been opened 55556-55560 since rtorrent is configured to use those ports, port 80 was opened for the Web UI, and port 6881 UDP was opened for the DHT network. I am in no way a torrent expert, so this could be completely unoptimized, but hey it seems to work<br />
<br />
Ready to test? Machine 1 runs rtgui, so go ahead and visit it in a browser, for me that's http://ec2-107-20-96-125.compute-1.amazonaws.com/<b>rtgui</b> (replace that DNS name with the right one for your instance, and don't forget the trailing /rtgui like I always do). Click "Add torrent" and pass it the URL to a torrent file, I'm gonna be testing with <a href="http://releases.ubuntu.com/11.10/ubuntu-11.10-beta1-desktop-amd64.iso.torrent">Ubuntu 11.10 beta1 amd64 torrent file</a>. Once the torrent is added, click the green play button to start it. Since EC2 instances have quite some bandwidth available to them, this Ubuntu torrent downloaded in a just few seconds. I am shipping a default configuration with rtorrent that limits upload speed to 100KB (since you're paying for bandwidth), but you can change that from the web UI. Here's how the whole thing looks<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLbaIoDa3zBQWQl7M_aXKiO7J22UQ9gMJQ9SWabls77Jn-MFNdTFUod2i9AeUwv0ZCNXbXrZN3WrSPQlqKt3xCvYuONB23Jj374AxP3ck3kVk6zzQdiV_nEVDHc4GzYUPoFiOjtU8HQb0/s1600/rtgui-web-ui.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLbaIoDa3zBQWQl7M_aXKiO7J22UQ9gMJQ9SWabls77Jn-MFNdTFUod2i9AeUwv0ZCNXbXrZN3WrSPQlqKt3xCvYuONB23Jj374AxP3ck3kVk6zzQdiV_nEVDHc4GzYUPoFiOjtU8HQb0/s640/rtgui-web-ui.png" width="640" /></a></div><br />
Once a torrent file is downloaded, you can download it through http://ec2-107-20-96-125.compute-1.amazonaws.com/<b>complete</b> (again replace the machine DNS name, with the correct name in your case)<br />
<br />
A single torrent appliance is not ofcourse limited to a single torrent! You can keep adding as much as you want, however eventually you're going to hit some limit (disk IO, network IO, disk space ...etc). As such (probably only if you're after downloading really large number of torrents) you may need to "scale up" this torrent download appliance (well it's a cloud for God's sake!). If that's what you wish for, you only need to<br />
<pre>$ ensemble add-unit rtgui
</pre><br />
Simple as that, as with everything Ensemble! So now you know how you can download your 11.10 copy without loading Ubuntu's servers, actually you'd be helping them and all millions of Ubuntu users if you use this method on release day. Once you're done playing with the appliance, you need to destroy it (to stop paying Amazon for the machines)<br />
<br />
<pre>$ ensemble destroy-environment
WARNING: this command will destroy the 'sample' environment (type: ec2).
This includes all machines, services, data, and other resources. Continue [y/N]<b>y</b>
2011-09-12 13:53:33,018 INFO Destroying environment 'sample' (type: ec2)...
2011-09-12 13:53:36,641 INFO Waiting on 2 EC2 instances to transition to terminated state, this may take a while
2011-09-12 13:54:18,617 INFO 'destroy_environment' command finished successfully
</pre><br />
<h2>Want to improve it?</h2><br />
Things I wish I had time to improve:<br />
<ul><li>Once a file is downloaded, upload it to S3. You can then terminate the appliance, and still download the files at your own pace</li>
<li>Parameterize rtorrent rc configuration file, such that you can pass it parameters from Ensemble (such as upload rate...etc)</li>
<li>Integrate notification upon download completion (SMS me, email me, IM me ...etc)</li>
<li>Add an auto-redirect to /rtgui :)</li>
<li>Figure out a way to download completed files from within the rtgui web UI</li>
</ul><br />
If you're interested in improving that appliance, drop by in #ubuntu-ensemble on IRC/Freenode and ping me (kim0) or any of the friendly folks around. <br />
<br />
What kind of skills do you need to hack on that project? Just bash shell scripting foo! The feature I love most about Ensemble as a cloud orchestration tool, is that it doesn't twist you into using some abstracted syntax. You get to write in whatever language you feel like using, for me that's bash. You can find the script that does all of the above <a href="http://bazaar.launchpad.net/~kim0/+junk/rtgui/view/head:/hooks/install">right here</a>. <br />
<br />
<b>Interested</b> to learn more about Ensemble and automating Ubuntu server deployments in the cloud or on physical servers ?<br />
<b>Want</b> to hack on this torrent appliance, or do something similar?<br />
<b>Have</b> comments or a better idea?<br />
<br />
Let me know about it, just <b>drop me a comment</b> right here! You can also grab me (kim0) over Freenode irc</div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-40935704424498271162011-08-21T12:18:00.000+02:002011-08-21T12:18:26.554+02:00Battling Hunger in the Horn of Africa<img style="float: right" src="http://horn.wfp.org/images/photo.jpg" alt="Hungry children in the Horn of Africa" class="photo"><br />
<br />
A humanitarian crisis has slowly unfolded in the Horn of Africa. Drought, conflict, and rising food prices have affected more than 13 million people in the region. On 20 July, famine conditions were declared in several southern regions of Somalia. The Food Security and Nutrition Analysis Unit (FSNAU) forecasts that famine conditions will spread if humanitarian assistance does not increase. In response, WFP is planning to feed over 11.5 million people, including 3.7 million people in Somalia, 3.7 million in Ethiopia, and 2.7 million in Kenya.<br />
<br />
<b>Restricted aid access</b><br />
<br />
Access to some vital areas is restricted to humanitarian aid organizations. The hatched area on the map shows areas in which some aid organizations are unable to work— including the places where people are most in need of assistance.<br />
<br />
<b>Operational efficiency</b><br />
<br />
The figure of <b>USD $0.50 per person per day</b> is based on the average combined daily costs of World Food Programme's operations within Somalia, Ethiopia, & Kenya, as well as the number of people reached by those efforts.<br />
<br />
<div id='ts-embed-1313921521952-script'><script src='http://tiles.mapbox.com/wfp-famine/api/v1/embed.js?api=mm&size=700&size%5B%5D=500&center%5B%5D=41.99999999999999&center%5B%5D=5.000000000000007&center%5B%5D=5&layers%5B%5D=mapbox.blue-marble-topo-jul-bw&layers%5B%5D=wfp-famine.famine-areas-current-v2&layers%5B%5D=mapbox.world-borders-dark&layers%5B%5D=wfp-famine.wfp-country-interaction-v3&layers%5B%5D=wfp-famine.wfp-points-photos-v5&options%5B%5D=zoomwheel&options%5B%5D=legend&options%5B%5D=tooltips&options%5B%5D=zoombox&options%5B%5D=zoompan&options%5B%5D=attribution&el=ts-embed-1313921521952'></script></div><br />
If you cannot see the embedded map above, click here: <a href="http://horn.wfp.org/main.html">http://horn.wfp.org/main.html</a><br />
<br />
Save a child today!Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-28783876359960261672011-08-21T00:19:00.000+02:002011-08-21T00:19:14.245+02:00How can Govs help FOSS businesses<img style="float:right" src="http://www.ps3hax.net/wp-content/uploads/2010/09/open-source.jpg" alt=""><br />
Dear Lazyweb,<br />
<br />
A group of FOSS ambassadors (of which I am one) have been invited to visit government officials who are "interested" in open-source. The goal will be to pitch open-source and why adopting it would have various benefits on a national level. <br />
<br />
A more specific point that should be discussed is How can the government help local FOSS businesses grow in order to help, support and grow a FOSS-oriented eco-system (Developers, Support professionals, VARs...)<br />
<br />
If you were in that meeting, what points would you make ?<br />
<br />
Thanks!Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com5tag:blogger.com,1999:blog-342921498109425004.post-58659657939227395322011-08-08T16:39:00.000+02:002011-08-08T16:39:47.342+02:00Ensemble meets Hadoop on the cloud<a href="http://hadoop.apache.org/"><img alt="Hadoop" src="http://hadoop.apache.org/images/hadoop-logo.jpg" title="Hadoop" class="aligncenter" width="300" height="71" /></a><br />
<br />
So you wanted to play with hadoop to crunch on some big-data problems, except that, well getting a hadoop cluster up and running in not exactly a one minute thing! Let me show you how to make it "a one minute thing" using Ensemble! Since Ensemble now has formulas for creating hadoop <a href="https://code.launchpad.net/~negronjl/+junk/hadoop-master">master</a> and <a href="https://code.launchpad.net/~negronjl/+junk/hadoop-slave">slave</a> nodes, spinning up a hadoop cluster could not be easier! Check this video out<br />
<br />
<object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/e8IKkWJj7bA?version=3&hl=en_US&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/e8IKkWJj7bA?version=3&hl=en_US&rel=0" type="application/x-shockwave-flash" width="425" height="349" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
If you can't see the embedded video, here's a direct link <a href="http://youtu.be/e8IKkWJj7bA">http://youtu.be/e8IKkWJj7bA</a><br />
<br />
Yep that's how simple it is! If you want to scale-out the cluster, you only need to ask Ensemble to do it for you:<br />
$ ensemble add-unit hadoop-slave<br />
<br />
So is this easier than configuring a hadoop cluster manually? Leave me a comment, let me know your thoughts! Also let me know what you'd like to see deployed next with EnsembleKamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-74340027302799032382011-07-29T16:44:00.002+02:002011-07-29T19:01:57.372+02:00Ubuntu takes UFOs to the cloud<div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="float: right; text-align: right;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQNPxazevQtPxCkDmggMpiTITZy6qPHSIFDYg5j0XSFZeJb1RsKMJk3bgyW9ecejCiuXNa5dcg7aWMP5b03aCHXmZAvJ1zoTVc_st-tPcEuhKBr1hIMil4OE_Gjuc35QHsSVRPUW2O1HA/s1600/UFOold.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQNPxazevQtPxCkDmggMpiTITZy6qPHSIFDYg5j0XSFZeJb1RsKMJk3bgyW9ecejCiuXNa5dcg7aWMP5b03aCHXmZAvJ1zoTVc_st-tPcEuhKBr1hIMil4OE_Gjuc35QHsSVRPUW2O1HA/s400/UFOold.jpg" width="400" /></a></div><br />
<div dir="ltr" style="text-align: left;" trbidi="on">I've always believed in <a href="http://en.wikipedia.org/wiki/UFO">UFOs</a> as a kid, and while I've never seen one (yet?) I am still more on the believer side! I was interested to stumble upon a database of UFO sightings at <a href="http://www.infochimps.com/tags/ufo#">http://www.infochimps.com/tags/ufo#</a> A shout-out at infochimps (you guys are great!). Downloading the sightings DB (around 80MB), I found a listing of 60,000 documented sightings, hmm interesting! I started thinking I could crunch on this data in some useful and fun way, what about finding the most commonly spotted UFO shape?! Sounds like I could use hadoop for that, just for the coolness factor really, the data is not that large anyway, but hey why not! I had no-idea how to get started with hadoop though and wasn't really interested in learning up all the gory details!<br />
<br />
Well <a href="https://ensemble.ubuntu.com/">Ensemble</a> to the rescue, hadoop master and slave formulas exist, which means someone else packaged the knowledge needed to setup and run a hadoop cluster for me. All I needed to do was ask Ensemble to deploy me a couple of cloud instances and start playing. Let's see how you can do that for yourself<br />
<br />
I won't repeat the instructions to <a href="https://ensemble.ubuntu.com/docs/getting-started.html">get started with Ensemble</a>, since the documentation is a good place for that (and it's so easy anyway!). If you feel you need more help there, this little <a href="http://www.youtube.com/user/ubuntucloud#p/a/u/1/qxMhKbDSbOw">video</a> should be helpful. If you're still stuck, you can always drop by on irc/freenode at #ubuntu-ensemble and ask your questions<br />
<br />
<h2>Hadoop node, with an extra slave please</h2><br />
So, let's start ensembling<br />
<pre>bzr branch lp:~negronjl/+junk/hadoop-master
bzr branch lp:~negronjl/+junk/hadoop-slave
ensemble bootstrap
</pre>wait a minute or two for EC2 to spin up the instance, then<br />
<pre>ensemble status
</pre>which’ll give you output like<br />
<pre>$ ensemble status
2011-07-12 15:20:54,978 INFO Connecting to environment.
The authenticity of host 'ec2-50-17-28-19.compute-1.amazonaws.com (50.17.28.19)' can't be established.
RSA key fingerprint is c5:21:62:f0:ac:bd:9c:0f:99:59:12:ec:4d:41:48:c8.
Are you sure you want to continue connecting (yes/no)? yes
machines:
0: {dns-name: ec2-50-17-28-19.compute-1.amazonaws.com, instance-id: i-8bc034ea}
services: {}
2011-07-12 15:21:01,205 INFO 'status' command finished successfully
</pre><br />
Now let's deploy a two node hadoop cluster<br />
<pre>ensemble deploy --repository . hadoop-master
ensemble deploy --repository . hadoop-slave
ensemble add-relation hadoop-master hadoop-slave
</pre><br />
Yeah it's that easy! Ensemble formulas manage all the kung-fu for you. The hadoop cluster is ready, let's ssh into the master node and switch to user hdfs<br />
<pre>ensemble ssh hadoop-master/0
sudo -su hdfs
</pre><br />
<h2>Downloading UFOs</h2><br />
Download the infochimps sightings database here, unzip it and locate the TSV file (tab separated values) file. Note that you can download the file from infochimps without registering on their website (didn't I say these guys were great :)<br />
<br />
Upload the TSV DB to hadoop's distributed filesystem<br />
<pre>hadoop dfs -copyFromLocal ufo_awesome.tsv ufo_awesome.tsv
</pre><br />
Almost ready, the corpus has been uploaded. Now we need to write some map/reduce jobs to do the actual crunching. Not being a pro developer, the thought of writing that in java was like (oh no ew), so python to the rescue! Thanks to the great instructions at <a href="http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/">Michael Noll</a>'s blog, I was able to massage some of that code to get it to do what I wanted. I pushed my code to <a href="https://code.launchpad.net/~kim0/+junk/ufo-ensemble-cruncher">launchpad</a>, so that you can grab it directly from the hadoop master node<br />
<br />
<pre>cd /tmp
bzr branch lp:~kim0/+junk/ufo-ensemble-cruncher
cd ufo-ensemble-cruncher
</pre><br />
<h2>Unleashing the elephant</h2><br />
Now for the big moment, let's launch the elephant<br />
<pre>hadoop jar /usr/lib/hadoop-0.20/contrib/streaming/hadoop-streaming-*.jar -file ./mapper.py -mapper mapper.py -file ./reducer.py -reducer reducer.py -input ufo_awesome.tsv -output ufo-output
packageJobJar: [./mapper.py, ./reducer.py, /tmp/hadoop-hdfs/hadoop-unjar1418682529553378062/] [] /tmp/streamjob5701745574334998473.jar tmpDir=null
11/07/29 12:27:52 INFO mapred.FileInputFormat: Total input paths to process : 1
11/07/29 12:27:53 INFO streaming.StreamJob: getLocalDirs(): [/tmp/hadoop-hdfs/mapred/local]
11/07/29 12:27:53 INFO streaming.StreamJob: Running job: job_201107290935_0010
11/07/29 12:27:53 INFO streaming.StreamJob: To kill this job, run:
11/07/29 12:27:53 INFO streaming.StreamJob: /usr/lib/hadoop-0.20/bin/hadoop job -Dmapred.job.tracker=domU-12-31-39-10-81-8E.compute-1.internal:8021 -kill job_201107290935_0010
11/07/29 12:27:53 INFO streaming.StreamJob: Tracking URL: http://domU-12-31-39-10-81-8E.compute-1.internal:50030/jobdetails.jsp?jobid=job_201107290935_0010
11/07/29 12:27:54 INFO streaming.StreamJob: map 0% reduce 0%
11/07/29 12:28:11 INFO streaming.StreamJob: map 10% reduce 0%
11/07/29 12:28:12 INFO streaming.StreamJob: map 19% reduce 0%
11/07/29 12:28:14 INFO streaming.StreamJob: map 72% reduce 0%
11/07/29 12:28:16 INFO streaming.StreamJob: map 100% reduce 0%
11/07/29 12:28:33 INFO streaming.StreamJob: map 100% reduce 100%
11/07/29 12:28:37 INFO streaming.StreamJob: Job complete: job_201107290935_0010
11/07/29 12:28:37 INFO streaming.StreamJob: Output: ufo-output
</pre><br />
Woohoo success! Now let's grab the results, sorting it to easily see the most popular sighting shape<br />
<br />
<h2>Is the answer really 42</h2><br />
<pre>hadoop dfs -cat ufo-output/part-00000 | sort -k 2,2 -nr
light 12202
triangle 6082
circle 5271
disk 4825
other 4593
unknown 4490
sphere 3637
fireball 3452
oval 2869
formation 1788
cigar 1782
changing 1546
flash 990
cylinder 982
rectangle 966
diamond 915
chevron 760
egg 664
teardrop 595
cone 265
cross 177
delta 8
round 2
crescent 2
pyramid 1
hexagon 1
flare 1
dome 1
changed 1
</pre><br />
The answer is "light" then! Wow that was a blast! I had fun doing this exercise. Now I am no hadoop expert in any way (so direct those hadoopy questions to someone who can actually answer them), however I was quite pleased Ensemble could help me get up and running that fast. The Ensemble community is doing a great job wrapping many free software with formulas, such that you can always get up and running with any app you need in seconds rather than days (months?). <b>You</b> too can write Ensemble formulas for your favorite (server?) application. Hop on to #ubuntu-ensemble and grab me (kim0) or any of the dev team and ask any questions on your mind! We're a happy community<br />
<br />
So was that fun? Can you think of something cooler you want to see done? Leave me a comment, let me know about it<br />
<br />
</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com4tag:blogger.com,1999:blog-342921498109425004.post-32294437799963724522011-06-28T12:40:00.000+02:002011-06-28T12:40:41.315+02:00Ensemble deploy and scale cloud apps<div dir="ltr" style="text-align: left;" trbidi="on">Think deploying and scaling your cloud application is <b>hard</b> ? Think again!<br />
<br />
<a href="http://www.flickr.com/photos/90048824@N00/5880089759/" title="scalability by Ahmed-Kamal, on Flickr"><img alt="scalability" height="200" src="http://farm6.static.flickr.com/5159/5880089759_258671fbb2.jpg" width="280" /></a><br />
<br />
Check out this video demo, where I deploy a multi-tiered cloud application. I'm deploying<br />
<br />
<ul style="text-align: left;"><li>HAproxy load balancer</li>
<li>Memcached caching server</li>
<li>MediaWiki application server</li>
<li>MySQL DB</li>
</ul><div>connecting them together and getting it working. After which, I'm <b>scaling</b> the whole thing from two application servers, to four</div><div><br />
</div><div>How long it takes me ? Well basically <b>5 minutes</b> for the whole thing!</div><div>The secret: <a href="https://ensemble.ubuntu.com/">Ensemble</a> !</div><div><br />
</div><div>Here's the video</div><div><object height="349" width="560"><param name="movie" value="http://www.youtube.com/v/AMHcy63wRL0?version=3&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/AMHcy63wRL0?version=3&hl=en_US" type="application/x-shockwave-flash" width="560" height="349" allowscriptaccess="always" allowfullscreen="true"></embed></object></div><div><br />
</div><div>Here is a <a href="http://www.youtube.com/user/ubuntucloud#p/a/u/0/AMHcy63wRL0">direct link</a> if you can't see the player</div><div><br />
</div><div>So what do you guys think, like the demo ? Leave me a comment, let me know which demo you'd like to see next. Also if you'd like to see your favorite application deployed with Ensemble, leave me a comment or ping me (kim0) on freenode irc</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-45059900219122013532011-06-23T18:58:00.002+02:002011-06-23T19:01:31.878+02:00Ensemble user tutorial p2<div dir="ltr" style="text-align: left;" trbidi="on"><br />
Welcome to the second part of this <a href="http://ensemble.ubuntu.com/">Ensemble</a> user tutorial. In <a href="http://foss-boss.blogspot.com/2011/06/ensemble-user-tutorial-p1.html">part 1</a> we bootstrapped an Ensemble environment, deployed a sample wordpress service and a MySQL service. Related the two services together and got ourselves a working wordpress installation. In this second part, let's check out viewing the debug-log output to understand the asynchronous nature of hook execution. You'll see how easy it is to "scale-up" a service deployment<br />
<br />
<div class="section" id="tracing-hook-execution"><span class="Apple-style-span" style="font-size: large;"><b> Tracing hook execution<a href="https://ensemble.ubuntu.com/docs/user-tutorial.html#tracing-hook-execution"></a></b></span><span class="Apple-style-span" style="font-size: large;"> </span><br />
<span class="Apple-style-span" style="line-height: 20px;">An Ensemble user should never have to trace the execution order of hooks, however if you are the kind of person who enjoys looking under the hood, this section is for you. Understanding hook order execution, the parallel nature of hook execution across instances, and how relation-set in a hook can trigger the execution of another hook is quite interesting and provides insight into Ensemble internals</span><br />
<div style="line-height: 20px; text-align: justify;">Here are a few important messages from the debug-log of this Ensemble run. The date field has been deliberately left in this log, in order to understand the parallel nature of hook execution.</div><dl class="docutils" style="margin-bottom: 15px;"><dt>Things to consider while reading the log include:</dt>
<dd style="line-height: 20px; margin-bottom: 10px; margin-left: 30px; margin-top: 3px; text-align: justify;"><ul class="first last simple" style="margin-bottom: 10px; margin-top: 0px !important;"><li style="line-height: 20px; text-align: justify;">The time the log message was generated</li>
<li style="line-height: 20px; text-align: justify;">Which service unit is causing the log message (for example mysql/0)</li>
<li style="line-height: 20px; text-align: justify;">The message logging level. In this run DEBUG messages are generated by the Ensemble core engine, while WARNING messages are generated by calling ensemble-log from inside formulas (which you can read in the examples folder)</li>
</ul></dd></dl><div style="line-height: 20px; text-align: justify;">Let’s view select debug-log messages which can help understand the execution order:</div><div class="highlight-python"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">14:29:43,625 unit:mysql/0: hook.scheduler DEBUG: executing hook for wordpress/0:joined
14:29:43,626 unit:mysql/0: unit.relation.lifecycle DEBUG: Executing hook db-relation-joined
14:29:43,660 unit:wordpress/0: hook.scheduler DEBUG: executing hook for mysql/0:joined
14:29:43,660 unit:wordpress/0: unit.relation.lifecycle DEBUG: Executing hook db-relation-joined
14:29:43,661 unit:wordpress/0: unit.relation.lifecycle DEBUG: Executing hook db-relation-changed
14:29:43,789 unit:mysql/0: unit.hook.api WARNING: Creating new database and corresponding security settings
14:29:43,813 unit:wordpress/0: unit.hook.api WARNING: Retrieved hostname: ec2-184-72-156-54.compute-1.amazonaws.com
14:29:43,976 unit:mysql/0: unit.relation.lifecycle DEBUG: Executing hook db-relation-changed
14:29:43,997 unit:wordpress/0: hook.scheduler DEBUG: executing hook for mysql/0:modified
14:29:43,997 unit:wordpress/0: unit.relation.lifecycle DEBUG: Executing hook db-relation-changed
14:29:44,143 unit:wordpress/0: unit.hook.api WARNING: Retrieved hostname: ec2-184-72-156-54.compute-1.amazonaws.com
14:29:44,849 unit:wordpress/0: unit.hook.api WARNING: Creating appropriate upload paths and directories
14:29:44,992 unit:wordpress/0: unit.hook.api WARNING: Writing wordpress config file /etc/wordpress/config-ec2-184-72-156-54.compute-1.amazonaws.com.php
14:29:45,130 unit:wordpress/0: unit.hook.api WARNING: Writing apache config file /etc/apache2/sites-available/ec2-184-72-156-54.compute-1.amazonaws.com
14:29:45,301 unit:wordpress/0: unit.hook.api WARNING: Enabling apache modules: rewrite, vhost_alias
14:29:45,512 unit:wordpress/0: unit.hook.api WARNING: Enabling apache site: ec2-184-72-156-54.compute-1.amazonaws.com
14:29:45,688 unit:wordpress/0: unit.hook.api WARNING: Restarting apache2 service</pre></div></div><div class="section" id="scaling-the-ensemble"><span class="Apple-style-span" style="font-size: large;"><br />
<b> Scaling the ensemble<a href="https://ensemble.ubuntu.com/docs/user-tutorial.html#scaling-the-ensemble"></a></b></span><span class="Apple-style-span" style="font-size: large;"> </span><br />
<span class="Apple-style-span" style="line-height: 20px;">Assuming your blog got really popular, is having high load and you decided to scale it up (it’s a cloud deployment after all). Ensemble makes this magically easy. All what is needed is:</span><br />
<div class="highlight-python"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble add-unit wordpress
INFO Connecting to environment.
INFO Unit 'wordpress/1' added to service 'wordpress'
INFO 'add_unit' command finished successfully
$ bin/ensemble status
machines:
0: {dns-name: ec2-50-16-61-111.compute-1.amazonaws.com, instance-id: i-2a702745}
1: {dns-name: ec2-50-16-117-185.compute-1.amazonaws.com, instance-id: i-227e294d}
2: {dns-name: ec2-184-72-156-54.compute-1.amazonaws.com, instance-id: i-9c7e29f3}
3: {dns-name: ec2-50-16-156-106.compute-1.amazonaws.com, instance-id: i-ba6532d5}
services:
mysql:
formula: local:mysql-11
relations: {db: wordpress}
units:
mysql/0:
machine: 1
relations:
db: {state: up}
state: started
wordpress:
formula: local:wordpress-29
relations: {db: mysql}
units:
wordpress/0:
machine: 2
relations:
db: {state: up}
state: started
wordpress/1:
machine: 3
relations:
db: {state: up}
state: started</pre></div><div style="line-height: 20px; text-align: justify;">The add-unit command starts a new wordpress instance (wordpress/1), which then joins the relation with the already existing mysql/0 instance. mysql/0 notices the database required has already been created and thus decides all needed configuration has already been done. On the other hand wordpress/1 reads service settings from mysql/0 and starts configuring itself and joining the ensemble. Let’s review a short version of debug-log for adding wordpress/1:</div><div class="highlight-python"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">14:36:19,755 unit:mysql/0: hook.scheduler DEBUG: executing hook for wordpress/1:joined
14:36:19,755 unit:mysql/0: unit.relation.lifecycle DEBUG: Executing hook db-relation-joined
14:36:19,810 unit:wordpress/1: hook.scheduler DEBUG: executing hook for mysql/0:joined
14:36:19,811 unit:wordpress/1: unit.relation.lifecycle DEBUG: Executing hook db-relation-joined
14:36:19,811 unit:wordpress/1: unit.relation.lifecycle DEBUG: Executing hook db-relation-changed
14:36:19,918 unit:mysql/0: unit.hook.api WARNING: Database already exists, exiting
14:36:19,938 unit:mysql/0: unit.relation.lifecycle DEBUG: Executing hook db-relation-changed
14:36:19,990 unit:wordpress/1: unit.hook.api WARNING: Retrieved hostname: ec2-50-16-156-106.compute-1.amazonaws.com
14:36:20,757 unit:wordpress/1: unit.hook.api WARNING: Creating appropriate upload paths and directories
14:36:20,916 unit:wordpress/1: unit.hook.api WARNING: Writing wordpress config file /etc/wordpress/config-ec2-50-16-156-106.compute-1.amazonaws.com.php
14:36:21,088 unit:wordpress/1: unit.hook.api WARNING: Writing apache config file /etc/apache2/sites-available/ec2-50-16-156-106.compute-1.amazonaws.com
14:36:21,236 unit:wordpress/1: unit.hook.api WARNING: Enabling apache modules: rewrite, vhost_alias
14:36:21,476 unit:wordpress/1: unit.hook.api WARNING: Enabling apache site: ec2-50-16-156-106.compute-1.amazonaws.com
14:36:21,682 unit:wordpress/1: unit.hook.api WARNING: Restarting apache2 service</pre></div></div><div class="section" id="destroying-the-environment"><span class="Apple-style-span" style="font-size: large;"><br />
<b> Destroying the environment<a href="https://ensemble.ubuntu.com/docs/user-tutorial.html#destroying-the-environment"></a></b></span><span class="Apple-style-span" style="font-size: large;"> </span><br />
<span class="Apple-style-span" style="line-height: 20px;">Once you are done with an Ensemble deployment, you need to terminate all running instances in order to stop paying for them. The shutdown command helps terminate all running instances:</span><br />
<div class="highlight-python"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble shutdown</pre></div><div style="line-height: 20px; text-align: justify;">Ensemble will ask for user confirmation of shutdown before proceeding as this will destroy service data in the environment as well.<br />
<br />
Hope you enjoyed the article! If you find Ensemble interesting, please do visit us in #ubuntu-ensemble. We're a friendly bunch :) Do you want to write Ensemble formulas? Want to get the satisfaction of Ensemblizing your favorite application, grab me (kim0) on irc, and I will help you do it</div></div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-70478377058039752442011-06-16T14:35:00.000+02:002011-06-16T14:35:30.137+02:00Ensemble user tutorial p1<div dir="ltr" style="text-align: left;" trbidi="on">I've been adding lots of documentation to help a new Ensemble user find her way around Ensemble. I thought it would nice to share this documentation as a series of blog posts, to raise its exposure and help interested users find their way quickly. Here is the first of a series of posts, which I hope you'll enjoy. If you think we can improve the docs in any way, please do let me know<br />
<div class="section" id="introduction"><br />
<span class="Apple-style-span" style="font-size: x-large;">Introduction</span><br />
<span class="Apple-style-span" style="font-family: sans-serif; font-size: 16px;"></span><br />
<div class="section" id="introduction"><div style="line-height: 20px; text-align: justify;">This tutorial demonstrates basic features of Ensemble from a user perspective. An Ensemble user would typically be a devops or a sys-admin who is interested in automated deployment and management of servers and services.</div></div><div class="section" id="bootstrapping"></div><br />
<span class="Apple-style-span" style="font-size: x-large;">Bootstrapping</span></div><div class="section" id="bootstrapping"><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">The first step for deploying an Ensemble system is to perform bootstrapping. Bootstrapping launches a utility instance that is used in all subsequent operations to launch and orchestrate other instances:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble bootstrap</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">Note that while the command should display a message indicating it has finished successfully, that does not mean the bootstrapping instance is immediately ready for usage. Bootstrapping an instance can require a couple of minutes. To check on the status of the Ensemble deployment, we can use the status command:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble status</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">If the bootstrapping node has not yet completed bootstrapping, the status command may either mention the environment is not yet ready, or may display a connection timeout such as:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">INFO Connecting to environment.
ERROR Connection refused
ProviderError: Interaction with machine provider failed:
ConnectionTimeoutException('could not connect before timeout after 2
retries',)
ERROR ProviderError: Interaction with machine
provider failed: ConnectionTimeoutException('could not connect before timeout
after 2 retries',)</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">This is simply an indication the environment needs more time to complete initialization. It is recommended you retry every minute. Once the environment has properly initialized, the status command should display:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">machines:
0: {dns-name: ec2-50-16-61-111.compute-1.amazonaws.com, instance-id: i-2a702745}
services: {}</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">Note the following, machine “0” has been started. This is the bootstrapping node and the first node to be started. The dns-name for the node is printed. Also the EC2 instance-id is printed. Since no services are yet deployed to the Ensemble system yet, the list of deployed services is empty</div></div><div class="section" id="starting-debug-log"><span class="Apple-style-span" style="font-size: x-large;"><br />
</span><span class="Apple-style-span" style="font-size: x-large;"> Starting debug-log<a href="https://ensemble.ubuntu.com/docs/user-tutorial.html#starting-debug-log"></a></span><br />
<span class="Apple-style-span" style="font-family: sans-serif;"><span class="Apple-style-span" style="line-height: 20px;">While not a requirement, it is beneficial for the understanding of Ensemble to start a debug-log session. Ensemble’s debug-log provides great insight into the execution of various hooks as they are triggered by various events. It is important to understand that debug-log shows events from a distributed environment (multiple-instances). This means that log lines will alternate between output from different instances. To start a debug-log session, from a secondary terminal issue:</span></span><br />
<div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble debug-log
INFO Connecting to environment.
INFO Enabling distributed debug log.
INFO Tailing logs - Ctrl-C to stop.</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">This will connect to the environment, and start tailing logs.</div></div><div class="section" id="deploying-service-units"><span class="Apple-style-span" style="font-size: x-large;"><br />
</span><span class="Apple-style-span" style="font-size: x-large;"> Deploying service units</span><br />
<span class="Apple-style-span" style="font-family: sans-serif;"><span class="Apple-style-span" style="line-height: 20px;">Now that we have bootstrapped the Ensemble environment, and started the debug-log viewer, let’s proceed by deploying a mysql service:</span></span><br />
<div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble deploy --repository=examples mysql
INFO Connecting to environment.
INFO Formula deployed as service: 'mysql'
INFO 'deploy' command finished successfully</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">Checking the debug-log window, we can see the mysql service unit being downloaded and started:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">Machine:1: ensemble.agents.machine DEBUG: Downloading formula
local:mysql-11...
Machine:1: ensemble.agents.machine INFO: Started service unit mysql/0</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">It is important to note the different debug levels. DEBUG is used for very detailed logging messages, usually you should not care about reading such messages unless you are trying to debug (hence the name) a specific problem. INFO debugging level is used for slightly more important informational messages. In this case, these messages are generated as the mysql formula’s hooks are being executed. Let’s check the current status:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble status
machines:
0: {dns-name: ec2-50-16-61-111.compute-1.amazonaws.com, instance-id: i-2a702745}
1: {dns-name: ec2-50-16-117-185.compute-1.amazonaws.com, instance-id: i-227e294d}
services:
mysql:
formula: local:mysql-11
relations: {}
units:
mysql/0:
machine: 1
relations: {}
state: null</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">We can see a new EC2 instance has now been spun up for mysql. Information for this instance is displayed as machine number 1 and mysql is now listed under services. It is apparent the mysql service unit has no relations, since it has not been connected to wordpress yet. Since this is the first mysql service unit, it is being referred to as mysql/0, subsequent service units would be named mysql/1 and so on.</div><div class="admonition note" style="background-color: #eeeeee; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; font-family: sans-serif; font-size: 16px; margin-bottom: 10px; margin-top: 10px; padding-bottom: 7px; padding-left: 7px; padding-right: 7px; padding-top: 7px;"><div class="first admonition-title" style="display: inline; font-weight: bold; line-height: 20px; margin-bottom: 5px; margin-left: 0px; margin-right: 10px; margin-top: 0px; text-align: justify;">Note</div><br />
<div class="last" style="display: inline; line-height: 20px; text-align: justify;">An important distinction to make is the difference between a service and a service unit. A service is a high level concept relating to an end-user visible service such as mysql. The mysql service would be composed of several mysql service units referred to as mysql/0, mysql/1 and so on.</div></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">The mysql service state is listed as null since it’s not ready yet. Downloading, installing, configuring and starting mysql can take some time. However we don’t have to wait for it to configure, let’s proceed deploying wordpress:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble deploy --repository=examples wordpress</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">Let’s wait for a minute for all services to complete their configuration cycle and get properly started, then issue a status command:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble status
machines:
0: {dns-name: ec2-50-16-61-111.compute-1.amazonaws.com, instance-id: i-2a702745}
1: {dns-name: ec2-50-16-117-185.compute-1.amazonaws.com, instance-id: i-227e294d}
2: {dns-name: ec2-184-72-156-54.compute-1.amazonaws.com, instance-id: i-9c7e29f3}
services:
mysql:
formula: local:mysql-11
relations: {}
units:
mysql/0:
machine: 1
relations: {}
state: started
wordpress:
formula: local:wordpress-29
relations: {}
units:
wordpress/0:
machine: 2
relations: {}
state: started</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">mysql/0 as well as wordpress/0 are both now in the started state. Checking the debug-log would reveal wordpress has been started as well</div></div><div class="section" id="adding-a-relation"><br />
<span class="Apple-style-span" style="font-size: x-large;">Adding a relation</span><br />
<span class="Apple-style-span" style="font-family: sans-serif;"><span class="Apple-style-span" style="line-height: 20px;">While mysql and wordpress service units have been started, they are still isolated from each other. An important concept for Ensemble is connecting various service units together to create a bigger ensemble! Adding a relation between service units causes hooks to trigger, in effect causing all service units to collaborate and work together to reach the desired end state. Adding a relation is extremely simple:</span></span><br />
<div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble add-relation wordpress mysql
INFO Connecting to environment.
INFO Added mysql relation to all service units.
INFO 'add_relation' command finished successfully</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">Checking the Ensemble status we see that the db relation now exists with state up:</div><div class="highlight-python" style="font-family: sans-serif; font-size: 16px;"><pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;">$ bin/ensemble status
machines:
0: {dns-name: ec2-50-16-61-111.compute-1.amazonaws.com, instance-id: i-2a702745}
1: {dns-name: ec2-50-16-117-185.compute-1.amazonaws.com, instance-id: i-227e294d}
2: {dns-name: ec2-184-72-156-54.compute-1.amazonaws.com, instance-id: i-9c7e29f3}
services:
mysql:
formula: local:mysql-11
relations: {db: wordpress}
units:
mysql/0:
machine: 1
relations:
db: {state: up}
state: started
wordpress:
formula: local:wordpress-29
relations: {db: mysql}
units:
wordpress/0:
machine: 2
relations:
db: {state: up}
state: started</pre></div><div style="font-family: sans-serif; font-size: 16px; line-height: 20px; text-align: justify;">You can now point your browser at the public dns-name for instance 2 (running wordpress) to view the wordpress blog<br />
<br />
<span class="Apple-style-span" style="line-height: normal;"></span><br />
<div><span class="Apple-style-span"><span class="Apple-style-span" style="background-color: white;">Patience is a virtue, you did read the full thing after all! I would really appreciate some feedback, what you liked, or did not like. And how we can improve the docs. Drop me a comment, <b>shoot what's on your mind</b></span><br />
</span></div></div></div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0Cairo, Egypt30.064742 31.24950899999998929.988142 31.168558999999988 30.141341999999998 31.330458999999991tag:blogger.com,1999:blog-342921498109425004.post-50487783356056615462011-06-08T13:30:00.000+02:002011-06-08T13:30:19.323+02:00Ensemble IRC meeting today<div dir="ltr" style="text-align: left;" trbidi="on"><b>When?</b> Today 6pm-UTC<br />
<b>What?</b> Ensemble cloud community meeting<br />
<b>For?</b> <a href="https://ensemble.ubuntu.com/">Ensemble</a> simplifies the deployment, management, and scaling of services in the cloud. We've answered the <a href="http://cloud.ubuntu.com/2011/06/so-what-is-ensemble-anyway/">what is Ensemble</a> question previously, but there's nothing like one to one discussions! Interested to learn more? ask your questions ? connect to the development team ? Start writing formulas to deploy your software or even start hacking on Ensemble core? Then this meeting is perfect for you. Join us on IRC in #ubuntu-cloud today 6pm-UTC</div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0Cairo, Egypt29.991813102482674 31.32064781835936229.713713102482675 30.965332818359361 30.269913102482672 31.675962818359363tag:blogger.com,1999:blog-342921498109425004.post-50100232273002788952011-05-20T18:16:00.001+02:002011-05-21T01:15:10.570+02:00Ensemble at UDS-O<div dir="ltr" style="text-align: left;" trbidi="on">UDS-O is now over, I had a chance to meet with the Ensemble team (a bunch of awesome engineers), also had a chance to attend or lead a few sessions concerning future directions of Ensemble. I'll try to summarize UDS outcome wrt Ensemble from a project newcomer perspective<br />
<br />
<ul style="text-align: left;"><li>Ensemble is now able to do a multi-machine deployment and orchestration</li>
<li>It can do Dynamic reconfiguration which means passing parameters to running formulas to adjust behavior. More work needs to land here, but the foundations are there</li>
<li>Does formula upgrades, more bits landing soon</li>
<li>Firewall auto-configuration (expose, unexpose services). Again, still more bits to land soonish</li>
<li>It has a ppa and docs from trunk live at <a href="https://ensemble.ubuntu.com/docs/">https://ensemble.ubuntu.com/docs/</a></li>
</ul><div>The focus for the 11.10 Oneiric cycle is going to be stability and polish. While currently Amazon EC2 is the only supported deployment target, the 11.10 cycle should hopefully see more targets added such as Linux Containers (LXC) for local development and testing of Ensemble formulas. Having LXC support in 11.10 is a bit optimistic, so if you can lend a helping hand, please do! Also Eucalyptus cloud support is the works (isn't this just great!)</div><div><br />
</div><div>During 11.10 as well, the infrastructure for Ensemble as a project should be improved. This involves adding better and more structured content to the <a href="http://ensemble.ubuntu.com/">Ensemble website</a>. Adding more documentation, guides and screencasts. While you can start writing and contributing Ensemble formulas today! (ping me if you're interested) More work will go into refining the process and integrating it into the Ensemble command line tools.</div><div><br />
</div><div>That's mostly it. It is an incredibly interesting time for cloud technologies! Diving into discussions with the Ensemble team about the vision and decisions they have taken, I was blown away. I firmly believe Ensemble is a game changer with respect to rapid provisioning and orchestration. Right now, is such a great time to get involved with Ensemble. If you're interested in joining the Ensemble project, or in learning more about it in any way, please do leave me a comment here, or ping me on irc (kim0)</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-26968168736853228492011-05-11T11:33:00.000+02:002011-05-11T11:33:52.293+02:00Cloud Portal one-click launch<div dir="ltr" style="text-align: left;" trbidi="on">Announcing two nice little additions to the <a href="http://cloud.ubuntu.com/ami/">cloud portal AMI tool</a> that should make everyone's cloud life a little easier<br />
<br />
<ul style="text-align: left;"><li>Amazon now allows passing parameters to the AWS console to basically be able to choose the region and AMI-ID to launch. This is now integrated in the cloud portal so that you search for the ami, click the link and it's pre-selected, ready to be launched in AWS console. Here's a screenshot</li>
</ul><br />
<a href="http://www.flickr.com/photos/90048824@N00/5709230381/" title="cloud-portal-one-click-launch by Ahmed-Kamal, on Flickr"><img alt="cloud-portal-one-click-launch" height="94" src="http://farm3.static.flickr.com/2245/5709230381_1d27f334a3_z.jpg" width="640" /></a><br />
<br />
<br />
<ul style="text-align: left;"><li>As that image shows as well, you can search now for "cluster" to get Ubuntu cloud cluster-ready images!</li>
</ul><div>Interested to add any features? Have any thoughts or comments, let me know, leave me a word</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-90982854481676439102011-04-18T14:14:00.000+02:002011-04-18T14:14:48.867+02:00Help Squash Natty Server Bugs<div dir="ltr" style="text-align: left;" trbidi="on"><div>Mirroring a post from Ubuntu Server developer <a href="http://blog.daviey.com/">Dave Walker</a>, If you're capable and willing to help squash some server bugs, your effort and contribution is really needed now! Join us on irc <b>#ubuntu-server</b>, ask around if you need help. Thanks in advance</div><div><br />
</div><div>Here is a list of current bugs that should hopefully be fixed for Natty release. The bugs with "Not assigned to anyone :(", could really do with someone volunteering to take. Please feel free to assign yourself, if you are willing to take on working towards a fix. </div><div><br />
</div><div>If you are an assignee, please make sure that the current status (and comments) accurately represent the status before tomorrows server team meeting. </div><div><br />
</div><div>== Bugs for the server team == </div><div>[655533] [likewise-open] [master] package likewise-open 5.4.0.42111-2ubuntu2 failed to install/upgrade: subprocess installed post-installation script returned error exit status 1 (<a href="http://pad.lv/655533">http://pad.lv/655533</a>) </div><div> * Bug Status: Confirmed </div><div> * Not assigned to anyone :( </div><div> * Last updated: 2011-04-18 </div><div>[726769] [eucalyptus] package eucalyptus-common 2.0.1 bzr1255-0ubuntu1 failed to install/upgrade: subprocess installed post-installation script returned error exit status 1 (<a href="http://pad.lv/726769">http://pad.lv/726769</a>) </div><div> * Bug Status: Confirmed </div><div> * Assigned to: Dave Walker </div><div> * Last updated: 2011-04-18 </div><div>[661453] [dovecot] dovecot.conf always shows as having been locally modified on update (<a href="http://pad.lv/661453">http://pad.lv/661453</a>) </div><div> * Bug Status: Confirmed </div><div> * Assigned to: Clint Byrum </div><div> * Last updated: 2011-04-18 </div><div>[745946] [cloud-init] cloud-final job did not run in ec2-automated-tests (<a href="http://pad.lv/745946">http://pad.lv/745946</a>) </div><div> * Bug Status: Confirmed </div><div> * Not assigned to anyone :( </div><div> * Last updated: 2011-04-18 </div><div>[759943] [mod-wsgi] mod_wsgi.so-3.2 gives errors (<a href="http://pad.lv/759943">http://pad.lv/759943</a>) </div><div> * Bug Status: Confirmed </div><div> * Not assigned to anyone :( </div><div> * Last updated: 2011-04-15 </div><div>[764391] [cobbler] cobbler fails to manage bind9 (<a href="http://pad.lv/764391">http://pad.lv/764391</a>) </div><div> * Bug Status: Confirmed </div><div> * Assigned to: James Page </div><div> * Last updated: 2011-04-18 </div><div>[745930] [cloud-init] cloud-init timeout waiting for metadata service on EC2 (<a href="http://pad.lv/745930">http://pad.lv/745930</a>) </div><div> * Bug Status: New </div><div> * Not assigned to anyone :( </div><div> * Last updated: 2011-04-15 </div><div>[760288] [Ubuntu] JeOS is oversized (<a href="http://pad.lv/760288">http://pad.lv/760288</a>) </div><div> * Bug Status: Confirmed </div><div> * Not assigned to anyone :( </div><div> * Last updated: 2011-04-15 </div><div><br />
</div><div> == Bugs being worked on in other areas, more for information == </div><div>[728088] [debian-installer] iscsi root with or without auth fails to boot (<a href="http://pad.lv/728088">http://pad.lv/728088</a>) </div><div> * Bug Status: Confirmed </div><div> * Assigned to: Colin Watson </div><div> * Last updated: 2011-04-14 </div><div>[747090] [linux] wrong return address sometimes pushed for INT in kvm (not qemu) (<a href="http://pad.lv/747090">http://pad.lv/747090</a>) </div><div> * Bug Status: Fix Committed </div><div> * Assigned to: Andy Whitcroft </div><div> * Last updated: 2011-04-18 </div><div>[566818] [plymouth] Cryptsetup passphrase prompt during boot: every character typed repeats the prompt (<a href="http://pad.lv/566818">http://pad.lv/566818</a>) </div><div> * Bug Status: Confirmed </div><div> * Assigned to: Surbhi Palande </div><div> * Last updated: 2011-04-16 </div><div>[580319] [upstart] dhcp3-server launches before upstart brings all interface, thus failing to start (<a href="http://pad.lv/580319">http://pad.lv/580319</a>) </div><div> * Bug Status: Triaged </div><div> * Assigned to: James Hunt </div><div> * Last updated: 2011-04-18 </div><div>[759545] [grub2] user prompted to update unmodified grub configuration during Ubuntu server upgrade (<a href="http://pad.lv/759545">http://pad.lv/759545</a>) </div><div> * Bug Status: New </div><div> * Last updated: 2011-04-18 </div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-90597712233996424492011-04-15T19:25:00.000+02:002011-04-15T19:25:51.489+02:00Cloud Portal Intro<div dir="ltr" style="text-align: left;" trbidi="on">Just written a nice introduction to Ubuntu cloud portal on <a href="http://ubuntu-news.org/2011/04/15/ubuntu-cloud-portal-introduction/">Ubuntu News</a>. If you don't know about that, or are new to the Ubuntu cloud scene, check it out and ping me back for any questions or comments</div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-69883869603212721232011-04-14T19:12:00.000+02:002011-04-14T19:12:10.828+02:00Ensemble Cloud Community Meeting Summary<div dir="ltr" style="text-align: left;" trbidi="on">Yesterday was the first <a href="http://cloud.ubuntu.com/community/cloud-community-weekly-meeting/">Ubuntu Cloud community meeting</a> to include <a href="https://wiki.ubuntu.com/Ensemble">Ensemble</a>. It was such a blast. Personally I find the <a href="https://code.launchpad.net/ensemble">ensemble project</a> to be incredibly cool, it's such a paradigm shift into how services (rather than servers) should be managed especially in this cloud age. Here's a quick summary of the main points mentioned during yesterday's meeting<br />
<br />
<br />
<ul style="text-align: left;"><li>The ensemble-team just landed some changes to formula authorship, specifically the relation-changed-hook was broken out into three separate hooks the relation-joined, relation-changed, relation-departed</li>
<ul><li>joined denotes that a unit of the related service came online</li>
<li>changed denotes the unit of a related service changed its settings</li>
<li>departed denotes the unit of a related service went offline</li>
</ul><li>This hook split is helpful to avoid subtle race conditions, and make formula authorship easier</li>
<li>Ensemble team is now working on formula upgrades</li>
<ul><li>For now the team is only tackling an initial step of upgrading just the formula itself and only if it's already running</li>
<li>Example command would be: ensemble upgrade-formula --repository=examples mydbservice</li>
<li>That will look into the repo directory for a formula matching the formula of myblog, verify its a newer revision, upload and it mark the units for upgrade</li>
<li>On the unit side, they'll detect they need upgrades, download the formula, and most importantly, execute the upgrade-hook from the new formula</li>
<li>A suggestion came up, that the upgrade hook would be informed which version the upgrade process is starting from</li>
</ul><li>A Question comes up, whether hooks should be implemented in a specific language. The answer is that all hooks are effectively just executables, those executables can be in any language and use any tools they'd like</li>
<li>Ensemble team is also working on orchestrating around firewall addressing such that the firewall is configurable by the ensemble user (ensemble expose, ensemble unexpose), with corresponding hooks (exposed, unexposed), and hook commands (open-port, close-port)</li>
<ul><li>The draft for that is on http://people.canonical.com/~niemeyer/ensemble/drafts/expose-services.html</li>
<li>expose and unexpose are for now operating on top of ec2 security-groups, in the future however multiple backends can be implemented (cisco firewalls..etc)! Without even needing to change the formula, quite impressive!</li>
</ul><li>A question was asked whether ensemble is ready for public collaboration, the answer to which is a definite yes!</li>
<ul><li>Grab the code today: bzr branch lp:ensemble</li>
<li>Join the mailing list: https://lists.ubuntu.com/mailman/listinfo/Ensemble</li>
<li>Join IRC channels #ubuntu-cloud, #ubuntu-ensemble</li>
</ul></ul><div>If you liked this, be sure to join the next meeting (Every Wed, 18:00-UTC in #ubuntu-cloud). Have questions or comment? Leave me a comment right here, or ping me (kim0) on IRC</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-24840509040275963422011-04-12T18:38:00.000+02:002011-04-12T18:38:49.392+02:00Ensemble Cloud Community Meeting<div dir="ltr" style="text-align: left;" trbidi="on"><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; line-height: 16px;"><a href="https://wiki.ubuntu.com/Ensemble" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;">Ensemble</a> is an exciting new cloud technology innovated by Ubuntu. If you’re curious what it does (I bet you are) it is a service orchestration framework with focus on rapid cloud deployment. That is to say, it allows one to rapidly deploy cloud instances, bootstrap them, install software on them, configure them as well as link them all together to provide you (as a sys-admin or DevOp) with an end-user facing high-level “service” (Load Balanced CMS with sharded Database, Multinode email service installation…etc). Ensemble has been compared to being APT for the cloud! Now does that sound interesting, it sure is if you ask me! Welcome to next generation Linux infrastructure automation.</span><div><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; line-height: 16px;"><br />
</span></div><div><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;"><span class="Apple-style-span" style="line-height: 16px;">If that got you interested, be sure to attend the <b>weekly IRC meeting on Wed 18:00-UTC on #ubuntu-cloud</b>. </span></span></div><div><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;"><span class="Apple-style-span" style="line-height: 16px;">Read More at: </span></span><a href="http://cloud.ubuntu.com/2011/04/ensemble-cloud-community-meeting/">http://cloud.ubuntu.com/2011/04/ensemble-cloud-community-meeting/</a></div><div>Feel free to tweet/dent and spread this around the globe. Got feedback? Leave me comments on cloud.ubuntu.com or on my blog</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-22195845516726311962011-04-11T14:31:00.000+02:002011-04-11T14:31:52.943+02:00Help Shape Maps.Ubuntu.com<div dir="ltr" style="text-align: left;" trbidi="on">About either months ago, I had started on a fun little project to raise awareness of how widely used Ubuntu Server is around the world. The result was <a href="http://maps.ubuntu.com/">http://maps.ubuntu.com/</a> a web tool allowing anyone using Ubuntu Server to "mark" his location on a global map. This was launched with celebrations for 10.04.1, and thousands of cities were marked (woohoo). The project code was open-sourced and lives at <a href="https://launchpad.net/mapuntu/trunk">https://launchpad.net/mapuntu/trunk</a><br />
<br />
It's been a while since the project was last updated, a few days ago, an Ubuntu community member ( hey <a href="https://wiki.ubuntu.com/ronnie.vd.c">Ronnie</a> ) stepped up to re-shape the <a href="https://launchpad.net/mapuntu/trunk">mapuntu</a> project and relaunch it into an <b>inspiring map that helps anyone record and locate Ubuntu events around the globe!</b> The first part of that effort is creating a proper <a href="https://wiki.ubuntu.com/mapuntu/API">back-end API</a>, everyone is encouraged to click that link and leave comments. If you are inspired by that project, and would like to help, please get involved! Things you can do to help include<br />
<br />
<ul style="text-align: left;"><li>Review and enhance the proposed API</li>
<li>Help write python code to implement the backend api</li>
<li>Write html/css/js for the front-end</li>
<li>Play with the code, test it, report bugs, adapt to your own website!</li>
</ul><br />
<br />
If you want to talk more about this, Please join #ubuntu-locoteams on IRC and ping Ronnie or myself (kim0, also on #ubuntu-cloud).<br />
</div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com8tag:blogger.com,1999:blog-342921498109425004.post-18511286205806535872011-04-01T18:35:00.000+02:002011-04-01T18:35:59.187+02:00Creating Customized UEC and EC2 Images<div dir="ltr" style="text-align: left;" trbidi="on">Want to create a customized Ubuntu cloud image that you can deploy to EC2 or UEC ? No problem! Check out this 5 min video where I demo everything needed to download, customize, rebundle and publish the new image to EC2! Isn't this just great :)<br />
<br />
<object height="390" width="640"><param name="movie" value="http://www.youtube.com/v/K1IwTGLWbu0?fs=1&hl=en_US&rel=0&hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/K1IwTGLWbu0?fs=1&hl=en_US&rel=0&hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="390"></embed></object><br />
<br />
If you can't see the embedded player, here's a direct link: <a href="http://www.youtube.com/watch?v=K1IwTGLWbu0">http://www.youtube.com/watch?v=K1IwTGLWbu0</a><br />
</div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-40396148615436462042011-03-25T15:03:00.000+02:002011-03-25T15:03:42.992+02:00Ubuntu Cloud Days, Day-2 Summary<div dir="ltr" style="text-align: left;" trbidi="on">Yesterday was the second and final day of cloud days. It was such a blast! Very interesting stuff, and very cool community to be part of! In case you missed it, you can still read up the logs, and you can reach me and others for questions and comments on #ubuntu-cloud .. Let's quickly zip through yesterday's sessions<br />
<br />
<a href="http://irclogs.ubuntu.com/2011/03/24/%23ubuntu-classroom.html#t16:00">16.00 UTC smoser</a> gave a very good introduction to the different ways with which you can rebundle UEC or EC2 images for Ubuntu, how you can customize them and the different pros and cons. Scott also answered lots of questions<br />
<a href="http://irclogs.ubuntu.com/2011/03/24/%23ubuntu-classroom.html#t17:00">17.00 UTC tetet</a> started by presenting some interesting new features and tricks that can be used with UEC namely persistency, which means kexec'ing the kernel to load from an EBS volume resulting in persistent UEC instances. Thorsten zipped through the session quickly, but as a pro instructor, he was very well prepared with links to graphics, links and documentation<br />
<a href="http://irclogs.ubuntu.com/2011/03/24/%23ubuntu-classroom.html#t18:00">18.00 UTC Daviey</a> wowed the crowd with a puppet introductory session, he showed how to configure apache with puppet and what it takes and deploy a basic system to get running fast. It was a great session<br />
<a href="http://irclogs.ubuntu.com/2011/03/24/%23ubuntu-classroom.html#t19:00">19.00 UTC edulix</a> took over to present an awesome session about using hadoop and its map/reduce programming model to crunch on large (we're talking terabytes) of data on lots of machines. Very interesting and useful session<br />
<a href="http://irclogs.ubuntu.com/2011/03/24/%23ubuntu-classroom.html#t20:00">20.00 UTC obino</a> had the final say on cloud days. The session was about UEC/Eucalyptus. He presented a detailed architecture of the system, what each node does, how things work. He also explained how to get started contributing to the eucalyptus community. <div><br />
</div><div>It was a great event. Big Thank-Yous to everyone who presented in UCD. Till next time o/</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-62692852515926648832011-03-24T15:23:00.000+02:002011-03-24T15:23:55.470+02:00Day-2 Ubuntu Cloud Days<div dir="ltr" style="text-align: left;" trbidi="on"><span class="Apple-style-span" style="font-family: inherit;">Yesterday was great! It was Ubuntu Cloud Days, the event was packed with very interesting sessions, hundreds of attendees, lots of questions got answered, tons of ideas and comments were made. I personally had lots of fun, and was </span>literally<span class="Apple-style-span" style="font-family: inherit;"> stuck to my keyboard the full time of the event</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: inherit;">Let's zip through what happened yesterday (If you missed it, Click the time to read the logs!)</span><br />
<a href="http://irclogs.ubuntu.com/2011/03/23/%23ubuntu-classroom.html#t16:00">16.00 UTC kim0</a><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"> (me) took-over, gave a quick introduction about cloud computing, differences between public and private clouds and what the cloud fuss is all about</span></span><br />
<span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"></span></span><a href="http://irclogs.ubuntu.com/2011/03/23/%23ubuntu-classroom.html#t17:00">17.00 UTC semiosis</a><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"> started a great session about building scalable distributed storage on the EC2 Cloud using Glusterfs for improving redundancy, and performance</span></span></span><br />
<span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"></span></span></span><a href="http://irclogs.ubuntu.com/2011/03/23/%23ubuntu-classroom.html#t18:00">18.00 UTC SpamapS</a><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"> gave a cool presentation and hands-on demo of a new Ubuntu ground breaking "service" management framework called Ensemble. While in early development phase, it's already working well and is changing how we look at server management</span></span></span><br />
<span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"></span></span></span><a href="http://irclogs.ubuntu.com/2011/03/23/%23ubuntu-classroom.html#t19:00">19.00 UTC hallyn</a><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"> took over presenting a technically deep discussion and hands-on demo about LXC Linux containers technology. This is a light weight Linux virtualization (or container) technology</span></span></span><br />
<span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"></span></span></span><a href="http://irclogs.ubuntu.com/2011/03/23/%23ubuntu-classroom.html#t19:59">20.00 UTC soren</a><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333;"><span class="Apple-style-span" style="line-height: 16px;"> took over to talk about OpenStack, one of the cloud stacks that Ubuntu ships with 11.04 that's been getting lots of cloud people excited lately. Soren explained how the whole thing got started, explained the architecture, answered lots of questions and discussed what we should be seeing in the future</span></span></span><br />
<div style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="line-height: 16px;"><br />
</span></span></div><div style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333; line-height: 16px;">Here's a sneak peak of today's sessions</span></span></div><div style="clear: none; color: #333333; line-height: 25px; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="font-family: inherit;"><span class="Apple-style-span" style="color: #333333; line-height: 16px;"><strong style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;"><br />
</strong></span><span class="Apple-style-span" style="color: #333333; line-height: 16px;"><strong style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;">Thu 24th Mar</strong></span><br />
<span class="Apple-style-span" style="color: #333333; line-height: 16px;"><strong style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;">16.00 UTC</strong> rebundling/re-using Ubuntu’s UEC images — smoser</span><br />
<span class="Apple-style-span" style="color: #333333; line-height: 16px;"><strong style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;">17.00 UTC</strong> UEC persistency — tetet</span><br />
<span class="Apple-style-span" style="color: #333333; line-height: 16px;"><strong style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;">18.00 UTC</strong> Puppet Configuration Management — Daviey</span><br />
<span class="Apple-style-span" style="color: #333333; line-height: 16px;"><strong style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;">19.00 UTC</strong> Using hadoop, divide and conquer — edulix</span><br />
<span class="Apple-style-span" style="color: #333333; line-height: 16px;"><strong style="clear: none; color: #333333; outline-color: initial; outline-style: none; outline-width: initial;">20.00 UTC</strong> UEC/Eucalyptus Private Cloud — obino</span></span></div><div><br />
</div><div>Let's get crunching on even more cool sessions today! If you’re new to IRC, you can simply use this <a href="http://webchat.freenode.net/?channels=ubuntu-classroom%2Cubuntu-classroom-chat">web page</a> to join. For more information, check out the <a href="https://wiki.ubuntu.com/UbuntuCloudDays">wiki page</a>, also feel free to ping “kim0″ on IRC!</div></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0tag:blogger.com,1999:blog-342921498109425004.post-886351724086995002011-03-23T13:33:00.000+02:002011-03-23T13:33:33.124+02:00Today is Ubuntu Cloud Days<div dir="ltr" style="text-align: left;" trbidi="on"><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><b>Today</b> is .. dum roll ... Ubuntu Cloud Days! The event starts at 4pm UTC on irc #ubuntu-classroom. Updates to the schedule include an <b>OpenStack</b> session, a <b>Eucalyptus</b> session and a <b>puppet</b> session! Those attending the <b>Ensemble</b> session are in for a treat :) During Cloud Days, you’ll learn lots of exciting stuff, you’ll interact with tons of smart people, and you’ll just have fun! Spread the word, join in and bring your friends!</span><br />
<div style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;">Here’s the sessions schedule</span></div><div style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">Wed 23rd Mar<br style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;" />16.00 UTC</strong> Cloud Computing 101, Ask your questions — kim0</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">17.00 UTC</strong> Scaling shared-storage web apps in the cloud with Ubuntu & GlusterFS — semiosis</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">18.00 UTC</strong> What is Ensemble? – Presentation and Demo — SpamapS</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">19.00 UTC</strong> Using Linux Containers in Natty — hallyn</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">20.00 UTC</strong> Open-Stack Introduction — soren</span></div><div style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;"><br />
</strong></span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">Thu 24th Mar</strong></span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">16.00 UTC</strong> rebundling/re-using Ubuntu’s UEC images — smoser</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">17.00 UTC</strong> UEC persistency — tetet</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">18.00 UTC</strong> Puppet Configuration Management — Daviey</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">19.00 UTC</strong> Using hadoop, divide and conquer — edulix</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><strong style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;">20.00 UTC</strong> UEC/Eucalyptus Private Cloud — obino</span></div><div style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;"><br />
</span><br />
<span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;">All session happen in IRC (Freenode) in #ubuntu-classroom. If you’re new to IRC, you can simply use this <a href="http://webchat.freenode.net/?channels=ubuntu-classroom%2Cubuntu-classroom-chat" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;" target="_blank">web page</a> to join. For more information, check out the <a href="https://wiki.ubuntu.com/UbuntuCloudDays" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;" target="_blank">wiki page</a>, also feel free to ping “kim0″ on IRC</span></div><div style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial;"><span class="Apple-style-span" style="color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px;">Additional links:</span></div><ul style="clear: none; color: #333333; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-align: left;"><li><span class="Apple-style-span" style="font-size: 12px; line-height: 16px;"><a href="http://www.facebook.com/ubuntucloud" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;">Ubuntu Cloud Facebook page</a></span></li>
<li><span class="Apple-style-span" style="font-size: 12px; line-height: 16px;"><a href="http://www.facebook.com/ubuntucloud" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;"></a></span><span class="Apple-style-span" style="font-size: 12px; line-height: 16px;"><a href="http://www.twitter.com/ubuntucloud" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;">Ubuntu Cloud Twitter page</a></span></li>
<li><span class="Apple-style-span" style="font-size: 12px; line-height: 16px;"><a href="http://www.twitter.com/ubuntucloud" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;"></a></span><span class="Apple-style-span" style="font-size: 12px; line-height: 16px;"><a href="http://www.identi.ca/ubuntucloud" style="clear: none; color: #dd4814; font-family: Ubuntu, 'Ubuntu Beta', UbuntuBeta, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;">Ubuntu Cloud Identi.ca page</a></span></li>
</ul></div>Kamalhttp://www.blogger.com/profile/02280645950384593949noreply@blogger.com0