Planet Eucalyptus

May 16, 2012

Eucalyptus Education

Why we don't get on-premise IaaS (insights for insiders) - Part 1

Having been an employee at Eucalyptus Systems, Inc. for nearly a year now, I finally can say I get the cloud. I understand the concept, the benefits, the use cases, the technology (*whew*), and how to implement it in the real world (*double whew*). It is also very clear to me that I am in a distinct minority among technical gurus worldwide. Most people just don't get it, and there are some very good reasons for their confusion. I'm not sure there are any great answers to these reasons, but you can't fix a problem if you don't acknowledge it.

Problem #1: No easy ways to build a value proposition based on non-cloud experience.

When I teach our Cloud Connections: Cloud Foundations course, I spend more than an hour on the introduction to cloud computing, carefully building the scenario from the way IT organizations run today, virtualized or not, to how cloud technology and concepts layer on top of that to provide transformational benefit. I can get away with this in a technical training class where I've got lots of time, but in our sound-byte, "give me the overview" society of overly busy technical decision makers and IT professionals, you don't get that kind of time outside of the classroom. What happens then is the creation of a number of catch words, buzz phrases with specific meanings in the cloud, and "quick fix" webinars (admittedly by Eucalyptus and our coopetition as well) designed to convince the world of the benefits of cloud but without providing a foundation for those benefits that the user can frame internally. This leaves folks with a sense of being sold rather than educated, and/or with a vague sense of the value proposition but with no concrete ideas about what to do with it and why they should move, and move quickly. This is a significant problem for the industry today.

I spent many years in VMware education prior to joining Eucalyptus. Virtualization, when I started there, was still a relatively unknown technology, but we could explain a key and major component of the value proposition in just a few words: Virtualization allows you to run multiple "virtual servers" at one time on the same physical hardware, allowing you to dramatically reduce the money you spend on physical IT assets. We'd show you a picture of a physical server with several little virtual servers running on top of it, and for most people the value proposition was immediately clear, even if they were skeptical of the technology itself. They understood servers, low utilization, the need to separate applications, and the problem of datacenter sprawl before we gave them any information, and they could build on that knowledge to immediately understand what virtualization would provide to them.

We don't have that easy, quick, clear value proposition with cloud computing in general, and IaaS in particular. We can talk about elastic resources, but then we need to explain what elastic means (and it means different things in different contexts... yuck...) We can talk about IT automation/consolidation, but then we have to explain why and how that's different from current processes and explain why we don't think that will threaten the livelihood of the person to whom we're talking. We can talk about application resiliency, decentralized management and control, security, disaster recovery, storage-as-a-service, "cloud bursting," and any of the other potential benefits cloud computing provides, but if we just use the buzzwords and catch phrases - and we do that a *lot* - the listener is again left with nothing more than a vague idea about the general idea of the cloud, and worse yet, potentially left with a threatening view of how the cloud might affect their livelihood if implemented in their company. What we desperately hope is that folks will be convinced enough by our salesmanship to explore further, but even then we don't have a lot in place today for them to hold onto as they make those next steps.

What we need to do is figure out the IaaS equivalent of server consolidation for virtualization and distill it into a short sentence that people with no prior cloud experience can understand within about 3-5 seconds of hearing it and seeing it illustrated. Either that, or every IT person on the planet needs to take the time to view the free Cloud Connections: Cloud Foundations (Free) recording available on Eucalyptus University. :)

Can you come up with a short sentence that encapsulates the primary benefit(s) of on-premise IaaS (private cloud) that could be easily understood by someone not already enmeshed in cloud concepts?

by EucaEducation (noreply@blogger.com) at May 16, 2012 03:16 PM

May 15, 2012

Rich Wolski

What exactly is "Available" and how "High" is it in Highly Available Eucalyptus?

Eucalyptus 3 includes, as one of its new features, the option of enabling "High Availability" or "HA" (pronounced as the two letters and not as the first part of a chuckle). This functionality was overwhelmingly the most frequently requested improvement over Eucalyptus 2 by the community and, at the same time, the one over which the most confusion seems to persist. I'll try and shed some light on the "what," "why," and "how" of HA in Eucalyptus.

What: Automatic Failover and Recovery of Eucalyptus Services

Eucalyptus consists of a number of "always-on" interacting web services. In an HA configuration, each service can be configured with a running-but-inactive spare. If and when an active component fails or becomes disconnected from the other Eucalyptus services, the system will enable the spare on the fly and keep running.

read more

by rich at May 15, 2012 03:23 PM

May 14, 2012

David Federlein

Case Study: EucaSchool Part 2 - Using Screen

In my last post I detailed the why on this project; this post will focus on the how.  Specifically this post will consolidate the various resources on the internet I culled to be able to set up screen to be used as a teaching tool.




We used a Ubuntu instance to demonstrate from, so these commands may be specific (apt-get, ufw etc.) however translation to another distro should be pretty easy.  Let's assume you have a Ubuntu image up and running and ready to be configured.   Install screen as root:
apt-get install screen
Next, let's test permissions for multiuser use of screen.  As root, enter the following:
root@host # screen -L -S learningsession
root@host # Ctrl+a :multiuser on
root@host # Ctrl+a :acladd UserA
root@host # Ctrl+a :aclchg UserA -w "#"
The above is from the primer lesson in screen located here. The idea is as root you start the session, pick UserA as your student account, and allow read-only access to the session for that user.  Now as UserA, log in and try to join the screen session via the following:
UserA@host # screen -x root/learningsession
If you're on Ubuntu at this point, you may see this error:
Must run suid root for multiuser support.
Change permissions on the screen binary:
root@host # chmod u+s /usr/bin/screen
Now you should be able to connect to root's screen session as a watcher.  I found that tip here (though in my Ubuntu screen's binary wasn't located at /usr/bin/screen.real, it was just /usr/bin/screen.)  Now if you join as that user you can try to enter a command and you will get an error saying you do not have write permissions.  We're ready to move on.

For UserA we're going to make it so they only get the screen session you set up when they log in and if they detach, they are logged out.  There's probably a thousand different ways to do this however I will only detail how to do this by manipulating the user's .bashrc and .profile files.

First, make sure the user's default shell is bash: edit /etc/passwd as root and verify it looks like this:
UserA:x:1000:1000:Test User,,,:/home/UserA:/bin/bash
The part we're interested in is making sure the last entry is /bin/bash.  Next in that user's account make sure there's a ~/.profile file that sources .bashrc:
~ $ cat .profile 
# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
Next, we add these two lines to the end of user's ~/.bashrc:
screen -x root/learningsession
exit
Now when that user logs in, that screen session will execute, and when that process ends the .bashrc file will exit the shell, ending the session.  Note: This is a very quick and dirty answer.  Best practices may be to set screen as the default login shell as well as constrict that user to a jailed session, but I won't use that method, specifically because I picked a name for my screen session and will reuse that name every time (ie. screen -S learningsession.) 

If you wanted you could now add the following to root's ~/.screenrc file so that the multiuser and read only permissions are automatically called for the student user.  Reference this page for specifics (note the common problems at the end.)  Example ~/.screenrc for root:
root: ~ $ cat .screenrc 
multiuser on
acladd UserA
aclchg UserA -w "#
Now any time root starts a screen session, it will be read-only available to UserA.  While not a desirable thing on a production machine in the wild, for a lab/training instance this is exactly what we would want.  Note: You can go one step further and alias a command in the .bashrc of root's account to automatically start the screen session with the correct name.  You could go one step further and add a line to .bashrc for root that not only checks for that screen if it is running, but starts it if it is not and joins root to the screen session.   For example, you could add this to root's .bashrc file:
LSCRN=($(screen -list | grep learningsession | awk -F"." '{print $2}'))
if [[ LSCRN == "learningsession" ]]; then
screen -x $LRNSCRN;
else
screen -L -c ~/.screenrc -S learningsession
fi
I actually haven't tested the above, but at the very minimum you can now set the password to UserA to anything you want, give the login credentials to your students and you're off to the races.  If you wanted to have a log session of what happened in screen, you'll find that log in root's home directory.  The "-L" flag on the screen command issued above has already told screen to log the session.

Important note: screen session logging won't log what happens inside another process.  For example, if you vi /etc/hosts in a demonstration, your changes inside the editor will not be logged but an execution of that command is.  If you are looking to log everything within the screen session for replay later, you'll want to use a screencasting/recording program to record your shell window and save that output for your static tutorial archive.

In my next post in this series I'll detail how to get your own irc server up and running with Pam/LDAP authentication for your student's accounts and tools you can use in your IRC channel to log your tutorial session for republication on a web page.

Finally, later on, I will demonstrate how to automate this process and build a Eucalyptus image to launch with these properties baked in: IRC server fully configured and ready to run, screen session at the ready and student account configured to only join a specific screen name.  The ultimate goal is to have a single command to launch an instance and be able to have users log in to IRC and the screen session (and only that) while you can demonstrate whatever topic you need to them.

by David Federlein (noreply@blogger.com) at May 14, 2012 05:58 PM

Marten Mickos

My Tweets of the Winter 2011-2012: The World, Our Planet

Here is a summary of my tweets about the world and our planet from the previous months.

This is my previous tweet summary for Fall 2011. And, of course, feel free to follow my tweets in real time at http://twitter.com/#!/martenmickos


March

James Cameron completes 11km Mariana trench dive http://on.natgeo.com/GNSXlA

James Cameron begins descent to ocean's deepest point http://bit.ly/GQn516 - impressive stuff!

RT @RomanStanek Prague's Franz Kafka International Named World's Most Alienating Airport http://onion.com/dhkrSw

Bilingual makes you smarter. NYT http://t.co/3IqPauWw

Interesting reading: Index of Silicon Valley 2012 http://siliconvalleycf.org - half of the ppl speak other than English at home

RT @aneelb: Very cool report.

read more

by marten at May 14, 2012 05:00 PM

May 13, 2012

Marten Mickos

May 12, 2012

Graziano Obertelli

The One-Site Project

It's my great pleasure to announce our new web-site. The one-site project aimed to unified our two web sites. As previously mentioned, we started this project sometime ago to address the needs of our community. We believe that the diverse interests of our community are better represented by the cloud IT roles. And the new website has been designed to help our users to navigate following the interests, languages, and preferred communication channel of each role.

Navigation by Cloud IT Roles

First let me mentioned how the generic navigation of the site has been greatly improved. The main navigation is Learn, Eucalyptus Cloud, Participate, Services and Partners, and, if you already know where you want to go, in the footer of each page you will find direct links to subsections. The progression is obvious, starting from generic documents on cloud computing, on premise cloud, IT roles going to the specific of Eucalyptus Cloud, finally exposing how to reach our community, Services provided and last but not least diving into the rich and varied partner ecosystem.


Information customized on a per-role basis


Let's go back to the navigation by roles. In the Learn section there is a selection that allows each roles to explore what cloud means for them. Each role page has specific links and information related to the respective competences. Let me give you examples for some of the roles represented there:
  • Cloud Administrators will find install and maintenance guides. In case they get into issues they can search our knowledge base for the specific error code, or engage other administrators to discuss about the different installation options or what is the best hypervisor for their situation; 
  •  Developers can quickly reach the latest source code, looks at currently worked on issues, and start talking about the latest patch they have been working on. Detailed informations on Eucalyptus internal structure and API supported are also the bread and butter for Developers;
  • Application Architects will find everything about our starter images, from what's inside and why, to how to recreate and modify them. They would want to use and modify the instances recipes and share their latest scripts to recreate their production environment. 
You will find the roles highlighted throughout the web site, so, for example, under GetEucalyptus you will find options for Managers (get the free trial), Architects (FastStart for a quick proof of concept), Administrators (get the latest release), Application Architect (get the starter images).

Find how to participate independently from your role

Participate and Resource Library are the two notable exceptions to the roles principle. While you will still find links to the cloud roles pages, these pages addresses our community as a single entity. Participate gathers selected blogs posts for all our users, as well as giving pointers to where to find online community. Resource Library allows you to find all the published information about Eucalyptus and cloud computing organized by type and date.

With the new web site, you will also find new redesigned forum. You will find the motivation behind it in Darren's blog, and more about its functioning in the Engage blog. Our new site is now available and ready to Engage you: let us know what you like and how we can improve it for you.

by Graziano Obertelli (noreply@blogger.com) at May 12, 2012 08:33 PM

Marten Mickos

My Tweets of the Winter 2011-2012: Leadership and Entrepreneurship

Here is a summary of my tweets about leadership and entrepreneurship from the previous months.

This is my previous tweet summary for Fall 2011. And, of course, feel free to follow my tweets in real time at http://twitter.com/#!/martenmickos


April

Keep your own scorecard. @CharlotteBeers on self-assessment, leadership, recruiting http://nyti.ms/H5efKb - brilliant Q+A from start to end

March

Should attractive women not include a photo with a job application?

read more

by marten at May 12, 2012 05:00 PM

May 11, 2012

Marten Mickos

My Tweets of the Winter 2011-2012: Open Source

Here is a summary of my tweets about open source from the previous months.

This is my previous tweet summary for Fall 2011. And, of course, feel free to follow my tweets in real time at http://twitter.com/#!/martenmickos


April

"Scarcity is the enemy of serendipity" - thoughtful piece on Burning Man dilemmas by @jessbruder http://nyti.ms/HJjLBb via @brown2020

March

Awesome dinner w/ former MySQL execs http://lockerz.com/s/196629110

Congrats Jim & team! Red Hat first open source company to top $1bn a year http://read.bi/GZ3PPT

One of the most advanced MySQL users in the world attracts some of the most advanced MySQL experts http://bit.ly/H7jlT8

Inspiring blog post on freedom by JP Rangaswami http://t.co/hnmeGvuH

Freedom without fragmentation in ecosystems with common APIs

I'm glad you keep saying it!

read more

by marten at May 11, 2012 05:00 PM

May 09, 2012

David Federlein

Case Study: EucaSchool Part 4 - MeetBot

In my last post i detailed how to set up your own IRCd with Pam authentication and SSL.  In this post we'll discuss how to add a meeting log IRC bot based on debian's meetbot, which is a module for supybot.  Eucalyptus uses this extensively for all irc meetings as well as to log the irc session for EucaSchool.  Our specific bot's documentation is here.


First let me point you to Alton Ukshini's blog, who has detailed much of what I used to put this article together.  I offer much thanks to him and ask you to please check his blog out.

To start let's set the grounds for installing supybot.  You can name it what you like (ours is Eucabot, as stated before) but supy/meetbot will require an account on your server to run from.  Change to user ircbot after you've installed supybot via apt-get.
apt-get install supybot
su - ircbot
mkdir supybot
cd supybot
From here, we want to run supybot-wizard:

supybot-wizard

Once your setup is done, you'll have a config file to source when you call the supybot program.

supybot configurationfile.conf

Let's get meetbot added.  As the ircbot user grab the tarball from here and unzip it into the /supybot/plugins directory.

wget https://launchpad.net/meetbot/0.1.4/0.1.4/+download/meetbot-0.1.4.tgz
tar -xzvf meetbot-0.1.4.tgz
mv meetbot ~/supybot/plugins/

If you're running your supybot already, you can load this module by issuing the command in channel on IRC as such:

Supybot: load MeetBot

Otherwise fire up your supybot and it should attach to the IRC channel/server as configured and be ready to go.  You can read commands and more information about meetbot here.  If you want your logs published to a website, edit the meeting.py file under the meetbot folder and change the logFileDir variable to point to your apache document root such as /var/www/meeting_logs and configure logUrlPrefix to match the domain/subdomain of the url you wish to use such as http://www.meet.me/lessons/ or whatever fits your setup.  Otherwise, your logs will automatically publish to the supybot home directory for you to export or use later.

With the previous posts and this one, you are now ready to offer an irc session using meetbot on your own irc server and a screen session to demonstrate your commands/scripts in.  In the next post I will demonstrate how to log your screen session using shelr for screencasting from a shell prompt.  Later on, I will demonstrate how to add all of these components together to launch in an AWS/Eucalyptus instance on demand.

by David Federlein (noreply@blogger.com) at May 09, 2012 07:07 AM

May 08, 2012

Graziano Obertelli

Engage!

We started the journey of One sometime ago. The original idea took shape and evolved into the one-site project and now into Engage. The sentiments and the ideas behind Engage have been articulated very clearly in Darren's blog. Since the time of Eucalyptus 1.5, we established forum within our web site, to allow our community to come together and discuss Eucalyptus and Cloud Computing. It has been my pleasure to help the best I could, participate in discussions, and meet new friends.

It didn't take too long before we realized how inadequate the forum and ultimate we were to help all our users. Limited search capabilities, repeating threads, difficult forum management, obscured error reporting, and a new field called on-premise cloud, got us into long per-post sessions. And yet all we could do was the idiomatic drop in the bucket. The whole process was wrong: we needed to change tack.

That's when Darren got into the picture. His experience with multiple support organizations, brought the needed fresh thinking. His efforts are now live with Engage, and these are the key points:

Intuitive user experience: type your question

  • very intuitive user experience: just type in your question;
  • the same intuitive experience for customers and non-customer: we are doing the necessary work to ensure that customers requests meets their SLA;
  • our customers already love the competence and promptness of our support team. Our community shared the same love, perhaps without knowing: the support team is on IRC, on the forum, on emails, and Engage allows to more effectively track all open questions (wherever they are);
  • modern forum tools: we can now tag an answer as 'best answer', turn it into an article, keep track of the unanswered active threads;
  • single Knowledge Base! Perhaps the most important point: all the articles, questions, and soon issues/bugs form a common knowledge base that a simple and powerful search mines effectively. Every time you type in a question, you are searching the knowledge base!

Likely answers or topic offered while you type limits duplicate threads



Engage has two different basic tool: the Q&A and the Article. A Q&A can be seen as a forum post, everybody can create one and everyone can answer it, can be open ended or can have a 'best answer' to it. Customers can also flag it for faster escalation. Articles are the bulk of the knowledge base: we turn the most common, or important, Q&A into articles, where we can give more background information, have a common format, expose workaround or solutions.

Articles provides the bulk of the knowledge base


When posting a new question you will be asked for Topic, Name, Email Address, Subject, and Body. We divided the Topic based on the Cloud IT roles, following the navigation principle of our site. For a short amount of time, you will have to enter Name, and Email Address each time. This issue will be resolved once we deploy the single sign-on mechanism (based on OpenID) we are working on.

Topics are divided based on the Cloud IT roles

This new tool come with  a cost: we will not be able to migrate our old forum posts to it. The tools are too different and we simply don't have the man-power to make this migration manually. We already pre-populated the articles with the most note-worthy topic coming from the old forum, but we did probably miss some. Also your username has not been migrated from the old web site: once we implements the single sign-on, you will be able to utilize your preferred OpenID provider to login.

Please help us to migrate your unanswered or favorite post from the old forum: just go to engage and post it there. And if you encounter any issue, don't hesitate to contact us. We do believe you will love the simplicity and completeness of what you will find at Engage, and we will be happy to hear any comment you have to improve it.

by Graziano Obertelli (noreply@blogger.com) at May 08, 2012 10:54 PM

Euca @ UDS

In Greg's Where is Waldo game, one big event was missing: Eucalyptus is also at UDS. Harold, Brian and me are already in Oakland ready to rock and roll. We have exciting news for our session: you can check out Brian's blog for a sneak peak of  Eucalyptus 3.1 Alpha1. Your favorite on-premise IaaS now is available with HA, boot from EBS, and IAM (check the roadmap for more details).

Find us at the Eucalyptus session, or around the conference floor  to say hello or to get a t-shirt (limited supply). 

by Graziano Obertelli (noreply@blogger.com) at May 08, 2012 02:53 PM

May 07, 2012

Andy Grimm

An Online Identity Crisis

Yesterday I was working with some folks in #fedora-java, and after confusion over my IRC versus FAS nicks, someone asked me how many different nicks I had.   The answer, unfortunately, is "at least four."  I realized a couple of years ago that I had created a problem for myself as far as online identities go.  I was never one to go signing up for new services to reserve my nick early, and I've not chosen particularly unique nicks.  So, this is me, currently:
  • mull - an IRC-only nick that dates back to my college days, maybe 1999-ish, when folks in the #aalug channel were trying out new nicks daily for a while.  I have no idea why this stuck, and I've never used it anywhere else. UPDATE: I've now claimed "agrimm" on IRC, so you won't be seeing "mull" anymore.

  • arg - I made a particularly huge mistake when I chose my initials for my FAS (Fedora Account System) ID, even though there was very little possibility I'd be able to use that elsewhere.   I suspect that a FAS account is one of the less trivial ones to change, too, so I'm probably stuck with this being a one-off.

  • agrimm - the obvious first initial + last name choice, more easily obtained than initials, but still not universally unique.  I use it for email addresses and not much else, and I get a *lot* of misdirected email for people who share my last name.

  • a13m - I started using this for twitter and some other random things when arg and agrimm were taken.  In case it's not obvious, this nick derives from my full name, in the style of i18n, a11y, etc.  While very short and almost never taken by anyone else, the relation to my name is subtle enough that most people don't make the connection.
I've clearly been overthinking this, but I really would like to converge on nicks which are clearly related (for example, the guy who has "arg" on FreeNode is "argv0" on Twitter... clever).  Any suggestions?

by Andy Grimm (noreply@blogger.com) at May 07, 2012 07:45 PM

Eucalyptus Community Blog

Euca @ UDS

In Greg's Where is Waldo game, one big event was missing: Eucalyptus is also at UDS. Harold, Brian and me are already in Oakland ready to rock and roll. We have exciting news for our session: you can check out Brian's blog for a sneak peak of  Eucalyptus 3.1 Alpha1. Your favorite on-premise IaaS now is available with HA, boot from EBS, and IAM (check the roadmap for more details).

read more

by graziano at May 07, 2012 05:41 AM

May 03, 2012

Andy Grimm

Sampling GitHub API v3 in Python

Eucalyptus is in the process of moving code to GitHub, and this week I finally decided to look at the available API tools for working with GitHub.  I wanted a tool written in python, since that would be the fastest for me to extend, and I found github2.  Unfortunately, that homepage had a prominent warning that the code only worked with GitHub's old APIs, which were being turned off this week.  So I decided to investigate what I could do from scratch in a small amount of code.  I had already started using restkit in jiranemo, so that seemed to be a reasonable starting point.  Here's what I came up with:


import json
from restkit import Resource, BasicAuth, Connection, request
from socketpool import ConnectionPool

pool = ConnectionPool(factory=Connection)
serverurl="https://api.github.com"

# Add your username and password here, or prompt for them
auth=BasicAuth(user, password)

# Use your basic auth to request a token
# This is just an example from http://developer.github.com/v3/
authreqdata = { "scopes": [ "public_repo" ], "
note": "admin script" }
resource = Resource('https://api.github.com/authorizations',
pool=pool, filters=[auth])
response = resource.post(headers={ "Content-Type": "application/json" },
payload=json.dumps(authreqdata))
token = json.loads(response.body_string())['token']

"""
Once you have a token, you can pass that in the Authorization header
You can store this in a cache and throw away the user/password
This is just an example query. See http://developer.github.com/v3/
for more about the url structure
"""
resource = Resource('https://api.github.com/user/repos', pool=pool)
headers = {'Content-Type' : 'application/json' }
headers['Authorization'] = 'token %s' % token
response = resource.get(headers = headers)
repos = json.loads(response.body_string())

There's not any magic in this code, but it took a couple of reads to wade past all of the OAuth talk in github's docs and realize that for a simple browserless tool, you can avoid using OAuth libraries altogether and still not have to store a hard-coded password.

by Andy Grimm (noreply@blogger.com) at May 03, 2012 07:51 PM

April 27, 2012

Greg DeKoenigsberg

Where’s Euca in early May?

For those of you who missed us in New York and the Bay Area this week, never fear.  We’re getting around.  :)   Come see us at:

  • April 28 – 29: LinuxFest Northwest, Bellingham WA
  • April 30 – May 2: OpenCloudConf, Sunnyvale CA
  • May 6 – 10: Interop Las Vegas – Mandalay Bay, Las Vegas, NV
  • May 8: Goldman Sachs Cloud Computing Conference – Rosewood Sand Hill, Menlo Park CA
  • May 16: AWS User Group Amsterdam – Amsterdam, Netherlands

Find the person in the Eucalyptus t-shirt / white dress shirt / hoodie and say hello.  Check out our full events schedule.  If you’ve got an event you’d like to add to that list, let me know.


by Greg DeKoenigsberg at April 27, 2012 05:21 PM

Eucalyptus Community Blog

Where’s Euca in early May?

For those of you who missed us in New York and the Bay Area this week, never fear.  We’re getting around.  :)   Come see us at:

  • April 28 – 29: LinuxFest Northwest, Bellingham WA
  • April 30 – May 2: OpenCloudConf, Sunnyvale CA
  • May 6 – 10: Interop Las Vegas – Mandalay Bay, Las Vegas, NV
  • May 8: Goldman Sachs Cloud Computing Conference – Rosewood Sand Hill, Menlo Park CA
  • May 16: AWS User Group Amsterdam – Amsterdam, Netherlands

Find the person in the Eucalyptus t-shirt / white dress shirt / hoodie and say hello.  Check out our full events schedule.  If you’ve got an event you’d like to add to that list, let me know.

read more

by gregdek at April 27, 2012 05:21 PM

Mel Chua

EucaDay for Remotees: the complete guide to what happened

Aaaand now that all the transcripts are in and somewhat cleaned up, here is the complete collection of EucaDay artifacts; if you wanted to know what happened during any of the Eucalyptus sessions, everything you need is below. It is all text-based so it is easy to search and translate (there are no audio or video files available). If new artifacts come in, I will update this post accordingly.

If you are catching up with the event now, I suggest reading the transcripts (there are two) as a primary activity since they are a live capture of what was said during the event, then opening the other artifacts (slides and videos) as they are mentioned in the transcript.

Morning transcript – a running log of what was said during (and around) Marten’s and Tim’s presentations, including audience questions. Use this as your primary reading to catch up on the morning.

Marten’s slides (presented in the morning) – Marten Mickos is the CEO of Eucalyptus, and gave an overview of where the company is and where it’s headed.

Tim’s slides (presented in the morning) – Tim Cramer is the VP of Engineering at Eucalyptus, and talked about the state of Eucalyptus technical development.

Morning IRC backchannel log - what was being discussed on IRC during Tim and Marten’s talks.

Afternoon transcript – a running log of what was said during (and around) Greg’s presentation, including audience questions, and the EucaDay wrap-up by Marten. Use this as your primary reading to catch up on the afternoon.

Greg’s slides (presented in the afternoon) – Greg DeKoenigsberg is the VP of Community at Eucalyptus, and talked about why a thriving open source community is vital to Eucalyptus — and then let community members take the floor through short filmclips.

Videos (shown in the afternoon) in the order they were shown:

Afternoon IRC backchannel logs- what was being discussed on IRC during the Community session.

Feel free to edit and comment on any of the transcripts and artifacts — and let us know whether this sort of event documentation is useful, and whether we should do it again!

by Mel at April 27, 2012 03:41 PM

April 26, 2012

Andy Grimm

Greenhopper, Jira, and REST

One of the somewhat frustrating problems I'm dealing with in Greenhopper is that I want the ability to treat a linked issue like a subtask, but without all the restrictions of a subtask.  Subtasks have at least three limitations that get in my way:
  1. They must be in the same project as their parent
  2. They must have the same permissions (issue-level security) as their parent
  3. They must be of an issue type that is flagged as a "subtask" type, so for example, a "Feature" cannot be a subtask of a "Story" unless you create a separate "Feature (subtask)" issues type.
Issue #1 is probably the most frustrating, because product management and the exec team at a software company think in terms of high-level features or use cases for which the implementation will often cross project boundaries.  (An example at Eucalyptus is that a new use case may require changes to both Eucalyptus and Euca2ools.)

The Greenhopper UI operates mostly via a REST API, and so far this API is not well documented.  Last night I got around this lack of documentation by using mitmproxy to monitor calls while moving issues up and down the planning page in Greenhopper's Rapid Board.  Then I added a simple rest client class to jiranemo based on restkit.  I made two helper functions: one to get the rest representation of an issue, and another to change the rank of an issue in Greenhopper.   My script looks like this:


#!/usr/bin/python

import sys
import pyjira
from jiranemo import jiracfg

# Set the exception hook to enter a debugger on
# uncaught exceptions
from jiranemo.lib import util
sys.excepthook = util.genExcepthook(debug=True,
debugCtrlC=True)

# Read ${HOME}/.jirarc, and set up clients and auth caches.
cfg = jiracfg.JiraConfiguration(readConfigFiles=True)
authorizer = pyjira.auth.CachingInteractiveAuthorizer(cfg.authCache)
ccAuthorizer = pyjira.auth.CookieCachingInteractiveAuthorizer(cfg.cookieCache)
client = pyjira.JiraClient(cfg.wsdl,
(cfg.user, cfg.password),
authorizer=authorizer,
webAuthorizer=ccAuthorizer)

# Do a simple JQL query via the SOAP client, return 20 results
issues = client.client.getIssuesFromJqlSearch(
'''project = "system testing 2" order by Rank DESC''', 20)
for x in issues:
# Get the REST representation of each issue, because links
# aren't shown in the SOAP representation
rest_issue = client.restclient.get_issue(x.key)

for link in rest_issue['fields']['issuelinks']:
if link['type'].has_key('inward') and \
link['type']['inward'] == "is blocked by":
# Rank the linked issue above this one in Greenhopper
result = client.restclient.gh_rank(link['inwardIssue']['key'],
before=rest_issue['key'])
The code could use some error checking, but this is a pretty simple starting point for doing something that Jira and Greenhopper can't do on their own.

by Andy Grimm (noreply@blogger.com) at April 26, 2012 04:53 PM

April 25, 2012

shaon

NTP server how to

Network Time Protocol (NTP) It’s a protocol used to synchronize Linux system’s clock with an accurate time source. This little yet powerful tool is very important for every big network. And I have few bad experiences with this NTP. … Continue reading

by Shaon at April 25, 2012 10:28 PM

Mel Chua

EucaDay: Community session, part 1

Couldn’t make it to New York to see Greg DeKoenigsberg’s Community session at the first EucaDay this afternoon? No worries, this post series has it all, including the mini film festival in the middle!

First, I’ll include the entire slidedeck (you can click through to slideshare and download the deck as a pdf as well). Then I’ll show each individual slide inline with the transcript of Greg’s talk and each of the videos that were shown.

Gregdek @ EucaDay NYC <iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/12687624" width="425"></iframe>

This is an epically long post, so click to see more below the jump. And click on each individual slide to enlarge it.

So we’ll go ahead and get started. I’m Greg DeKoenisberg. And this is the Euca community bar…

…except that’s a lie. We were talking about this being the bar part. Apparently it’s too early to start drinking so — I guess. There’s time and time. Just relax. It’s at the end of the day. This is — I always sort of love and hate getting the session at the end of the day because everyone’s been hanging out and we’ll try to keep it interesting and light and if I don’t succeed in that, feel free to get up and wander off. Trust me, I’m not going to be the least bit offended.

There you go. Can you read that? Get your eyes checked. It said welcome EucaDay NYC attendees. That’s what it said. So that’s 6 point font, I think.

The community says hello, there’s a lot more of them than there are of us right now. That’s very clear. It’s — like 9 point font, I think. And that’s supposed to represent some notion of proportionality. My role is to design the Euca community so I care about the community. And constituency is very much a virtual constituency. So even though we’re all here today having a lovely time on Wall Street, there are people all over everywhere who care about what it is that we’re doing and part of my job so to make sure that we’re being as transparent a company as we possibly can be.

So for some of our sessions here we have made sure that we have a transcriptionist who is doing all of this in realtime over the Internet so that the people who are not in this room can be in some sense in this room because they are every bit as important as we are.

So I’d like to talk a little bit about what makes open source projects ultimately
successful. And there are three things that I think are key success factors for an open source project I will give you all the opportunity to guess at what these may be because that’s active and fun and any guesses on what one of the three key success factors of the project is? A great community, no, it’s not. That’s really not it. Openness.

Openness is good. I’m looking for one particular word first. Let’s see if anyone can come up with it. What conspiracy, what? Users. Users. Users. Right? If software has no users, it’s very difficult to build a community. So what’s the second thing?

Audience member: Developers.

No, users. And then the third thing is users.

Users, users, users, all other things are important but, if you have no users, you have no product, no community, no nothing. Users are what we make software for.

There was a great programmer named George Bernard Shaw. This is a quote about software. The reasonable user adapts to software. The unreasonable user adapts the software to himself. All progress is dependent on the unreasonable user.

I’m thinking of getting a bumper sticker made because to me unreasonable users are the things that make open source communities work. And if you’ve ever been in an open source community, you know that there are a certain number of unreasonable users in every one of them, right? But that’s a good thing because they’re the ones trying to bend the world to their own needs.

They are what Eric von Hippel would call lead users. There’s a great book called Democratizing Iinnovation. The URL is at the bottom here. If you want to understand how software works, there’s great stuff there. But as far as how open innovation actually works, this was a book that’s been very formative to the way I think about open source software. So I recommend it. And it talks basically about how lead users drive innovations. And I’m not going to get too much into that because I don’t want to take up all your time talking about someone else’s book but it’s a really good book, I highly recommend it.

So what I care about specifically at Eucalyptus right now is getting users to move up the open source pyramid.

And at the base of this, of course, is users. So we had some responsibilities to our users to get them on to the pyramid, to make sure that there’s something useful for them to actually use, first of all, right? Any open source projects has to have functional stable code and that’s what we can focus on for most of our existence. Right?

It has to do something that’s useful. It has to work. It has to install properly. Has to do these basic things. Because until it does that, it’s interesting, it’s busy, it’s a cool project but until there’s code that does stuff that the user needs, it’s not really open source software yet, right? It’s just a project — it’s just a project idea.

So this is what we’ve been focused on for quite a while. To get as many users as we possibly can, we’re racing, racing, racing to the Eucalyptus 3.1 session. For those who you who were here this morning, this is what we talked about this is where we bring the open source and enterprise part back together. Currently they’re forked, they’re going to be the same code base again in 3.1. That is was going to allow us to get as much penetration as we possibly with a stable product that does all the things that our users need that can be easily installed, quickly installed, configured to do all the useful things that they needed to do. And one of the most useful cases of coarse is as an on-premise AWS compatible product, that’s what a lot of our users are looking for.

But we are in open source, right? In people who participate in the open source world. Lots and lots of users. Most users will simply remain that. Not everyone wants to move up this pyramid, right? But it’s my job to make sure that those who are interested in moving up this pyramid, a lot of people are users, they’re perfectly happy being users. They will gain great value out of our product. Some of them will become customers so they can be supported. That’s good too.

But then a certain number are going to have questions and they’re not going to be satisfied with whatever documentation we have or what have you. So they’re going to start looking for knowledge. This is how people grow into open source communities. They start trying to figure things out. So we need to make sure that we are serving those people. We need to make sure that we’ve got great knowledge based articles. We’ve got great forms for them to interact and we’ve got ways for them to reach out and touch us as a company beyond simply the “I’m a customer who needs support, I want to buy a subscription” kind of relationship. There are people who want to reach out in different ways than that.

We recently launched a site called engage.eucalyptus.com. I recommend you check it out if you’re at a place that has reliable Wi-Fi. Not that it doesn’t here. And we hang out here in IR C. How many people know what that is? That’s a decent percentage. That’s good. That’s where open source developers tend to live. We live on irc.freenode.net. We’re on the #Eucalyptus channel. You can go to webchat.freenode.net and get on to IRC without having to have an IRC client.

A little bit of chicken and egg there if you don’t know how to get on IRC, you can’t ask someone on IRC to help you but there are good web interfaces out there. That’s a little diversion here. Most of the people I know on the Eucalyptus community think of them first by their IRC nickname. In some cases I don’t actually know what their real names are. But I know they seek to engage us in the mediums that they are comfortable in and we need to make sure that we are there to engage them in those ways. Right?

So then you move up. This isn’t actually a change of gear. This is just the next highest level up the pyramid but my transition — I’m terrible at slides. So I was going to have a little transition that was going to zoom up the pyramid. I don’t know how to do that. So some number of these people who find whatever knowledge it is that they’re looking for or maybe they don’t find the right kind of knowledge, maybe they had a suggestion, maybe they have a bug. Maybe they got a great feature idea. Maybe they want to partner with us on something. Maybe something really made them angry and they just want to shout at someone.

All of these are means of participation. And without participation, there can be no open source community and without an open source community, there can ultimately be no open source company or at least it’s not going to be really an open source company. Right?

So we need to make sure that we have infrastructure to serve these potential participants. And we need to make sure that when they present themselves as participants, we are super super responsive to them. Right? Because people don’t want to waste their time.

If people come to your community and say I am interested in participating in some way, giving you a patch, exploring a bug with you to figure out with you why it doesn’t work — because I could just ignore the bug and say this is just a piece thrash trash and I’m not going to use it. I’m a user, my time is valuable. I found a bug, now I’m bringing it to you. What are you going to do about it? We must be hyper-responsive.

And for people who are looking for help it’s nice if we can give them some kind of recognition, right? So this is what we’ve been working on in the last little while. As we build out the open source community around Eucalyptus, we’ve got a site called projects.eucalyptus.com where we’ve got a lot of open source projects that are more thoughtful in some ways to the main product and we’ll go over those in a little bit. Also as Tim mention earlier, we’re opening up our engineering process.

Right now the bug tracker we have is somewhat outdated. Most issues are from the 2.X time frame in the next little while we’re going to roll out a public bugtracker that’s going to have issues from the 3.X releases and then we’ll be moving our source out to github in the very soon to get ready for 3.1, right?

And then obviously IRC as we just mentioned is a key part of being hyper responsive. I got a little script that any time anyone says my name on IRC, it sends me an e-mail and a text that said someone pinged you on IRC. And I don’t turn that off. Sometimes I sleep through it. But I don’t turn that off. So any time anyone says “Greg, what are you doing on IRC?” I will see it unless I’m asleep or drunk or ignoring them.

Which I try not to do. I try to be hyper responsive.

And then we also have mailing lists for people who want to have conversations about things that we care about. So, if you go to lists.eucalyptus.com you can see that mailing lists tend to be… “I have this problem that I’d like to work with you on, I saw you were doing code stuff, I’d like to know more about that.” Sort of a different mechanism.

And then reward takes many forms. For our super high flying community folks we have sweet hoodies that we had made that has Euca and if I weren’t in New York, I would probably be wearing that instead of this. But I have it in my bag so, if anyone is super excited to see it I can go to the hotel and get it and wear it while we’re drinking. But also just thank you. Just thank you. Thank you for using our product. Thank you for filing a bug. Thank you for saying that terrible thing about us on the forum. We know you didn’t really mean it. And if you did, let’s talk about that.

You know?

And then at that point you get a level of contributors who become your core contributors over time. People who really make difference in your project. People who go from users all the way to the top and become core contributors. People just as useful to your company as any employee you might have. And we’re still bringing people down that road. We’re starting to see people bubble up that stack. And what they care about is being equal in agency to the people in the company. Right? And there’s a lot of talk in open source about what’s your governance model going to be. How are you going to make sure all these competing influences are heard and from my perspective, that has always been fairly simple. Who’s writing code and how are you treating it?

And mostly, that’s what people care about. You know? They don’t care about how much money company X or organization Y has to pay to be a quote, unquote member of your community. They care about what you do with their contributions. And if you contribute code and they say — I’ll look at that in a while, that’s enraging. If they contribute code, and you look at that code and say “okay, so thanks for this patch. It’s really cool. This is broken, this is broken. This is formatted way wrong, you’ve got guidelines over here, I’m really not sure what’s going on with this, you need to take a look at that. But, if you can take care of all that stuff and bring that patch back, we’ll be happy to put it in a main line.”

Developers really respond to that, right? That’s agency. Right? And then responsibility is when they get that code into your product, they want to know that they’ve got some piece of the action. Right? It’s all open source code so they can fork it any time they want that’s the thing that makes open source software interesting. Anybody can take all of that code and just walk away with it tomorrow and start their own project. So you want to make sure that they’re working with you and not forking to work against you.

And the way you do that is by giving them agency and responsibility. And then at a certain point someone’s going to ask for a job. And by this point, you should give it to them. Or if you can’t give it to them, you should make sure that they’re well recommended to get a job somewhere else or if they’re working with the partner organization, you know, you got a good relationship with them that opens up business opportunities for them. In my experience, and I worked with Red Hat for a decade, and was deeply involved with the Fedora project — this is how open source actually works. This is what we’re trying to build here at Eucalyptus. I think we’re being more successful every day.

But it’s our responsibility to build those steps. Right? People don’t just decide to participate in open source. You have to pull them in. You have to make a project that is a good strong open source project that it sends people to participate and make their way to the top. So I’ve talked quite enough.

I am literally posting this while Greg continues speaking at the front of the room – the talk is underway as I type. This level of detail in the capture was possible because, as Greg mentioned earlier, we’re live-transcribing EucaDay with CART today. I’ll write more about this later in an event wrap-up post, but I wanted to show the power that this sort of access enables.

Stay tuned for Part II: The Film Festival!

by Mel at April 25, 2012 07:49 PM

Andy Grimm

Resurrecting Jiranemo

About six years ago, David Christian developed a JIRA CLI called jiranemo (his original blog post is, somewhat surprisingly, still around on the rPath website).  After he left rPath, I spent some time updating the code for Jira 4 and adding some minor features, but it's been mostly stagnant for about two years.  In the meantime, Jira 5 has been released, and the core dependency of jiranemo, SOAPpy, has been declared dead.

This month, Eucalyptus started on the migration path  from using a combination of RT and Launchpad to using Jira.  I'm really excited about the change, and it gave me a chance to pick up the jiranemo code again.  I've now converted it from SOAPpy to suds, and on Monday I used it to import 2000 issues from RT into jira (stay tuned for details on that becoming a publicly-accessible system).  I had database access to RT, but all of the interaction with jira was done through the SOAP API.  ( I realize they now also have a REST API, which looks awesome, but I already had the code for using SOAP ).

I should also note that before I took on this work, I looked at Matt Doar's python-based CLI, which worked well for single commands (and was a reference for some of my jiranemo updates), but it didn't have a library interface, and it seemed very inefficient to keep spawning new python processes for thousands of commands.  Jiranemo's separation of the command-line option handling and config file parsing from the client library and helper functions make it fantastic for integrating into more complex python apps.

I expect that the next phase of development for jiranemo will be a gradual migration toward the REST APIs.  If this code is useful to you and you'd like to contribute to this effort, feel free to fork my bitbucket repo and send me pull requests.

by Andy Grimm (noreply@blogger.com) at April 25, 2012 02:46 PM

April 24, 2012

Satyaakam Goswami

Eucalyptus users Map

it all started with me lazily skimming through pages on the eucalyptus site yesterday, soon i landed on GSOC page since this is something whose results have been announced just yesterday too , from here i moved on to there next page Eucalyptus ideas page  , read on there website that they are have been not given the GSOC slots ,there idea number two is implemented here Eucalyptus users map , do send me feedback as to how it looks and works , in the meantime if you are interested in the first cut i tried making yesterday using the Wp plugin below is that version too
 

deependra.shekhawat@eucalyptus.com

Show embedded map in full-screen mode

by satya at April 24, 2012 04:50 PM

Greg DeKoenigsberg

EucaDay NYC: you are there!

On Wednesday April 25th, Eucalyptus will be hosting our first EucaDay. It’s a friendly little gathering of customers, partners, and community, and it’s free to attend. If you’re in the New York City area, you can register right now.

Of course, not everyone will be able to make it to New York City for this event. That’s ok, too — you can still attend and participate. For the sessions led by Marten Mickos (head honcho), Tim Cramer (lovable despot of engineering) and myself (community guy), we will be transcribing them live and in their entirety to IRC: #eucalyptus-meeting on freenode. In the morning session, Marten will go from 8am to 8:30am, and Tim will go from 8:30am to 9:30am. In the afternoon session, I will go from 3pm to 4:30pm, and then Marten will wrap up at 4:30pm. (All times in the Eastern US timezone.)

The community session will be particularly interesting, mostly because I’ll only be speaking for a small part of it. :) We will be running a Eucalyptus mini-film-festival, where members of our community will link to short videos, and then take questions and answers on IRC afterwards. See what actual community members are doing, right now, to make Eucalyptus more useful.

The great thing about IRC is that you can fire up your client and lurk all day, if you like. Just read back for the interesting bits. :) Logs will be available as well, as with all Eucalyptus meetings on IRC.

So. Join us on freenode, #eucalyptus-meeting, for the day on Wednesday. Lurk or jump in. Not being in NYC doesn’t mean you can’t join the fun.


by Greg DeKoenigsberg at April 24, 2012 01:17 AM

Eucalyptus Community Blog

EucaDay NYC: you are there!

On Wednesday April 25th, Eucalyptus will be hosting our first EucaDay. It’s a friendly little gathering of customers, partners, and community, and it’s free to attend. If you’re in the New York City area, you can register right now.

Of course, not everyone will be able to make it to New York City for this event. That’s ok, too — you can still attend and participate. For the sessions led by Marten Mickos (head honcho), Tim Cramer (lovable despot of engineering) and myself (community guy), we will be transcribing them live and in their entirety to IRC: #eucalyptus-meeting on freenode. In the morning session, Marten will go from 8am to 8:30am, and Tim will go from 8:30am to 9:30am. In the afternoon session, I will go from 3pm to 4:30pm, and then Marten will wrap up at 4:30pm. (All times in the Eastern US timezone.)

read more

by gregdek at April 24, 2012 01:17 AM

April 20, 2012

David Federlein

Case Study: EucaSchool Part 3 - Setting up an IRCd

In my last post I detailed using screen as a teaching tool.  In this post I will go over using IRC to augment the demonstration with lecture/Q-and-A sessions and using a bot to record your sessions.  This post will deal specifically with setting up your own IRC service.


Since this is in parallel with EucaSchool, I should say that we don't use our own IRC server for EucaSchool.  We use Freenode.net.  You can join us in our channels there: #eucalyptus for general support on Eucalyptus or to say hi, #eucalyptus-classroom for EucaSchool and other training sessions, and #eucalyptus-meeting where we hold our community meetings.  If you're going to use a public IRC server already in existence then you can skip ahead to the section about configuring your meeting bot.

That said some people would prefer to keep their sessions on their own services for various reasons.  If you would, then I'd suggest checking out what IRC daemon software is out there and which fits you.  This tutorial will focus on ngIRCd.  When finished, you will have an SSL-enabled IRC server that forces authentication of users against Pam on the local system and only has rooms predefined for your sessions.

Firstly, let's compile and install the daemon.  If your linux distribution has a new enough version of ngIRCd in the package repositories (I'd recommend ngIRCd version 16 or greater) you can use a package install either with your package manager (apt/yum/zypper) or download the packages here.  If not you can follow the ngIRCd documentation to compile and install.  Since I was using Ubuntu 10.04 LTS (which has an older version of ngIRCd in the repository), I chose to compile and install.

wget http://ngircd.barton.de/pub/ngircd/ngircd-19.1.tar.gz
tar xvzf ngircd-19.1.tar.gz
cd ngircd-19.1
CFLAGS=-static ./configure --with-pam --with-openssl
make
make install

Assuming you had the needed package dependencies (and it will tell you which ones you don't have when it errors out) it should now be installed in /usr/local/sbin/. Now let's generate and place the ssl certs we'll use.  This will have you set a password for the key file.  Remember that for later use in the configs.

mkdir -p /path/to/ssl
cd /path/to/ssl
openssl req -newkey rsa:2048 -x509 -keyout server-key.pem -out server-cert.pem -days 1461
openssl dhparam -2 -out dhparams.pem 4096

And now let's populate our config file for ngircd itself. if you've installed via package, you'll want to edit /etc/ngircd/ngircd.conf however if you followed my instructions above, the config file will be in /usr/local/etc/.  Here is an example conf file that sets paths to the SSL cert/key as well as limits the users to Pam authentication and only provides a single room:

[Global]
Name = irc.yourserver.com
AdminInfo1 = Description
AdminInfo2 = Location
AdminEMail = you@youremail.com
Info = Server Info Text
MotdPhrase = "Hello and welcome to our IRC server."
ServerGID = nogroup
ServerUID = ngircd
[Limits]
MaxConnections = 50
MaxJoins = 5
[Options]
ChrootDir = /var/empty
CloakUserToNick = yes
DNS = yes
Ident = no
MorePrivacy = yes
PAM = yes
PredefChannelsOnly = yes
RequireAuthPing = no
[Operator]
Name = root
Password = opspwd
[Channel]
Name = #lessons
Topic = Only room on this server
Modes = tnk
[SSL]
CertFile = /path/to/ssl/server-cert.pem
DHFile = /path/to/ssl/dhparams.pem
KeyFile = /path/to/ssl/server-key.pem
KeyFilePassword = secret
Ports = 6697

If you compiled from source, now is a good time to write a script for /etc/init.d to start/stop this service. You should now have a functioning IRCd that only allows one room for learning, requires Pam authentication and uses SSL.  Because we've set the user authentication to point to Pam, you can now use local system accounts, NIS or LDAP for your user management.

In the next post I will demonstrate how to get a working meeting bot up and running in your newly created IRC learning channel.

by David Federlein (noreply@blogger.com) at April 20, 2012 11:26 PM

Harold Spencer Jr.

Nilgiri: managing cloud is now easier

Reblogged from shaon's Blog: I am working on this Nilgiri project lately aiming to provide a flexible environment of managing private cloud or hybrid cloud to the end users as well as for the sysadmins to make managing cloud simpler than ever. So, someone doesn’t need a tech-expert just to run an instance or to [...]

by hspencer77 at April 20, 2012 02:32 AM

April 17, 2012

Nelli Lahteenmaki

1st NYC EucaMeetup

I arrived to NYC early Tuesday morning on April 10 with my very first true red eye flight. Now I understand where the term comes from. Luckily the crying baby next to me and the 2 minutes of intense sleeping did not bother me as I was so excited about our 1st NYC EucaMeetup that was gonna take place that night. It was interesting to see how the NYC meetup scene works after spending quite a bit of time in the crazy Silicon Valley scene. 


We had the privilege to organize the meetup in a very special place – The Consulate General of Finland. The room was beautiful and spacious, with large windows looking over the 1st Avenue and United Nations plaza. The Finnish design furniture and the birch floor for sure looked familiar for me. The ‘Finnish style snacks’ were super tasty – we had salmon, whitefish, different pies, strawberries, Ranskan Pastilli -candies and some wine. No vodka, however. It was such a pleasure the organize the event with the awesome people from the consulate, Riitta, Emilia and Anne. Thank you so much for having us! 


There were around 40 people at the meetup which is a great start. David Butler, SVP Marketing at Eucalyptus kicked off the meetup with company introduction. He had a hard time getting off the stage as there were so many awesome questions from the meetup attendees. Followed by David, Govind Rangasamy, Director of Product Management continued with an in-depth discussion about Highly Available Cloud Services. Once again, so many questions were asked we had to start skipping slides towards the end of the presentation. Please check out David’s and Govind’s slides here


Big thanks to the awesome folks who came out to discuss private and hybrid clouds with us. Your concentration and questions were the best thing we could ask for. We hope to see you at NYC EucaDay that takes place on April 25 and in our future EucaMeetups!


Finnish Flag salvaged from Ground Zero, now mounted in the Consulate General of Finland.  Picture: Brady Murray









by Nelli (noreply@blogger.com) at April 17, 2012 09:52 PM

April 16, 2012

Harold Spencer Jr.

Brewing is Always Welcome on Cloud 10 Too: Eutester, Brew, and Mac OS X Lion

When I finished my last blog, I realized I left out a key group of developers on Mac OS X.  I didn’t want to leave out my Homebrew fans, so this blog is dedicated to the brew users out there in the world.  For those who don’t know, Homebrew is an alternative package manager to MacPorts on [...]

by hspencer77 at April 16, 2012 07:52 AM

Andrew Hamilton

Automating a chef-solo Installation on a CentOS 5 Instance

Chef is a tool used for configuration management of bare metal and virtual systems. Chef has a client/server model as well as a standalone tool that is very similar to the tools from Puppet Labs. (Want to automate a puppet agent installation? Check out my earlier blog post

When using the cloud and launching multiple instances with the same job, configuration management is a huge time saver. Configuration management systems will allow you to build the configuration once and use it to create exact replicas on as many instances as you need. Having the exact same configuration for every system doing the same job keeps errors and possible issues down to a minimum. Also, if your production systems are easily replicated, you can spin up smaller test environments to check your systems before pushing out the newer code to production (possibly even using Amazon for production and Eucalyptus internally for testing!).

For configuration of systems, chef uses recipes and cookbooks to give users pre-made system configurations. A recipe is a single task and cookbook is a group of tasks, usually pertaining to a single application (e.g. apache, nginx, etc). A collection of pre-made cookbooks can be downloaded from a GitHub repository run by OpsCode, the creators of Chef. These cookbooks will help you a perform a large number of installations and configurations from setting up a web server to installing applications such as vim.

Below is a script that will automate the installation of the chef-solo, a standalone version of the chef client, on a CentOS 5 system. You can run this script by hand or have it automatically run by passing to the metadata service when running an instance. This script was tested on the Eucalyptus Community Cloud using a CentOS 5 image (emi-709D1676)

#!/usr/bin/env bash

YUM=`which yum`
RPM=`which rpm`
CURL=`which curl`
HOSTNAME=`which hostname`
RUBY=""
GEM=""

SYSTEM_NAME="chef.mydomain.int"
SHORT_NAME=`echo ${SYSTEM_NAME} | cut -d'.' -f1`

TMP_DIR="/tmp/"
DEFAULT_DIR="/root/"

CHEF=""
CHEF_DIR="/var/chef-solo/"

#######
# Set the hostname of the system.
#######
hostname ${SYSTEM_NAME}
if [ -z `cat /etc/sysconfig/network | grep HOSTNAME` ]; then
    echo "HOSTNAME=${SYSTEM_NAME}" >> /etc/sysconfig/network
else
    sed -i -e "s/\(HOSTNAME=\).*/\1${SYSTEM_NAME}/" /etc/sysconfig/network
fi

sed -i -e "s/\(localhost.localdomain\)/${SYSTEM_NAME} ${SHORT_NAME} \1/" /etc/hosts

${YUM} -y update

#######
# Setup the required repos. EPEL, Aegisco, and rbel.
#######
${CURL} -o /etc/yum.repos.d/aegisco.repo http://rpm.aegisco.com/aegisco/el5/aegisco.repo

${RPM} -Uhv http://rbel.frameos.org/rbel5

${CURL} -o ${DEFAULT_DIR}/epel-release-5-4.noarch.rpm http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
${RPM} -Uhv ${DEFAULT_DIR}/epel-release-5-4.noarch.rpm 

########
# Install ruby and required tools for building the system
########
${YUM} install -y ruby-1.8.7.352 ruby-libs-1.8.7.352 ruby-devel.x86_64 ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode

RUBY=`which ruby`
########
# Setup RubyGems
########
curl -o ${TMP_DIR}/rubygems-1.8.10.tgz http://production.cf.rubygems.org/rubygems/rubygems-1.8.10.tgz 
tar xzvf ${TMP_DIR}/rubygems-1.8.10.tgz -C ${TMP_DIR}
${RUBY} ${TMP_DIR}/rubygems-1.8.10/setup.rb --no-format-executable

GEM=`which gem`
########
# Setup the chef ruby gem
########
${GEM} install chef --no-ri --no-rdoc

CHEF=`which chef-solo`
########
# Setup the basic configuration files needed
########
cat >>${DEFAULT_DIR}/solo.rb <>${DEFAULT_DIR}/node.json <<EOF
{
    "run_list": [ "recipe[apache2]" ]
}
EOF

########
# Setup up cookbooks directory for chef solo
########
mkdir -p ${CHEF_DIR}/cookbooks

########
# Download and untar the cookbooks provided by OpsCode on GitHub
########
${CURL} -o ${DEFAULT_DIR}/cookbooks.tgz https://nodeload.github.com/opscode/cookbooks/tarball/master
tar xzvf ${DEFAULT_DIR}/cookbooks.tgz -C ${DEFAULT_DIR}

########
# Add the apache2 cookbook to the chef solo cookbooks directory
########
cp -R ${DEFAULT_DIR}/opscode-cookbooks-*/apache2 ${CHEF_DIR}/cookbooks

########
# Run the node.rb JSON file to install apache2
########
${CHEF} -c ${DEFAULT_DIR}/solo.rb -j ${DEFAULT_DIR}/node.json 

This script will need a couple changes towards the end to be used as with chef-client and communicate with a chef server. Hopefully in a future post this will be discussed.

This script uses the chef-solo version of the chef-client that does not require a chef server. This makes testing out chef much easier. Utilizing the GitHub cookbooks repository, we can install anything available in the cookbooks along with the customized configuration that we might need. Please check out the chef-solo wiki for more details on how to extend the script above to do more for you.

With the addition of Amazon S3 or Eucalyptus Walrus or GitHub this script can be used to work with customized cookbooks to improve your infrastructure even more.

Not really interested in CentOS 5? Looking for the same for CentOS 6 or Debian? Check out my GitHub repo containing my blog scripts for two additional scripts in the chef_solo_install folder. (Note: The majority of the OpsCode cookbooks are built for Debian (probably more specifically Ubuntu) based systems so some won’t work with CentOS 6 out of the box. There are also some issues with CentOS 5 with cookbooks such as the nginx one.)


by ahamilton55 at April 16, 2012 05:26 AM

Harold Spencer Jr.

On Cloud 10: Eutester, MacPorts and Mac OS X Lion

The Testing Clouds at 128bpm blog – authored by my esteemed colleague Vic Iglesias – is dedicated on providing information about implementing an automated, robust test framework for Eucalyptus cloud deployments with Eutester. Today’s post was inspired by the Eutester project and the blog post Eutester Basics Part 2: Setting Up a Development Environment. In the Eutester Basics Part 2 [...]

by hspencer77 at April 16, 2012 12:12 AM

April 15, 2012

Garrett Holmstrom

Euca2ools: Past, Present, and Future

For those who don’t know, I work on the euca2ools suite of command line tools for interacting with Eucalyptus and Amazon Web Services clouds on Launchpad. As of late the project has stagnated somewhat, due in part to the sheer number of different tools it includes. Nearly every command one can send to a server that uses Amazon’s APIs should have at least one corresponding command line tool, making development of euca2ools’ code repetitive and error-prone.

Today this is going to end.

But before we get to that part, let’s chronicle how euca2ools got to where they are today.

The Past

Early euca2ools versions employed the popular boto Python library to do their heavy lifting. Each tool of this sort triggers a long chain of events:

  • The tool translates data from the command line into its internal data structures.
  • The tool translates its internal data into the form that boto expects and then hands it off to boto.
  • Boto translates the data into the form that the server expects and then sends it to the server.
  • When the server responds, boto translates its response into a packaged form that is useful for programming and returns it to the tool.
  • The tool immediately tears that version back apart and translates it into a text-based form that can go back to the command line.

Things shouldn’t be this convoluted. Not in Python.

The Present

Tackling this problem involved coming up with ways to simplify not only the code, but also the process through which they are written. This led to two major changes, upon which all of the current euca2ools code is built.

“eucacommand”

The first step was consolidating all of the code involved in performing the first step of this process — reading data from the command line — into one location. Each tool then simply needed to describe what it expected to receive from the command line, and the shared code would take care of the rest. For example, let’s look at part of an older command, euca-create-volume:

class CreateVolume(EucaCommand):
    Description = 'Creates a volume in a specified availability zone.'
    Options = [Param(name='size', short_name='s', long_name='size',
                     optional=True, ptype='integer',
                     doc='size of the volume (in GiB).'),
               Param(name='snapshot', long_name='snapshot',
                     optional=True, ptype='string',
                     doc="""snapshot id to create the volume from.
                     Either size or snapshot can be specified (not both)."""),
               Param(name='zone', short_name='z', long_name='zone',
                     optional=False, ptype='string',
                     doc='availability zone to create the volume in')]

Because there are three Params the shared code library reads three bits of info from the command line and hands them to the command’s code, which then hands them to boto, and so on.

This methodology forms the basis for all of the current euca2ools that begin with “euca”.

Roboto

For a euca2ools command line tool to be useful it has to gather data from the command line, send these data to the server, and return data from the server to the user. A little-known boto sub-project written by boto developer (and former euca2ools developer) Mitch Garnaat, roboto, takes this statement literally and opts to let tools work at a lower level: instead of translating data from the command line into an intermediate format to send to boto, tools send these data directly to the server in the form that the server expects. The effect of this is that of essentially removing boto from the euca2ools code base altogether. By removing boto from the path that data have to take to get from the command line to the server and back, roboto makes tool writing and debugging simpler because there is less code to walk through and understand.

Roboto is the basis for all of the current euca2ools that begin with “euare”.

The Future

That is the state of the code today. Where do we go from here? While roboto allows one to create command line tools with a minimal amount of effort, it has several rough edges which prevented it from taking off and which make it sub-optimal for building out the hundreds of commands that the euca2ools suite will soon need to cover:

  • User-unfriendly — When a user types something wrong or forgets to include something, roboto’s messages are often uselessly terse and unhelpful.
  • A steeper learning curve than necessary — Roboto contains a large amount of custom code dedicated to fetching information from the command line. This steepens the learning curve for people who want to contribute code or fix bugs.
  • Too much hardcoding — Roboto assumes that all tools do certain things, such as ascertaining what keys they should use to access the cloud, the same way.
  • Still more work than it has to be — Though it makes writing tools simpler, roboto still hands each tool a bucket of information and expects the tool to pick out the bits the server needs and send them onward.

Enter requestbuilder

Requestbuilder is a new Python library that attempts to rethink the way roboto works in a way that is more familiar to the typical Python developer and requires less custom code to run. The easiest way to illustrate this is with an example.

A command line tool embodies a specific request to the server, so each such tool defines a Request that describes how it works:

class ListUsers(EuareRequest):
    Description = 'List the users who start with a specific path'
    Args = [Arg('-p', '--prefix', dest='PathPrefix', metavar='PREFIX',
                help='list only users whose paths begin with a prefix'),
            Arg('--max-items', type=int, dest='MaxItems',
                help='limit the number of results')]

    def main(self):
        return self.send()

    def print_result(self, result):
        for user in result['Users']:
            print user['Arn']

Those familiar with Python’s argparse library will recognize the code inside Arg(...), because requestbuilder does away with roboto’s custom code for reading things off the command line and instead lets argparse do the work. This cuts down on the amount of code we need to maintain, makes tool writing easier for developers who are already familiar with the Python standard library, and makes command line-related error messages much more user-friendly.

When the tool starts running, requestbuilder uses data from the command line to fill in a dictionary called args and runs the tool’s main method, whose job is to process this information and fill in the portions of the request that will be sent to the server: params, headers, and post_data, and then run the send method to send it all to the server and retrieve a response. Attaching each of these sets of data to the request instead of passing them around between methods allows one to send a request, tweak it, and send the tweaked version as well.

Why doesn’t the code above fill any of these things in? Since most of the data that comes off the command line goes directly to the server, when a tool runs send requestbuilder will automatically fill in params from the contents of args so the tool doesn’t have to: whatever the user supplied with --prefix at the command line gets sent to the server with the name PathPrefix, and so forth.

But what if something should not be sent to the server? While data from the command line go into params to be sent to the server by default, one can tell requestbuilder to send a particular bit of data elsewhere instead:

Arg('--debug', action='store_true', route_to=None)

None instructs requestbuilder to leave the “debug” flag alone and not attempt to send it anywhere. Data can also go elsewhere, such as to the connection that gets set up as the tool contacts the server:

Arg('-I', '--access-key-id', dest='aws_access_key_id', route_to=CONNECTION)

Astute readers will note that I haven’t described what EuareRequest in the earlier example does, so here is the code for that:

class EuareRequest(BaseRequest):
    ServiceClass = Euare
    Args = [Arg('--delegate', dest='DelegateAccount', metavar='ACCOUNT',
                help='''[Eucalyptus extension] run this command as another
                        account (only usable by cloud administrators)''')]

Requestbuilder makes tool writers’ jobs easier by allowing one type of request to inherit its command line options from another type of request and then supply their own by simply listing more of them. This is a little different from the way Python usually works; Requestbuilder does some magic behind the scenes to make this possible. As a result, everything common to commands that access the EUARE service (Eucalyptus’s equivalent of Amazon’s IAM service) can go into one place to be shared with others.

The final piece of information requestbuilder needs is a ServiceClass, which describes the web service that the tool connects to. A service class is another simple bit of code that looks like this:

class Euare(BaseService):
    Description = 'Eucalyptus User, Authorization and Reporting Environment'
    APIVersion = '2010-05-08'
    EnvURL = 'EUARE_URL'

The net gain from all this is a smaller, but much more flexible code base that should be able to scale better than anything we have had before. Requestbuilder’s use of Python’s argparse library also makes tools much more informative to users than ever before.

How You Can Help

We’re developing requestbuilder on GitHub as a project under the boto organization. We’re going to start rewriting euca2ools, one by one, improving requestbuilder to support new things as we go. It’s still early on, so if you have ideas to share or you’re interested in helping develop this code, now is your chance!

We’re also moving development of euca2ools itself to GitHub. This will make it easier to work on euca2ools and requestbuilder in parallel. It will also make it easier to share code with the rest of the boto community.

If you’re interested in getting involved, join us on the #boto or #eucalyptus IRC channels on Freenode. You can also send e-mail to Eucalyptus’s community list.


by gholms at April 15, 2012 12:00 AM

April 13, 2012

Rich Wolski

Tech Perspective: A Look Inside the AWS-Eucalyptus Agreement

In March, we announced an agreement to collaborate with Amazon Web Services (AWS) to ensure API compatibility between AWS and the Eucalyptus open source on-premise Infrastructure as a Service (IaaS) platform. Beyond the details of the news, I'd like to shed some light on how I think this agreement helps customers focus on the larger discussion of the policies and business logic that govern application workloads.

For some time now, Eucalyptus users have implemented application deployments using a combination of Amazon AWS and locally owned resources. Indeed, the original use case for Eucalyptus was to support large-scale science applications that could draw resources simultaneously from AWS and a geographically distributed set of data centers, each operated by a separate organization.

read more

by rich at April 13, 2012 08:00 PM

April 10, 2012

Greg DeKoenigsberg

What say NIST?

The cloud world has been quite the spectacle lately.  Intrigue, romance, alliances and double-crosses, comedy, tragedy, and zombies.  If you’ve seen the play already, I won’t bore you by recounting it — and if you haven’t, I won’t ruin it for you.

At Eucalyptus, we continue to care most about, and focus chiefly on, making open source cloud software that works for our users.  So let’s set aside the theatrics and talk about users for a moment.

Some of you may be familiar with the U.S. National Institute of Standards and Technology, or NIST for short.  They’ve taken quite an interest in cloud computing.  In fact, they decided to come up with a definition for the term “cloud computing”.  And when a standards body like NIST decides to define something, they are thorough.  As in, sixteen drafts worth of thorough.  This work culminated with The NIST Definition of Cloud Computing, published in October 2011.

As it happens, NIST also wants to build their own cloud infrastructure.  To that end, they’ve put out an RFQ.  Here’s what they’re looking for:

“The Enterprise Systems Division (ESD) of the Office of Information Systems Management (OISM) at the National Institute of Standards and Technology (NIST) is seeking to obtain cloud management software to deploy a hybrid private (on-premise) and public cloud Infrastructure as a Service (IaaS) that uses NIST’s existing VMware ESX infrastructure and supports AWS-compatible public cloud resources.  ESD’s goal is to offer NIST’s Scientists an on-demand, self-service portal to IT resources using NIST’s own IT resources and IT resources in public cloud space.”

And what technology has NIST chosen?  The only one that currently fits the bill: Eucalyptus.  Again, from the RFQ:

“There are many cloud products in the market place, but NIST has determined Eucalyptus Enterprise Edition is the only IaaS cloud management software currently on the market that is built open source and supports private and public cloud infrastructure.”

The cloud market is moving fast.  Lots of competition, lots of churn, and lots of talk.  But we believe that code talks loudest.  We will continue to let our code, and our users, talk for us.


by Greg DeKoenigsberg at April 10, 2012 05:21 PM

Eucalyptus Community Blog

What say NIST?

The cloud world has been quite the spectacle lately.  Intrigue, romance, alliances and double-crosses, comedy, tragedy, and zombies.  If you’ve seen the play already, I won’t bore you by recounting it — and if you haven’t, I won’t ruin it for you.

At Eucalyptus, we continue to care most about, and focus chiefly on, making open source cloud software that works for our users.  So let’s set aside the theatrics and talk about users for a moment.

Some of you may be familiar with the U.S. National Institute of Standards and Technology, or NIST for short.  They’ve taken quite an interest in cloud computing.  In fact, they decided to come up with a definition for the term “cloud computing”.  And when a standards body like NIST decides to define something, they are thorough.  As in, sixteen drafts worth of thorough.  This work culminated with The NIST Definition of Cloud Computing, published in October 2011.

read more

by gregdek at April 10, 2012 05:21 PM

Graziano Obertelli

4 of 20

The International ACM Symposium on High-Performance Parallel and Distributed Computing (HPDC) will commemorate its first 20 years with a special proceeding containing the best 20 papers. Rich Wolski, and Steve Fitzgerald, respectively founder and CTO, and VP of Technical Services at Eucalyptus Systems, will each have 2 papers published in that proceeding. Rich will have Forecasting Network Performance To Support Dynamic Scheduling Using The Network Weather Service (NWS) and Scheduling from the Perspective of the Application (AppLeS) while Steve will have Grid Information Services for Distributed Resource Sharing and Application experiences with the Globus toolkit. That is 20% of the papers!

I have been fortunate enough to have been working with them since the mid '90, back when a cloud on a whiteboard meant Internet, and Grid Computing was the pinnacle of Distribute Computing research. In addition to be excellent scientists, Rich and Steve have also been role models, teaching the new generations for more than 15 years. It's hardly a coincidence then, that Rich and Steve are now pushing the boundaries of  knowledge in Cloud Computing with Eucalyptus.

It's hard to overestimate the influence that Rich and Steve have within our organization. For example, in the latest Eucalyptus 3, I can find Rich's fingerprints in the overall architecture, in the attentions to the internal protocols, and Steve's touch in the identity integration (LDAP) and management (EIAM).  They are mentors and role model to all eucalyptoids, for their determination, insights, and skillful leadership each with his own personable yet efficient style.

Edit: check out the full list.

by Graziano Obertelli (noreply@blogger.com) at April 10, 2012 12:26 AM

April 09, 2012

Rich Wolski

The Dimensions of API Fidelity

With the agreement between Eucalyptus and Amazon to cooperate on ensuring API fidelity between the two technologies comes the question of defining what it means for two independent implementations to support the same API. The API itself consists of a large number of different "commands" or "service requests," each of which triggers many different operations within the system that are visible to the user. Moreover, the API makes specific assumptions about "things" (VMs, storage volumes, network addresses, etc.) it is defining and manipulating.

read more

by rich at April 09, 2012 08:48 PM

April 06, 2012

Lester Wade

HA iSCSI and the Storage Controller

HA with OpeniSCSI:

Further to my general musings about HA, good chum Harold Spencer and I have been working on providing a way for our users to achieve high availability in the storage controller components of Eucalyptus for those who don’t have the SAN adapter.  The storage controller is the Eucalyptus component which handles the EBS (Eucalyptus Block Storage) volumes for instances.

Let me give some background here …..

With 3.0, we’re still following our old business model, this is effectively an Enterprise Edition for us.  This is all changing with the upcoming 3.1 release, as our good friend and colleague Greg outlines here.  This is a really big deal for Eucalyptus and also very exciting, we’re going back to our unified code-base.  The only things which won’t be open are a couple of proprietary subscription-only modules; one for VMware and one for interfacing with enterprise-class storage arrays (aka SAN’s). In regards to HA, those using Eucalyptus who don’t have a subscription can use HA for the Cloud Controller components (read my last blog entry on why that’s important) but won’t currently be able to use HA with the Storage Controller since this can only be achieved with an enterprise-class storage array and the subscription-only SAN adapter.  By default, without the SAN adapter, Eucalyptus uses the open-iSCSI target daemon (tgt) to handle EBS volumes.

We still think our users will want SC HA using open-iSCSI and we want to ensure that those users who don’t have a SAN (or don’t need the performance one brings) or who don’t pay our salaries can still have some kind of high availability experience at the storage level using some of the service and infrastructure HA platforms out there for Linux.  After all, running an open-iSCSI target daemon as a resource on top of a Linux clustering solution is nothing new and works very well of course.  In our testing we’ve been using pacemaker + corosync and running tgtd as a resource on top of a DRBD backed logical volume across a two-node cluster.  It just works, you can fail over LUN’s whilst clients are writing data to them and only achieve a brief wait at the client before disk operations can continue on the migrated LUN.  Data integrity is handled by the proper failover of resources and the excellent DRBD solution, courtesy of the great guys at Linbit.

You’ll want to check out Harold’s blog here for some more details on the work we’ve been doing to try to integrate this.


by Lester at April 06, 2012 07:16 AM

Harold Spencer Jr.

Adventures in High Availability: HA iSCSI with DRBD, iSCSI, and Pacemaker

High availability for applications and physical machines is key to having services “appear” to never be down. With cloud computing, deploying failure resilient applications is needed for services that need to be always available. The purpose of this blog is to provide more of the technical information for HA Open iSCSI that good friend and [...]

by hspencer77 at April 06, 2012 12:35 AM

April 05, 2012

Lester Wade

High Availability & Cloud ….

In my previous job, I spent a fair amount of time with enterprise customers who were – more often than not – moving from proprietary Unix to Linux.  Coming from Unix, these customers were often heavy users of resource(or service)-based High Availability (HA) products; such as HP Service Guard, Sun Cluster, Veritas Cluster Server etc.  When moving to Linux, they wanted feature parity with their traditional Unix HA technologies and they ran very Enterprise-level workloads; like database, CRM, and so on. More often than not, they would end up running Red Hat Cluster Suite (HA Addon) or SUSE High Availability Extension; both of which are paid add-ons for these distributions where you pay an additional support premium on top of your normal subscription.  These two stacks are of course open source, so you can go and download pacemaker, corosync and other tools and use them to keep your own services highly available at no cost.  Of course, there are other proprietary products available for Linux like SIOS LifeKeeper and HP Service Guard for Linux.  The latter is back from the dead due to popular demand.

I use the term resource-based in the previous paragraph to describe the nature of the HA solution; install the software on one host, then install your application and configure an active/passive failover environment across multiple servers.  Upon failure of the service on one node, the resource management and infrastructure layers will detect failure(s) and move the service resources (i.e. your application and dependencies, like a floating IP) across to the second node, with a small window of downtime.  The applications you run on top of such clustering layers are often not built with high availability in mind. Rather the application itself is blissfully unaware that it’s in some highly available configuration and instead the data and configuration is mirrored with underlying technologies, like DRBD.  This is where you want a really good cluster resource manager, like pacemaker and the important infrastructure layer, such as corosync and openAIS, to handle things in bullet-proof fashion.  These technologies have good mission-critical references too, Deutsche Flugsicherung (German Air Traffic Control) run their systems on top of SLES High Availability Extension, for example.   I’ll refer to this as service & infrastructure HA.

Then we have another way of achieving HA.  This is what some term as in-built HA, whereby the application itself has high availability features built into it.  A widely known example would be Oracle’s RAC product.  It’s UBER expensive but has differentiation over a simple active/passive Oracle DB running on top of one of the Linux HA stacks.  If your wallet permits, it allows you to scale out in large active/active database configurations.  This can be extremely useful for performance reasons whilst also achieving resilience.  These features are really useful for data warehousing and other demanding use cases where money is no object, like I dunno, utility billing or inland revenue and tax collection (har!).  Oh, did I mention cost?   You’re paying for a fair bit of development time and also features, you can do cool stuff that you just can’t do with the “normal” clustering products on Linux (and Oracle will ensure this stays the case).

With the release of Eucalyptus 3.0, we see Eucalyptus deliver the industries first cloud platform with in-built HA.  This is a big thing and something that enterprise customers need.  Whilst the notions and requirements of high availability in the cloud may be different depending on who you talk to, a customer will often require that their cloud be high availabilty to safeguard service level agreements (SLA’s) with users.

Furthermore, with 3.1, we’ll be enhancing flexibility further to give customers and users the option to run supported hybrid-HA topologies.  What do I mean by this?  Well, the Cloud Controller (frontend) and Walrus (S3) components can have redundant spares but the Cluster Controller and Storage Controler don’t, this saves on hardware costs and complexity for some.  It also unlocks an interesting possibility in terms of your SLA’s.  So, why would you want to do this?  Well, if an availiablity zone goes down, this might not bother you; users could just use another one in the timebeing until service is restored.  In the meantime you’d like to ensure users can still interact with the cloud and use a different availability zone, recovering their work from snapshots or data from bukkits (S3).  Without the Cloud Controller and Walrus, this wouldn’t be possible and this would be a much bigger issue for you; users wouldn’t be able to do *anything* and there goes your service.

Eucalyptus 3.0 HA lays the groundwork for flexible high availability in a truly distributed cloud platform.  It’s one to watch ;)


by Lester at April 05, 2012 06:43 PM

April 03, 2012

David Federlein

Case Study: EucaSchool Part 1 - Introduction

At Eucalyptus one of the community projects that was suggested was to have IRC-based sessions in the style of "Learn From Eucalyptus."  In this series of blog posts I will detail the process by which EucaSchool was born: what tools were used, the pitfalls we encountered and ultimately how we've streamlined this process.  In the end, this is a work in progress with the following goals:
  1. Connect with community users on topics of interest for less formal learning sessions.
  2. Accomplish the above with minimal tool requirements for the end-users/students.
  3. Assess needed and currently available tools then determine how best to implement these in an automated fashion using best practices (what can be referred to as drinking our own champagne.)

These are pretty straightforward goals on the surface but some proved to have less-than-obvious challenges in their actual execution.  Firstly, the goal of connecting with community specifically for learning sessions or information is tightly wound in the Eucalyptus goals.  I didn't need to reinvent the wheel here; indeed most, if not all, open source projects and companies have a very good understanding of this (or, if they don't they learn fast lest they face the wrath of the internet.)  As I said earlier most of our interaction on a community level is done via IRC as well as within our ticketing systems and email lists.  These methods are as old as the open source movement itself so I won't go into great detail about this.  I will say that specifically we had the goals of maintaining existing channels of communication and taking into account bandwidth limitations of those interested.

It is easy for me to assume everyone has broadband but the fact is many of the people we connect with (and some of our staff) have very remote, low-bandwidth or otherwise constricted connectivity.  This means IRC is a natural answer: it uses very little bandwidth.  To compliment an IRC session we initially wanted to use a service similar to Mikogo, Adobe Connect, Cisco WebEx or GoToMeting to be able to show examples as discussion progressed in the IRC channel.  Bandwidth limitations made these choices less than optimal despite their attractiveness in feature set.  We assumed dial-up access for all and worked to that end to provide the lowest bandwidth-consuming solution.

What we settled on as a compliment to the IRC channel was to use a virtual instance spun up with some basic tools needed installed: namely GNU Screen, an ssh daemon and some basic configuration tweaks to user accounts.  This was a low-enough bandwidth solution to be acceptable and offered real-time examples to augment the IRC discussion, viewable on any machine with an ssh client, which covers not just Linux/Mac/Windows, but also android and iOS.  

I should point out this isn't an original idea: many people over the years have done this from university workshops to Red Hat learning sessions or Ubuntu Classroom.  If you're thinking at this point "So what? That's not new...", you would be absolutely correct.  The goal of this series of posts is not to share a revolutionary idea, but to give the reasoning, technical specs and how-to tips I have culled from various internet sources and worked with coworkers here at Eucalyptus to put together in one place.  After all, there is at least a 20 year old history of existence of these tools.   These tools, however, are not the first choice in most corporate environments and use may be waning.  (I have no data to back up that claim, but it feels that way.)  Obviously what I am detailing is related mostly to dealing with shell or command-line topics.  If you need to detail flashy windowed UI's, you probably want one of the other conferencing softwares mentioned above.  Since quite a lot (if not all) of Linux administration, or, if you will, Eucalyptus cloud administration, can be done from the command line our needs were specific: show the students a shell.

In the next post in this series I will detail specifics learned from adapting information culled around the internet to our specific needs and implementation: I will focus on setting up screen on a remote host for everyone to watch the presenter give examples and tutorial walk-throughs as well as an attempt at documenting best-practices for user administration, tool installation and other needed system tweaks.

by David Federlein (noreply@blogger.com) at April 03, 2012 07:31 PM

Greg DeKoenigsberg

Introducing the new Eucalyptus Contributor Agreements

Contributor Agreements have become a standard mechanism by which open source projects safeguard their rights to accept software into the project.  Canonical and Apache are just two illustrative examples.

The purpose of these agreements is to handle cases that open source licenses might not fully address.  For example: what does the project do if someone contributes code, and then later it turns out that the contributor didn’t actually own the code in question?  The typical Contributor Agreement answers this question by requiring the contributor to verify that they have the rights to contribute the code to the project.

There are, broadly speaking, two flavors of Contributor Agreements:

  • A licensing agreement, in which the contributor holds the copyright for the code and provides a broad license to the project for the use of that code;
  • An assignment agreement, in which the contributor assigns the copyright of the code to the project, and the project provides a broad license to the contributor for the use of that code.

The previous Eucalyptus agreement was an assignment agreement.  In order to commit software to the Eucalyptus project, a contributor had to agree to assign all copyrights and patents in the code to Eucalyptus Systems.

After careful consideration, and after working with counsel, we have decided to change to a licensing agreement.  This means that contributors will maintain ownership of their code and all associated IP, and license it broadly for use by Eucalyptus Systems.  We believe that this change is a crucial step that will make it easier for developers to contribute code to Eucalyptus.

We are in the process of making huge changes to our website, and incorporating the new licensing agreement will be part of those changes.  In the meantime, you can read the new agreements on our projects site.


by Greg DeKoenigsberg at April 03, 2012 02:56 AM

April 01, 2012

Lester Wade

Creating a Boot From EBS (bfEBS) image

Hi all,

I recently spent some time investigating this with my good colleague Andy Grimm. I had some initial issues in creating a RHEL6 image for KVM which would boot from EBS. Boot from EBS (sometimes referred to as bfEBS) is a new feature in Eucalyptus 3.X which allows a cloud administrator to back an instance with an EBS volume, thus giving persistence in the VM. This feature is present in AWS.

Below are some of my steps I used to create a RHEL6 guest image as a bfEBS volume. Note that I was using RHEL6 + KVM as the hypervisor:

1) Stop eucalyptus-nc on a designated host (or use another KVM host somewhere)
2) On the designated host, use qemu-img create to create a disk image:

qemu-img create -f raw rhel6_bfebs.img 2G

3) Set the disk label using parted: parted rhel6_bfebs.img mklabel msdos
4) Use virt-install to kick off a from-scratch installation:

virt-install --name rhel6-bfebs2 --ram 1024 --os-type linux --os-variant rhel6 \
-l http://192.168.7.65/rhel/releases/6.1/6Server/--disk \
path=/tmp/rhel6_bfebs.img,bus=virtio --vnc -x "lang=en_US keymap=us"

In your kickstart .cfg :

clearpart --all --drives=vda  --initlabel
 part / --size=512 --grow --fstype ext3 --ondisk=vda

Tweak as required :)

5) Complete the install then using virt-manager or other libvirt tool, start up the guest again (since finishing the install process is sometimes likely to shut it down, rather than reboot due to power mgmt).
6) Inside the guest:

- Remove the HWADDR line from /etc/sysconfig/network-scripts/ifcfg-eth0 <- this strips out the MAC address
- In /boot/grub/menu.lst for kernel option pass: console=ttyS0 at the end <- this will give you a serial console
- In /boot/grub/menu.lst also remove quiet option from kernel params and the grub menu splash image
- Edit /etc/sysconfig/network and add NOZEROCONF=yes  (disable the zeroconf route, which can mess up access to metadata service)
- Edit /etc/udev/rules.d/70-persistent-net.rules and remove the entry for existing NIC completely
Then, don’t forget to use our rc.local from here:  https://github.com/EucalyptusSystems/Eucalyptus-Scripts/blob/master/rc.local

7) On the instance, you can always mount the volume and check stuff:

hdparm -z /dev/vdX (re-read partition table)
 mount /dev/vdX /mnt/test

8) Make sure you unmount the EBS volume, if attached. Then detach the volume from the instance:

euca-detach-volume <volumeID>

9) Now snapshot the volume:

euca-create-snapshot<volumeID>

10) Register the snapshot (after it has completed):

euca-register -n "MyRHEL6bfEBS" -s <volumeID>

Done! Run your EBS-backed instance. Make sure that when you want to stop/start that you use the following commands:

euca-stop-instances
euca-start-instances

Otherwise, unless you’re using image attributes you’ll end up with the underlying volume being destroyed when you use euca-terminate-instances.  There goes your persistence ;)


by Lester at April 01, 2012 12:20 PM

March 29, 2012

Vic Iglesias

Eutester Basics Part II: Setting up a development environment

Installing dependencies on system

  1. Check that Python 2.6 or greater is installed, in my case (Ubuntu 11.10) Python 2.7 is installed by default
  2. Install python setup-tools and python-virtualenv
apt-get install python-setuptools python-virtualenv git

Creating your virtualenv and installing required modules

  1. First create a fresh virtual Python environment in order to keep unwanted changes out of the main Python installation.  In my case I named it “eutester-dev”.
    • virtualenv eutester-dev
  2. In order to enter the environment that was just created for you enter the following command
    • source eutester-dev/bin/activate
  3. Now that we are in the virtualenv we can install the modules necessary for eutester
    • easy_install boto paramiko
  4. Download eutester from githuband install it in the virtualenv
    • git clone git://github.com/eucalyptus/eutester.git
    • cd eutester
    • python setup.py install

Setting up your Eucarc file

  1. If you are testing against Eucalyptus the credentials that were downloaded from the cloud are sufficient. Take note of the directory where the zip file was unzipped (ie the place where the eucarc file now resides). This path will be the “credpath” argument to the construction of your eutester or eucaops object.
  2. If you are testing against a different AWS compatibile cloud the following must be provided in a file named eucarc:
    • export EC2_URL=http://mycloud.hostname.com:8773/services/Eucalyptus
    • export S3_URL=http://mywalrus.hostname.com:8773/services/Walrus
    • export EC2_ACCESS_KEY=’XXXXXXXXXXXXXXXX’
    • export EC2_SECRET_KEY=’XXXXXxXXXXXXXXXXXXXXXXX’
  3. Make sure to put the correct hostnames for the EC2 and S3 URLs as well as the correct Secret and Access keys.

Max Spevack put together a great tutorial on setting up your environment for testing against EC2.

Configuring Python shell for tab complete and history

You should now be able to use your Python environment with eutester but in order to make development and testing easier you can use the Python shell with tab completion. To achieve this we will create a .pythonrc file in our users home directory that will allow setup the shell for us with tab complete every time we start it. Your ~/.pythonrc file should look something like this:

import atexit
import os
import readline
import rlcompleter

history = os.path.expanduser('~/.python_history')
readline.read_history_file(history)
readline.parse_and_bind('tab: complete')
atexit.register(readline.write_history_file, history)

Now add the PYTHONSTARTUP variable to your .bashrc (or equivalent) file and source the .bashrc:

echo export PYTHONSTARTUP=~/.pythonrc >> ~/.bashrc
source ~/.bashrc

Next well need to create the file to log our shell history:

touch ~/.python_history

Start the virtual Python environment shell using a call directly to the Python binary

~/eutester-dev/bin/python

You should now be able to hit TAB twice to see the available namespaces that you can use within the Python shell. For example, load up the Eucaops class then create a tester object, then type “tester.” and hit TAB twice. You should see a list of the properties and methods provided by the Eucaops class

ubuntu@ip-192-168-165-22:~$ ./eutester-dev/bin/python
Python 2.7.2+ (default, Oct 4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from eucaops import Eucaops
>>> tester = Eucaops(credpath=”~/.euca”)


by viglesiasce at March 29, 2012 12:00 PM

March 28, 2012

Max Spevack

Amazon Linux AMI 2012.03

As noted on the Amazon Web Services Blog and the EC2 discussion forums, today is the release of the Amazon Linux AMI 2012.03.

You can check out the release notes for more information about new features.

If you are running the command line tools for accessing EC2, you can find the AMI IDs in your region by running:

$ euca-describe-images -o amazon | grep amzn-ami | grep 2012.03.1

Change euca- to ec2- if you are using the Amazon EC2 API Tools.

If you like what you see and want to help us build future versions of the Amazon Linux AMI, you should submit your resume!


Filed under: Amazon

by spevack at March 28, 2012 11:49 PM

shaon

Nilgiri: managing cloud is now easier

I am working on this Nilgiri project lately aiming to provide a flexible environment of managing private cloud or hybrid cloud to the end users as well as for the sysadmins to make managing cloud simpler than ever. So, someone … Continue reading

by Shaon at March 28, 2012 01:14 PM

March 27, 2012

Nelli Lahteenmaki

Rich in action

Guys, have you ever heard Eucalyptus CTO, professor Rich Wolski talk about the cloud? If you haven’t, you should. Rich is definitely one of the leading cloud minds out there. He is inspiring and full of irresistible energy. If you don’t believe me, see for yourself. I am sure he would get my 85-year-old grandma excited about Infrastructure-as-a-Service in no time. <o:p></o:p>

We had Rich giving a talk at the 2nd Bay Area Eucalyptus Meetup on March 1 at the Silicon Valley Cloud Center. The talk was a fantastic deep dive into the technical bits and pieces, or as Rich describes it, the internals of Eucalyptus 3. Please check out Rich's slides here. <o:p></o:p>

Followed by Rich's presentation, Tim Gerla run a Eucalyptus 3 demo for us. 

Thanks again for all of you who came out. Thanks for your great questions and the fantastic reviews you gave. We are glad you enjoyed the presentation as much as we did.  Dave Nielsen & co. - thanks again for hosting us! <o:p></o:p>

We will post the video of Rich’s talk later on Eucalyptus website.

Then next Eucameetup will take place in NYC on April 10. I hope to see many of you there!



by Nelli (noreply@blogger.com) at March 27, 2012 01:54 AM

March 26, 2012

Lester Wade

Creating & Managing EBS Volumes

I started making some notes on how EBS volume creation can be tracked and troubleshot in Eucalyptus (Eucalyptus 3.X + btw).  I figured this would make a good blog post, so I’ve just dumped all the information into here and I’ll let Google do the rest ;)  I’ll update it as I go along and provide more hints in the troubleshooting section, this will also make it into the Eucalyptus Knowledge Base, albeit in different form and smaller chunks.  I hope this is useful to some.

Creating & Managing Elastic Block Storage (EBS) Volumes

This guide illustrates for cloud administrators how the process of volume creation works, how volumes can be managed and how volumes can be troubleshooted.
The Volume Creation Process
Volume creation is fairly straightforward, there are a number of steps in the process between issuing a euca-create-volume command and the configuration of the iscsi target.
To create a volume, one would issue a euca-create-volume command:

# euca-create-volume -z eucalyptus -s 5

This tells Eucalyptus to create a volume in the specified availability zone (use euca-describe-availability-zone to show zones) and with a size of 5GB.
At this point, Eucalyptus will communicate with the storage controller (SC) component.  The SC process creates a sparse image file in /var/lib/eucalyptus/volumes:

# ls -lsrth /var/lib/eucalyptus/volumes/
total 1.1M
1.1M -rw-r–r– 1 root root 5.1G Jan 23 08:57 vol-391D44BE

Next, the SC will create a loop device and loopback mount this image file.  Use the following command to view the loop device configuration:

# losetup -a
/dev/loop0: [fd00]:394108 (//var/lib/eucalyptus/volumes/vol-391D44BE)

Then, this device is controlled by the Logical Volume Manager (LVM); it’s added as a physical volume, a volume group is created and a logical volume from that.  Once again, this can be seen using the LVM commands:

# pvdisplay
— Physical volume —
PV Name               /dev/loop0
VG Name               vg-1lS3pg..
PV Size               5.00 GB / not usable 4.00 MB
Allocatable           yes (but full)
PE Size (KByte)       4096
Free PE               0
Allocated PE          1280
PV UUID               u8vTQh-pEhU-9ID2-ewEO-kOIh-iwQx-Kb7BrZ
# vgdisplay
— Volume group —
VG Name               vg-1lS3pg..
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  2
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                1
Act PV                1
VG Size               5.00 GB
PE Size               4.00 MB
Total PE              1280
Alloc PE / Size       1280 / 5.00 GB
Free  PE / Size       0 / 0
VG UUID               eMYWz3-DkhN-IM9I-8T6j-cbnI-vAJe-H9OJgh

  Total PE              1280

and finally:

# lvdisplay
— Logical volume —
LV Name                /dev/vg-1lS3pg../lv-28NzTQ..
VG Name                vg-1lS3pg..
LV UUID                Goyv51-3WRJ-GOiq-yrjU-osw8-efqF-UGQt60
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                5.00 GB
Current LE             1280
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:3

With the logical volume created on the loopback mounted image, this then needs to be made available to our node controller which is running the instance on which we want to attach the EBS volume.  In Eucalyptus 2 and 3, the default storage networking method is iSCSI.  To provide iSCSI storage networking, Eucalyptus uses the Linux SCSI target framework (tgt).   Available in the base repositories of all major distributions, it is installed as a dependency for the Eucalyptus SC.
Eucalyptus configures the SCSI target daemon to run on the SC, configuring targets for each EBS volume which is configured.
Using the tgt-admin utility it’s possible to view the currently configured iSCSI targets:

# tgt-admin -s
Target 4: iqn.2009-06.com.eucalyptus.eucalyptus:store4
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET     00040000
SCSI SN: beaf40
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET     00040001
SCSI SN: beaf41
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/vg-1lS3pg../lv-28NzTQ..
Backing store flags:
Account information:
eucalyptus
ACL information:
ALL

Note the target name, which is a useful identifier.  Also note the backing store path, which happens to be the logical volume the SC has configured.  Visible for each target is the account information, Eucalyptus uses a non-root account for security reasons.

Attaching Volumes to Instances

At this point, the user may attach the volume to a running instance.  Use the following command to view your available volumes:

# euca-describe-volumes

Then, to attach the desired volume:

# euca-attach-volume -i i-133F3E53 -d /dev/sdb1 vol-391D44BE

This will attach the designated volume (vol-391D44BE) to the instance with ID i-133F3E53, as the device /dev/sdb1.
To cover what happened at this point, transition onto the Node Controller (NC) hosting the instance to which the EBS volume was attached.
Use the open ISCSI administration utility to query the target daemon on the SC and view the published targets:

# iscsiadm -m discovery -t sendtargets -p 172.22.0.13
172.22.0.13:3260,1 iqn.2009-06.com.eucalyptus.eucalyptus:store4

Note the target LUN is visible to the NC.
Eucalyptus instructs the NC to connect to the target.  This is visible in /var/log/messages on the NC:

Jan 23 11:03:31 Pod-04 kernel: scsi3 : iSCSI Initiator over TCP/IP
Jan 23 11:03:32 Pod-04 kernel:   Vendor: IET       Model: Controller        Rev: 0001
Jan 23 11:03:32 Pod-04 kernel:   Type:   RAID                               ANSI SCSI revision: 05
Jan 23 11:03:32 Pod-04 kernel: scsi 3:0:0:0: Attached scsi generic sg5 type 12
Jan 23 11:03:32 Pod-04 kernel:   Vendor: IET       Model: VIRTUAL-DISK      Rev: 0001
Jan 23 11:03:32 Pod-04 kernel:   Type:   Direct-Access                      ANSI SCSI revision: 05
Jan 23 11:03:32 Pod-04 kernel: SCSI device sdd: 10485760 512-byte hdwr sectors (5369 MB)
Jan 23 11:03:32 Pod-04 kernel: sdd: Write Protect is off
Jan 23 11:03:32 Pod-04 kernel: SCSI device sdd: drive cache: write back
Jan 23 11:03:32 Pod-04 kernel: SCSI device sdd: 10485760 512-byte hdwr sectors (5369 MB)
Jan 23 11:03:32 Pod-04 kernel: sdd: Write Protect is off
Jan 23 11:03:32 Pod-04 kernel: SCSI device sdd: drive cache: write back
Jan 23 11:03:32 Pod-04 kernel:  sdd: unknown partition table
Jan 23 11:03:32 Pod-04 kernel: sd 3:0:0:1: Attached scsi disk sdd
Jan 23 11:03:32 Pod-04 kernel: sd 3:0:0:1: Attached scsi generic sg6 type 0
Jan 23 11:03:33 Pod-04 kernel: peth0: received packet with  own address as source address
Jan 23 11:03:33 Pod-04 kernel: peth0: received packet with  own address as source address
Jan 23 11:03:33 Pod-04 iscsid: Connection2:0 to [target: iqn.2009-06.com.eucalyptus.eucalyptus:store4, portal: 172.22.0.13,3260] through [iface: default] is operational now

The resultant device is available as /dev/sdd on the NC, visible with “fdisk -l”:

Disk /dev/sdd: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Disk /dev/sdd doesn’t contain a valid partition table

Then, Eucalyptus generates an XML file for the volume in the working directory of the instance it will attach to.  Below is the instance working directory, as the ID suggests:

[root@Pod-04 i-133F3E53]# pwd
/var/lib/eucalyptus/instances/work/CEK7XDHLEBSVR1SATAZMT/i-133F3E53

Below is the XML file for the volume:

[root@Pod-04 i-133F3E53]# ll vol*
-rw-rw—- 1 eucalyptus eucalyptus 535 Jan 23 11:03 vol-391D44BE.xml

This XML generated by Eucalpytus looks like:

<?xml version=”1.0″ encoding=”UTF-8″?>
<volume>
<hypervisor type=”xen” capability=”xen+hw” bitness=”64″/>
<id>vol-391D44BE</id>
<user>CEK7XDHLEBSVR1SATAZMT</user>
<instancePath>/var/lib/eucalyptus/instances/work/CEK7XDHLEBSVR1SATAZMT/i-133F3E53</instancePath>
<os platform=”linux” virtioRoot=”false” virtioDisk=”false” virtioNetwork=”false”/>
<backing>
<root type=”image”/>
</backing>
<diskPath targetDeviceType=”disk” targetDeviceName=”sdb2″ targetDeviceBus=”scsi” sourceType=”block”>/dev/sdd</diskPath>
</volume>

See the volume ID and target device name as specified with the euca-attach-volume command.
This is then added with a virsh command behind the scenes by Eucalyptus.  Note a manual method would be something like:

virsh attach-device <domain> <file>

Running the following command on the node controller will dump the current xml definition for the virtual machine:

virsh dumpxml <domain_id>

Use virsh list to obtain the domain ID for the instance.  The block device should be present in the <device> section:

<disk type=’block’ device=’disk’>
<driver name=’phy’/>
<source dev=’/dev/sdd’/>
<target dev=’sdb2′ bus=’scsi’/>
</disk>

Thus, looking on the instance, the new volume is available as /dev/sdb2:

Disk /dev/sdb2: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0×00000000
Disk /dev/sdb2 doesn’t contain a valid partition table

At this point, the volume can be formatted and used by the instance:

# mkfs.ext3 /dev/sdb2
# mkdir /media/data
# mount /dev/sdb2 /media/data

Detaching Volumes

Detaching a volume follows much the same process but in reverse order.
WARNING:  You must unmount the device within the instance before detaching the volume, otherwise you risk data loss and being unable to properly detach the volume whilst the instance is running.
A volume can be detached with the following command:

euca-detach-volume -i i133F3E53 vol-391D44BE

This detaches the previously created volume from the running instance, i133F3E53.
Much the same as adding a block device to a running guest, this calls virsh commands, as below:

virsh detach-device <domain> <file>

Whereby domain is the ID of the running domain (which can be found by using ‘virsh list’) and file is the XML device definition file that Eucalyptus created at attach time, in this continued example it was vol-391D44BE.xml
This device defition file is then removed from the working directory of the instance on the node controller.

Snapshotting Volumes

An EBS volume snapshot acts as a point-in-time backup of your persistent storage into Walrus (S3), note that it is incremental in nature, only backing-up the changed data.  It can also be a method for duplicating EBS volumes; it is possible to snapshot a volume and recreate a new volume from the snapshot.
WARNING: As when detaching a volume, it is recommended that you unmount the volume within the instance before taking a snapshot.
To create a snapshot, use the euca-create-snapshot command:

euca-create-snapshot <volume_id>

Providing the volume ID, as shown with euca-describe-volumes as the arguement.  Next, view the status of the snapshot process with:

[root@Pod-03 lester]# euca-describe-snapshots
SNAPSHOT        snap-C2DF3CF2   vol-D02E43C2    pending 2012-01-30T15:44:04.853Z        0%      None

In this example, the snapshot is of a 15G EBS volume.
Eucalyptus EBS snapshots use Logical Volume Manager (LVM) copy-on-write (COW) snapshots to create the snapshot disk image.  Firstly the storage controller creates an image file large enough to add to the volume group for the current logical volume on which the current EBS volume resides.   This additional image is created in the volumes directory on the storage controller:

[root@Pod-03 lester]# ll /var/lib/eucalyptus/volumes/
total 17015932
-rw-r–r– 1 root root  8589934592 Jan 30 07:32 snap-26EE3E3A
-rw-r–r– 1 root root  3224145920 Jan 30 07:44 snap-C2DF3CF2
-rw-r–r– 1 root root  5368709120 Jan 30 06:49 snap-D7E53AC0
-rw-r–r– 1 root root 10741612544 Jan 20 09:56 vol-178C3E9C
-rw-r–r– 1 root root  5372903424 Jan 23 08:57 vol-391D44BE
-rw-r–r– 1 root root 16110321664 Jan 30 07:43 vol-D02E43C2
-rw-r–r– 1 root root  8053063680 Jan 30 07:44 vol-D02E43C2MsmGAIzx

This is then loopback mounted:

[root@Pod-03 volumes]# losetup -a
/dev/loop0: [fd00]:393652 (//var/lib/eucalyptus/volumes/vol-178C3E9C)
/dev/loop1: [fd00]:394108 (//var/lib/eucalyptus/volumes/vol-391D44BE)
/dev/loop2: [fd00]:393631 (//var/lib/eucalyptus/volumes/vol-D02E43C2)
/dev/loop3: [fd00]:394121 (//var/lib/eucalyptus/volumes/vol-D02E43C2MsmGAIzx)

Marked as a physical volume for LVM and added to the volume group, which now shows increased size:

[root@Pod-03 volumes]# vgdisplay
— Volume group —
VG Name               vg-WsNskQ..
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  5
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                2
Act PV                2
VG Size               22.50 GB
PE Size               4.00 MB
Total PE              5759
Alloc PE / Size       5759 / 22.50 GB
Free  PE / Size       0 / 0
VG UUID               Dh0Xs7-Pvlr-vUbm-d1mA-7pCf-I94z-dS3r0l

lvdisplay shows the status of the logical volumes:

[root@Pod-03 volumes]# lvdisplay
— Logical volume —
LV Name                /dev/vg-WsNskQ../lv-OWzOIQ..
VG Name                vg-WsNskQ..
LV UUID                JFyFII-F1K8-QGYD-0s77-1dZf-ALQm-33AOr9
LV Write Access        read/write
LV snapshot status     source of
/dev/vg-WsNskQ../lv-snap-CfzmRA.. [active]
LV Status              available
# open                 1
LV Size                15.00 GB
Current LE             3840
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:4

— Logical volume —
LV Name                /dev/vg-WsNskQ../lv-snap-CfzmRA..
VG Name                vg-WsNskQ..
LV UUID                0S4AAC-g4ip-0Zjs-0dQV-Yfym-tTNA-tPV1rA
LV Write Access        read/write
LV snapshot status     active destination for /dev/vg-WsNskQ../lv-OWzOIQ..
LV Status              available
# open                 1
LV Size                15.00 GB
Current LE             3840
COW-table size         7.50 GB
COW-table LE           1919
Allocated to snapshot  0.00%
Snapshot chunk size    4.00 KB
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:5

Note the COW-table size and logical volume size equals that of the underlying physical volume.  This additional physical volume in the volume group is needed to hold the snapshot logical volume.
For more information on how LVM snapshotting works, see the TLDP guide: http://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html
From this snapshot the data is then copied into a snapshot disk image in /var/lib/eucalyptus/volumes/.  The process can be viewed using ps -aux on the storage controller:

dd if /dev/vg-WsNskQ../lv-snap-CfzmRA.. of //var/lib/eucalyptus/volumes/snap-C2DF3CF2 bs 1M

Once complete, the storage controller cleans up the snapshot device, removes the physical volume and unmounts the loopback device and removes the temporary disk image.  The volumes directory now just shows the snapshot image:

[root@Pod-03 ~]# ll /var/lib/eucalyptus/volumes/
total 29607236
-rw-r–r– 1 root root  8589934592 Jan 30 07:32 snap-26EE3E3A
-rw-r–r– 1 root root 16106127360 Jan 30 07:48 snap-C2DF3CF2
-rw-r–r– 1 root root  5368709120 Jan 30 06:49 snap-D7E53AC0
-rw-r–r– 1 root root 10741612544 Jan 20 09:56 vol-178C3E9C
-rw-r–r– 1 root root  5372903424 Jan 23 08:57 vol-391D44BE
-rw-r–r– 1 root root 16110321664 Jan 30 07:43 vol-D02E43C2

Next, the snapshot is stored in Walrus (S3) as a snapset.  Check /var/log/eucalyptus/cloud-output.log for the transfer messages:

| <euca:StoreSnapshotType xmlns:euca=”http://msgs.eucalyptus.com”>
|   <euca:WalrusDataRequestType>
|     <euca:WalrusRequestType>
|       <euca:correlationId>9105e2c8-b228-4dfa-b622-e384a232852f</euca:correlationId>
|       <euca:_return>true</euca:_return>
|       <euca:_services/>
|       <euca:_disabledServices/>
|       <euca:_notreadyServices/>
|       <euca:accessKeyID>KGPY0PMLTKX4XUORAC8IK</euca:accessKeyID>
|       <euca:timeStamp>2012-01-30T15:48:34.688Z</euca:timeStamp>
|       <euca:bucket>snapset-ccc92f77-ab62-4554-9151-973e45fcc974</euca:bucket>
|       <euca:key>snap-C2DF3CF2</euca:key>
|     </euca:WalrusRequestType>
|     <euca:randomKey>snapset-ccc92f77-ab62-4554-9151-973e45fcc974.snap-C2DF3CF2.JAoH7pTIt7gbzQ..</euca:randomKey>
|   </euca:WalrusDataRequestType>
|   <euca:snapshotSize>16106127360</euca:snapshotSize>
| </euca:StoreSnapshotType>

Note the snapshot reference in the key field.  This will be followed in the log (if successful) with:

INFO WalrusManager.putObject(WalrusManager.java):1020 | Transfer complete: snapset-ccc92f77-ab62-4554-9151-973e45fcc974.snap-C2DF3CF2

The snapset should appear in the Walrus (S3) bukkits directory:

[root@Pod-03 eucalyptus]# ll /var/lib/eucalyptus/bukkits/
total 24
drwxr-xr-x 2 eucalyptus eucalyptus 4096 Jan 30 05:05 euca-centos
drwxr-xr-x 2 eucalyptus eucalyptus 4096 Jan 16 06:50 euca-ubuntu
drwxr-xr-x 2 eucalyptus eucalyptus 4096 Jan 30 08:35 snapset-80efb05e-f0d7-444d-946d-9cfdad3845ad
drwxr-xr-x 2 eucalyptus eucalyptus 4096 Jan 30 06:51 snapset-ad471308-c3f9-4908-a4f0-1e8790d8b99f
drwxr-xr-x 2 eucalyptus eucalyptus 4096 Jan 30 09:08 snapset-ccc92f77-ab62-4554-9151-973e45fcc974
drwxr-xr-x 2 eucalyptus eucalyptus 4096 Jan 30 07:35 snapset-f394c343-2580-4406-a29b-b5b62b2b9fd1

WARNING:  Snapshots count towards a users quota in S3, keep this in mind when configuring the storage system.

Troubleshooting

Q1:  I’ve tried to detach a volume from my instance but it stays in the “detaching” state.
A1:  Ensure you unmount your volume from within the instance before detaching it, in this case you would need to terminate the instance to free your volume.
Q2:  My EBS snapshot is created on the storage controller but it’s not uploaded to Walrus.
A2:  Check /var/log/eucalyptus/cloud-error.log and cloud-output.log for errors.  You may be hitting your users quota, use the GUI or euca-describe-properties to check the quota limits for snapshots.

by Lester at March 26, 2012 10:59 AM

China Unix - Eucalyptus

March 19, 2012

Andrew Hamilton

Automating a Puppet Agent Installation

Puppet is a very popular configuration management system. It allows users to deploy new infrastructure in a cloud or traditional enterprise environment quickly and efficiently. When an organization utilizes a configuration management system, it allows IT and DevOps groups to effectively replicate environments on the fly with little to no interaction with the new instance or system.

The basic building block for using puppet in the cloud is through the puppet agent. The puppet agent has two main actions:

  • Applying a manifest to the systems it’s running on
  • Working with a puppet master to coordinate a new deployment

In this post we will be focusing on the first aspect of the puppet agent mentioned above by using it in a standalone configuration.

What will our script do in this post?

  • Update the instance
  • Setup the hostname
  • Install the puppet agent
  • Create a manifest for the puppet agent to work with that will install vim and Apache2
  • Apply the puppet manifest to the instance

All of these actions will be accomplished with a single command, euca-run-instances. With a simple deployment like this, we reduce complexity for new instance deployment and will give more power to cloud users. This has the side effect of making IT’s talk list much shorter, gives teams a quicker turn around time for new systems, and allows for new systems that are spun up to look exactly the same which reduces the possibility of errors.

For this post I’m going to use the Eucalyptus Community Cloud and a Debian Squeeze image (emi-00781826). Below is the script that will do what was outlined above. Copy it from here (or GitHub – Puppet Agent Install) and save it to your local machine for use.

#!/usr/bin/env bash

FULL_HOSTNAME="myhost.mydomain"
SHORT_HOST=`echo ${FULL_HOSTNAME} | cut -d'.' -f1`
APTITUDE=`which aptitude`
APT_KEY=`which apt-key`

###########
# Setup the hostname for the system. Puppet really relies on 
# the hostname so this must be done.
###########
hostname ${FULL_HOSTNAME}

sed -i -e "s/\(localhost.localdomain\)/${SHORT_HOST} ${FULL_HOSTNAME} \1/" /etc/hosts

###########
# Need to add in the aptitude workarounds for instances.
# * First disable dialog boxes for dpkg
# * Add the PPA for ec2-consistent-snapshot or else the update will hang.
###########
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical

${APT_KEY} adv --keyserver keyserver.ubuntu.com --recv-keys BE09C571

###########
# Update the instance and install the puppet agent
###########
${APTITUDE} update
${APTITUDE} -y safe-upgrade
${APTITUDE} -y install puppet

PUPPET=`which puppet`

##########
# Setup the puppet manifest in /root/my_manifest
##########
cat >>/root/my_manifest.pp <<EOF
package {
    'apache2': ensure => installed
}

service {
    'apache2':
        ensure => true,
        enable => true,
        require => Package['apache2']
}

package {
    'vim': ensure => installed
}
EOF

############
# Apply the puppet manifest
############
$PUPPET apply /root/my_manifest.pp

############
# End of script cleanup.
############
export DEBIAN_FRONTEND=dialog
export DEBIAN_PRIORITY=high

This script very pretty basic. First we take care of some basics like setting the hostname on the instance and we update the instance to the latest software available. We then install the puppet agent onto the system and find where the new binary is located. Next we create a file containing our puppet manifest that we wish to install and finally we apply the manifest to the instance.

To use the script with a new instance use the -f flag for euca-run-instances like so:

euca-run-instances -k <my_key> -t <instance_size> -f <path_to_script> emi-00781826

This is just a basic example of how you can utilize puppet inside of your Eucalyptus or EC2 compliant cloud with a metadata service.

(Looking to try this out with CentOS? There’s a script for it on GitHut – Puppet Agent Install. Try it out on the ECC with EMI emi-709D1676.)

Edit: I’ve added a CentOS 6 script for this as well now. Check it out at the GitHub repo above!


by ahamilton55 at March 19, 2012 09:25 PM

China Unix - Eucalyptus

美国桉树公司招聘(2)--技术支持工程师

技术支持工程师 <span lang="EN-US" style="color: rgb(38, 38, 38)

by EucasysCN at March 19, 2012 01:45 AM

March 18, 2012

Vivek Khurana

First Eucalyptus meetup – Delhi (17-March-2012)

  Spent yesterday evening with awesome group of Eucalyptus enthusiasts in Delhi. Those few brave souls which manged to defy the Delhi traffic and still managed to make it to the lush green IIT Delhi campus.

  The day started with Deependra Singh Shekhawat, who works with Eucalyptus as Support Engineer, dropping in at my office around noon time. After feasting over pizza’s and breads we started out for the venue along with Himanshu Anand.

 By the time we reached venue it was all set except, the room we were allocated was locked. After sorting out some confusions we got access to the class room and it turned out, the room was three times bigger than what we had asked for. But at the same time, the room was equipped with a projector and all other facilities.

 Just when we were about to start, it turned out that Deependra’s macbook had a DVI port and the projector supported only VGA. To add to this, we had no DVI to VGA converters. But things cant go wrong technology wise, when you are with a bunch of techies. We quickly connected another laptop to to the projector and connected Deependra’s laptop to first laptop over remote desktop.
  Hence we were set to start. We started with introduction and experiences of audience members with cloud computing. It turned out during introductions that Abhishek Gupta, one of the co-host of the event and a student of third year Computer Science and Engineering at IIT Delhi, has written a cloud controller as an academic project and IIT Delhi is running a cloud setup based on that controller as an experiment in one of the labs.

 After Abhishek finished his introduction to his academic project, Deepnedra started with his presentation on Eucalyptus. In the meantime, we were joined by Tarun Dua, one of the co-founders of E2Enetworks.com . The presentation from Deepndra was good and it turned more into brainstorming and discussions than a normal presentation. The discussions were so engaging that I forgot to click pictures :)

 The presentation was filled with cross questions from audience and lots of inquiries about the features of eucalyptus. Broadly these are the features that audience was interested in

  • Billing module so that one can charge or atleast calculate the usage of the resources.
  • Integration with SAN. Though Eucalyptus supports SAN integration, it is limited to specific SAN devices. We would like to see support for more SAN protocols such as AOE, FCoE, iSCSI and FCP.
  • Support for Hyper V
  • Support for more programming languages for writing plugins in Eucalyptus, specially perl.

 We also discussed few of the security scenarios generic to clouds such as bot-nets, DDoS attack, attacks by exploiting vulnerabilities and cloud outages. Thoug we had no conclusive answers to these. But was still worth discussing.

  The most interesting discussion we had was on SAAS definition in cloud environment. This is where the whole audience was split in two groups. One group claiming that SAAS is when you can configure and customize software to your need, while everyone shares the same codebase V/S if you are running any software in cloud, it is software as a service. The discussion was inconclusive and we moved on to other items in the presentation.

 Overall this meetup helped everyone by deepening the knowledge of eucalyptus as well as eucalyptus deployments. Specially the part where Deependra explained few use cases of organizing CLC, cluster controllers and node controllers.

 I also learned few new things about Eucalyptus from this meetup. I was not aware of VM-islotation , which allows you to run separate VM on a separate VLAN and the VM’s cannot talk to each other when they are separated by VLANs. Also learned that Eucalyptus doesnt support VTP, though I am not yet sure if this support has to go in Eucalyptus stack or in networking gear’s firmware.

Post meetup, we landed up in a restaurant and ordered Brownie-Truffle cake with “Eucalyputs 3.0″ written on it. The cake was delicious and everyone had no options except for licking fingers. That is because, firstly it was awesome and secondly I had already signaled the the staff not to serve spoons ;) . The dinner was good with a goofup where a guy mistakenly ordered 4 times the quantity of breads required and we ended up with this basket of breads, which we could not finish…

Know it has been a long post, so I will leave you guys with link to handful of pics fromat he meetup. Did not click much as I was busy with discussions.

Pics: First Eucalyptus meetup -Delhi

One question still remains unanswered though. Why is amazon innovating in cloud space and we are not ?

Share

by Vivek Khurana at March 18, 2012 02:23 AM

March 16, 2012

Darren Stagnaro

One Customer, One Community

I often sit at my desk, with my eyes closed, hands rubbing against a face in desperate need of a shave, contemplating a dilemma. We face the challenge of building a support organization that can scale to meet our customer’s needs and I can’t help but think we’re missing something. Something that can redefine how we engage with our customers, something that can make their experience that much more meaningful. And just as I feel like I’ve reached my wits end, in walks Graziano with the perfect solution to my dilemma – our community. Eucalyptus has an amazing community. One that is eager to help and spread the word about cloud computing. This is summarized best by Graziano in his blog post about One Eucalyptus Community.

Eucalyptus represents more than just a product. Eucalyptus is a group of individuals who believe that together we can have a lasting impact upon the landscape of cloud infrastructure. But this group is not made up of just the employees, founders, or the management team. Eucalyptus is made up of thousands of individuals who have dared to challenge the status quo of infrastructure operations; individuals who believe that together we can make a difference.

So last year we decided to challenge our thinking around customer support and find a better way to bring these groups together, to build one customer, one community. We began the process by looking at what mattered most for our users. This was broken down in to 3 basic categories – ease of use, user experience, and integration. Over the following 5 months, we generated a detailed list of over 50 requirements, receiving input from multiple Eucalyptus and community individuals and organizations, and then organized those requirements into a priority list. We then began the lengthy process of evaluating over half a dozen community and support facing tools and concepts and narrowed the list down to a handful of options. We then identified the solution that we felt provided us the greatest flexibility in bridging our community and customers into one positive user experience.

I am pleased to announce that over the first half of 2012, in conjunction with the launch of our new OneSite and Eucalyptus 3 software, we will be unveiling a new technical support website that will encourage all Eucalyptus users to ask, search, and engage with Eucalyptus. We will make it easier for users to sign-up, participate, and join our community. Whether you are under a support contract or just interested in information or asking questions, our goal is to provide all users with the best possible experience.

Graziano’s blog was about listening to our community, and striving to be better. I would like to raise that bar higher by challenging all of us to embrace each other as members of the Eucalyptus community, and work together to share knowledge, encourage discussions, raise issues, and be part of one of the biggest technology game changers of our life time.


by dstagnaro at March 16, 2012 10:25 PM

March 15, 2012

Nelli Lahteenmaki

Eucalyptus / Codento Breakfast Meetup in Helsinki

<style></style>
Snow hat
Silicon Beach Eucameetup tour had its next stop in Helsinki, Finland on February 9, 2012. With -20 Celsius degrees (- 7 Farenheit) and massive piles of snow outside, we were very happy to have over 50 people attending Eucalyptus Breakfast Meetup organized together with our partner Codento. Great to notice private and hybrid clouds are such a hot topic in this freezing cold, beautiful Nordic country.

After a tasty breakfast, Petri Aukia, CEO of Codento explained why now is the time for hybrid and private clouds. Based in Helsinki, Finland, Codento is one of our first partners in Europe. Codento has two technology partners, Amazon Web Services and Eucalyptus Systems. Great choices, I must admit ;).

Paul Holt, VP Sales EMEA at Eucalyptus continued with Eucalyptus introduction and explained why it mattes to follow open standards. I introduced three different Eucalyptus Case Studies – Plinga, Puma.com and USDA. Olivier Renault, Sales Engineer went through the Eucalyptus technical deep dive.

Once again, tons of great questions were asked. Keep ‘em coming!

Massive thanks to our friends at Codento, Petri Aukia, Santeri Paavolainen, Tommi Ullgren and team, and to everybody who showed up in that freezing cold winter morning! Finland rocks!!

Full House at Eucalyptus / Codento Breakfast Meetup!



by Nelli (noreply@blogger.com) at March 15, 2012 06:55 AM

March 12, 2012

China Unix - Eucalyptus

March 10, 2012

Nelli Lahteenmaki

1st Bay Area Eucalyptus Cloud User Meetup

<style></style>
Jan 26, 2012 Bay Area Eucalyptus Cloud User Meetup world premier took place. As the organizer of the event I was thrilled to see such an amazing and active crowd of people showing up and engaging in lively discussion with us. The first Bay Area Eucameetup gathered over 60 people at the Silicon Valley Cloud Center, which is a great start for a fresh meetup group.

Dave Nielsen, founder and creator of CloudCamp and other Silicon Valley Cloud Center folks were our awesome hosts. Thank you so much for having us. Silicon Valley Cloud Center (SVCC) is a super interesting project you should definitely take a look if working in cloud space.  Based in Sunnyvale, SVCC will be a home for collaboration and creation in cloud space.  SVCC plans to be an open-lab data center and an incubator that includes training and other forms of professional services/consulting as a freemium offering to the high tech community. Dave did not want to nail down the “goals” or specific “plans” for the space. He wants to provide a place and a platform for people to play around with latest cloud technologies, collaborate and build new innovations from there. An open ended project with a great starting point. I like.

The purpose of the first Bay Area Eucalyptus Cloud User meetup was to get started and provide the audience with building blocks for our future eucameetups. Andy Knosp, VP of Services at Eucalyptus  went through the company background, current status and growth plans. Tim Gerla, Sales Engineer and  Architect rocked the technical deepdive and most of the Q&A.

We were absolutely thrilled to receive dozens of great questions. Thank you. Keep them coming.  

Next time, Eucalyptus 3 demo time. Welcome. Looking forward to seeing you all in a couple of weeks. Stay tuned about the details.







by Nelli (noreply@blogger.com) at March 10, 2012 01:13 AM

March 05, 2012

Andrew Hamilton

Basics of Instance Automation

Automation is a huge piece of any successful cloud deployment. When you have the ability to scale horizontally with seemingly “infinite” resources you need a quick and automatic method of setting up additional services. Infrastructure-as-a-Service cloud services, such as Amazon EC2 or Eucalyptus, have built-in functionality that allows for information to be passed to new instances and allows for complete system automation.

The two main technologies that assist the cloud user or cloud developer with an automation task are the following:

  • Metadata service
  • Automated user data execution

The metadata service allows the user to supply an instance with information regarding it’s setup, environment, and data provided by the user through the cloud service (For more information see Amazon EC2 Instance Metadata or Eucalyptus Metadata Service). This ability to pass data to a new instance gives the user a simple method for automating the instance’s setup without needing to ever login to the instance. The user’s data, kept at http://169.254.169.254/latest/user-data by the metadata service, can contain a script that, with the proper setup on the instance’s image, can be executed automatically as the instance boots.

To achieve automatic execution of the user data from the metadata service, we can utilize a couple different methods. The first method involves running commands inside of the /etc/rc.local file of an instance’s image. The most basic version of an /etc/rc.local that will automate the execution of user data is the following:

curl -s -o /tmp/user-data http://169.254.169.254/latest/user-data 
sh /tmp/user-data

In the above code snippet, we first download the user data from the metadata service at http://169.254.169.254/latest/user-data and place it into a temporary file. Then we execute the user data using a basic POSIX shell. This is only the most basic form. You can find a more sophisticated /etc/rc.local implementation in the Eucalyptus Starter Images.

An emerging standard method for downloading and utilizing the user data is with CloudInit. CloudInit takes the above /etc/rc.local functionality and extends it greatly. It is definitely worth it to research CloudInit’s features and use it with a Debian or Ubuntu based image and hopefully in the near future Fedora and Centos as well.

This was simple a basic primer on how the metadata service of an IaaS cloud service functions behind what the cloud user will see. In my next post, I’ll show how to use the metadata service to do some basic instance setup automation.


by ahamilton55 at March 05, 2012 03:48 AM

March 04, 2012

Vic Iglesias

Eutester Basics Part I

Introduction

In my time working for Eucalyptus, I have begun the Eutester project that aims to provide the framework for cloud architects and administrators to validate and benchmark their various AWS-compatible cloud infrastructure options.  Enterprises and research institutions are rushing to roll out their strategies for moving their mission critical applications and services to on-premise, public, or hybrid clouds. The end result of this strategy should be a fault tolerant and reliable compute, storage, and networking infrastructure. Unfortunately, choosing a private or hybrid IaaS solution to implement is not the end of the road for a cloud strategy. The next level of planning involves choosing and validating the interconnected components of the cloud infrastructure stack. The considerations necessary include, but are not limited to, choosing network topologies, hypervisors, component topology, and storage devices. What many  will end up with is a few different ways to implement the end goal, a scalable and robust self service infrastructure. In order to make “apples to apples” comparisons of these options, it is necessary to have a test library that is agnostic to the underlying components and treats each cloud implementation equally by presenting results in a unified and comparable way.

Eutester Basics

Eutester is written in Python and leverages the boto and paramiko libraries to provide the necessary tools for quickly implementing an automated test strategy. Boto is used in order to provide connections to EC2, S3, and IAM. Paramiko is leveraged to provide root access to nodes that are running the individual cloud components. The eutester module is separated into two main classes: eutester, which provides the necessary logic to get a test bootstrapped, and eucaops, which inherits from eutester and provides predefined routines that can validate operations against the cloud. Here is an example of the difference in using the eutester class by itself rather than using eucaops. Notice that when using both eutester and eucaops you have full access to the underlying EC2 and S3 connections provided by boto.

>>> from eutester import Eutester
>>> from eucaops import Eucaops
>>> eutester = Eutester(credpath="../credentials")
>>> eucaops = Eucaops(credpath="../credentials")
>>> eutester.ec2.get_all_images()
[Image:eri-168B3564, Image:eki-E9A03638, Image:emi-5D824306, Image:emi-30823A1C]
>>> eucaops.get_emi()
Image:emi-5D824306
>>> eucaops.ec2.get_all_images()
[Image:eri-168B3564, Image:eki-E9A03638, Image:emi-5D824306, Image:emi-30823A1C]

As you can see the only required parameter to get a test up and running is simply the path to a credentials directory that contains a eucarc file that can be used to extract both the access and secret keys as well as the hostname of the EC2 and S3 implementation. In the case of Eucalyptus these are the Cloud Controller and Walrus. Once the boto connections have been established the testing is ready to begin and you can start to send commands to the cloud:

>>> emi = eucaops.get_emi()
>>> reservation = eucaops.run_instance(emi)
[2012-03-04 17:46:42,205] [EUTESTER] [DEBUG]: Attempting to run image Image:emi-5D824306 in group default
[2012-03-04 17:46:42,976] [EUTESTER] [DEBUG]: Beginning poll loop for the 1 found in Reservation:r-F4F842A4
[2012-03-04 17:46:42,976] [EUTESTER] [DEBUG]: Beginning poll loop for instance Instance:i-87FB415E to go to running
[2012-03-04 17:48:16,953] [EUTESTER] [DEBUG]: Instance(i-87FB415E) State(running) Poll(9) time elapsed (93)
[2012-03-04 17:48:16,953] [EUTESTER] [DEBUG]: Instance:i-87FB415E is now in running
[2012-03-04 17:48:16,953] [EUTESTER] [DEBUG]: Instance i-87FB415E now in running state

The output here shows that the instance we ran successfully went to the running state, as expected. Once the instance is running it may be useful to ping the instance from the test machine to ensure we have connectivity.

>>> instance = reservation.instances[0]
>>> eucaops.ping(instance.public_dns_name, poll_count=1)
[2012-03-04 18:08:38,075] [EUTESTER] [DEBUG]: Attempting to ping 192.168.47.202
[2012-03-04 18:08:38,076] [EUTESTER] [DEBUG]: [root@localhost]# ping -c 1 192.168.47.202
[2012-03-04 18:08:48,081] [EUTESTER] [DEBUG]: PING 192.168.47.202 (192.168.47.202) 56(84) bytes of data.

— 192.168.47.202 ping statistics —
1 packets transmitted, 0 received, 100% packet loss, time 0ms

[2012-03-04 18:08:48,081] [EUTESTER] [CRITICAL]: Was unable to ping address
False

We were unable to ping the instance likely because the group that we launched it in, “default,” did not have the proper ports authorized. Lets go back and authorize the ports and retry the ping:

>>> eucaops.authorize_group_by_name(group_name="default", protocol="icmp",port="-1")
[2012-03-04 18:11:35,755] [EUTESTER] [DEBUG]: Attempting authorization of group
>>> eucaops.ping(instance.public_dns_name, poll_count=1)
[2012-03-04 18:12:18,445] [EUTESTER] [DEBUG]: Attempting to ping 192.168.47.202
[2012-03-04 18:12:18,445] [EUTESTER] [DEBUG]: [root@localhost]# ping -c 1 192.168.47.202
[2012-03-04 18:12:18,457] [EUTESTER] [DEBUG]: PING 192.168.47.202 (192.168.47.202) 56(84) bytes of data.
64 bytes from 192.168.47.202: icmp_seq=1 ttl=63 time=6.49 ms

— 192.168.47.202 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 6.498/6.498/6.498/0.000 ms

[2012-03-04 18:12:18,457] [EUTESTER] [DEBUG]: Was able to ping address
True

Now we can see that the instance is reachable. In these few steps we have validated the folllowing:

  • Hypervisor is properly operating and can run VMs
  • The image we used can boot and start networking properly
  • Opening ports on a security group is working properly
  • Networking from the CLC to CC and CC to Node controller is working as expected

These may seem like trivial checks but should not be taken for granted when first turning up an installation of a cloud platform.  Along with the checks of functionality we also received some benchmarks for this particular run instance request in which it shows that for the instance to go to running it took 93 seconds. If we rerun those few steps with various images we can get a feel for the performance of different images on the same cloud. Similarly if we use the same image against clouds running different hypervisors we can get a feel for the prep time each hypervisor requires to bring up an instance.

Here we have seen a case where things more or less worked as expected and were easy to debug and get running. When things are not quite working the way we expect, eutester allows you to start and stop monitoring the logs from all of your Eucalyptus components. This requires a slightly different initialization of the Eucaops or Eutester object wherein we include a root password for the Eucalyptus component nodes as well as a small configuration file that provides the topology of the components and thier hostnames. In my next blog post I’ll go over how Eutester can help you when your cloud is not functioning properly.

For an initial API doc please see:

https://github.com/eucalyptus/eutester/wiki/API-Documentation

Raise issues on the Github project page at:

https://github.com/eucalyptus/eutester/issues

All contributions are welcome, whether it be testing, refactoring code, new use cases, or added functionality.

Come hang out at #eucalyptus on freenode to discuss any topics related to Eutester or Eucalyptus in general.


by viglesiasce at March 04, 2012 07:19 PM

March 02, 2012

Jussi Valtonen

My first week at Eucalyptus

"In Santa Barbara the only clouds are computer clouds"

After a nice 18 hour flight Anne and me arrived in San Francisco on Sunday night. Bags from claim and hit the road to Menlo Park, from where we had rented a room to settle in. We are living upstairs in the house of lovely couple in the neighborhood of Stanford University (social living is really common in well-crowded San Francisco Bay Area) . We didn’t have too much time to recover, because the next day was already our first work day.

My workweek started by biking to Palo Alto and opening a U.S. mobile subscription. After that, I had lunch with my boss including an introduction to my company Eucalyptus and the objectives of my internship. Introduction to U.S. business culture was the next in line: My boss asked if I’m able to fly to Santa Barbara the next day to join in on a training for new sale-hires. Sure, so after less than 2 days in the Bay Area I was on my way to the airport again.

In Santa Barbara, I faced an on-boarding experience which I would not have dared to expect. A three-day training, where an excellent session was followed by another, was some what a deep dive into the world of cloud computing. Private cloud infrastructure, server by server and hypervisor by hypervisor, became familiar as well as the company culture and vision. I was impressed and it was hard to believe that the company was founded just few years ago and one year ago it had no more than 15 employees.

Now with already 70 employees, Eucalyptus has still maintained its start-up attitude. On the eve of the new edition of software to be released, there was similar atmosphere in the office than children waiting for Christmas. For the new entrant, equal and “can-do” working culture combined with skilled individuals solving difficult problems, seems to be the reason why so many people enjoy work in start-ups. After one week I have just scratched the surface, but I am more than willing to scratch more.

Jussi
twitter @jussivaltonen


by Jussi Valtonen at March 02, 2012 01:56 AM

February 24, 2012

Mel Chua

Thought experiment: design an open source new-hire process.

Little thought experiment today (pedagogy class is really getting to my brain): if I were creating a new-hire process for employees being assigned to work on an open source project, what would it look like? Here’s a first pass; it’s randomly improvised and not particularly well-thought-out, but fun anyhow; it’s partially based on what I’ve (unconsciously) come to find myself doing each time I’ve launched into a new open source project over the past few years.

You spend your first week as a remotee, no matter who you are or where you’ll end up working. You have exactly the same access to the tools and processes that a community member would have; no internal mailing lists, no magical “you’re hired therefore you get the root password” shortcuts. If you want privs, you need to earn them the same way as any community member (or in some cases, when the hire is from the community, they’ll have earned them already). During this week…

  • You have constant access to orientation staff — hopefully in-person, but at the very least via a remote medium you’re already comfortable in. This is important; they’re your culture/tools coaches, and their encouragement will help you buffer the inevitable frustration you’re going to hit (new hires will be told ahead of time that it’s going to be frustrating).
  • You’ll get training in remote collaboration tools if you don’t already know them. Your project’s IRC channels, bugtracker, wiki, version control system, etc… you’re going to learn to use them. By the end of the week, you’ll be lurking on your project’s IRC channel(s), your blog will be feeding into Planet (and you’ll have posted on it), you’ll have introduced yourself on mailing lists, edited the wiki, triaged bugs… This is a lot like the material we teach in POSSE (actually, you could remix POSSE into this portion of such an orientation).
  • Ditto the above to open source culture. Things like “release early, release often,” “default to open,” open source business models, “ask forgiveness not permission,” and so forth will be brought up by your coaches.

The main point is that you’re going to try to start doing your job without any sort of magical special “I’m an employee” powers (other than the fact that you’re paid to work on this, which is a privilege that shouldn’t be discounted). Inevitably, you’ll run into issues; outdated documentation, discussions you can’t overhear because they happened inside an office and someone forgot to send notes to a mailing list, information trapped inside the heads of your coworkers. Since you want to get stuff done, you’re going to start poking your teammates to get documentation out there, to talk on IRC, to better practice the open source way and enable you to work as a “community contributor” — and if they do, they’re not just enabling you, they’re enabling the entire community.

And that’s your deliverable for the first week. You’re going to try to get work done, and it’s great if you can, but you’re probably going to end up with a list of “things I can’t access from the community world and need in order to do my job.” Some of the things on this list may be legitimately internal; I’m willing to bet a bunch of them will be externalizable. It’s going to be frustrating, but again, that’s the point; you’re going to experience exactly the same pain community members face, so that you’ll know firsthand why it’s so important to open them up once you do get “inside.”

Oh. And you’ll get through the normal new-hire paperwork and training (finance/payroll, legal, company history/vision/mission, etc) because some of that is stuff companies are legally obligated to do (I think).

You’ll actually be allowed inside the office at the start of your second week, but only for 4 days a week. You can join internal mailing lists now, see private documents, that sort of thing. But you’re still considered to be in training. Here’s what that means.

  • You’ll still get ongoing modules on the culture/tools/practices of the open source way. Maybe you’ll run an IRC meeting and get feedback on your meeting-running skills. Maybe you’ll shadow a “community-experienced” coworker to see how he/she handles certain kinds of interactions and tools. Maybe you read a little writeup on the feature selection process in your open source community and then blog about it.
  • When you learn something, you’ll document it as a record of your learning. Publicly when possible, on a shared internal wiki (or something) when not.
  • That one day a week you’re not allowed in the office? That’s your “community shift.” You spend that shift helping community members get their stuff done. That list of “stuff I needed access to during my first week that wasn’t out in the open”? Fix it. Hang out on IRC and answer questions. Review patches. Reply to mailing list posts. Triage bugs and thank reporters. Do some wiki gardening. Go to an open source event. Screencast a tutorial. You get to expense lunch, and you have to write a blog post (that will go to your project’s Planet) about what you (and your team) have been up to for the week — the stuff you can talk about publicly, that is.

Practicing the open source way is something that takes time and experience because it’s a paradigm shift; it’s about how you see the world, the subtleties of how you interact with it, and its effects are usually not immediately apparent. That’s what you’ll learn here — it’s easy to tell you, but in order to observe it, you need to live it.

You’ll learn that “but I have nothing to contribute!” isn’t true (remember, this is for all new hires, not just engineers). You’ll learn that your beginner’s mind is sometimes your most valuable asset. You’ll learn how your work with the community can bring a lot of subtle little long-term leverage to your employer (and some not-so-subtle, huge, short-term wins, if you’re lucky). You’ll learn what it’s like to welcome new people to the community in turn, and how quickly even a newcomer can become an even newer newcomer’s “old hand” and mentor. You’ll learn how much energy can be unlocked when you release a blocker and enable community folks to do stuff they’re already rarin’ to do.

This phase lasts for… some defined period of time. 3 months, 6 months, “until the release cycle you joined during is finished,” whatever makes sense for that project. But at that point, you get your first review…

Your performance review is based on your public record. If it ain’t public, it don’t count. The things you’ll bring before your boss are things like your git commits, meetbot IRC logs, wiki edits, list threads… your public portfolio of open source participation. If you don’t have enough of a public record (where “enough” is some standard we define somehow — I told you this was off the top of my head) then you remain in “trainee” mode for another round.

Once you “graduate” from new-hire training, you’re no longer mandated to do “the open source way” training modules (or at least not constantly), and you’ll be allowed in the office anytime. Maybe your “community shift” will shorten (half a day instead of a full day every week?) or maybe, depending on your role, it might vanish (although I would love to see, for instance, the new lawyer or accountant continue to lurk in IRC, comment on mailing lists, and so forth). Maybe on-site workers will still be required to take one “remotee week” a year in order to remind them; remotees are already typically expected to make trips to headquarters to meet folks in person at least that often, so why not reverse it?

Again, raw thoughtdump. Plenty of holes, I’m sure. I’m curious what people think – especially people who have careers in open source, or want them. Is this an orientation you’d sign up for? Is this an orientation you’d like your coworkers to have?

by Mel at February 24, 2012 06:56 AM

February 23, 2012

Mitch Garnaat

Comprehensive List of AWS Endpoints

Note: AWS has now started their own list of API endpoints here. You may want to begin using that list as the definitive reference.



Another Note:  I am now collecting and publishing this information as JSON data. I am generating the HTML below from this JSON data.


Guy Rosen (@guyro on Twitter) recently asked about a comprehensive list of AWS service endpoints.  This information is notoriously difficult to find and seems to be spread across many different documents, release notes, etc.  Fortunately, I had most of this information already gathered together in the boto source code so I pulled that together and hunted down the stragglers and put this list together.

If you have any more information to provide or have corrections, etc. please comment below.  I'll try to keep this up to date over time.

Auto Scaling
  • us-east-1: autoscaling.us-east-1.amazonaws.com
  • us-west-1: autoscaling.us-west-1.amazonaws.com
  • us-west-2: autoscaling.us-west-2.amazonaws.com
  • sa-east-1: autoscaling.sa-east-1.amazonaws.com
  • eu-west-1: autoscaling.eu-west-1.amazonaws.com
  • ap-southeast-1: autoscaling.ap-southeast-1.amazonaws.com
  • ap-northeast-1: autoscaling.ap-northeast-1.amazonaws.com
CloudFormation
  • us-east-1: cloudformation.us-east-1.amazonaws.com
  • us-west-1: cloudformation.us-west-1.amazonaws.com
  • us-west-2: cloudformation.us-west-2.amazonaws.com
  • sa-east-1: cloudformation.sa-east-1.amazonaws.com
  • eu-west-1: cloudformation.eu-west-1.amazonaws.com
  • ap-southeast-1: cloudformation.ap-southeast-1.amazonaws.com
  • ap-northeast-1: cloudformation.ap-northeast-1.amazonaws.com
CloudFront
  • universal: cloudfront.amazonaws.com
CloudWatch
  • us-east-1: monitoring.us-east-1.amazonaws.com
  • us-west-1: monitoring.us-west-1.amazonaws.com
  • us-west-2: monitoring.us-west-2.amazonaws.com
  • sa-east-1: monitoring.sa-east-1.amazonaws.com
  • eu-west-1: monitoring.eu-west-1.amazonaws.com
  • ap-southeast-1: monitoring.ap-southeast-1.amazonaws.com
  • ap-northeast-1: monitoring.ap-northeast-1.amazonaws.com
DevPay
  • universal: ls.amazonaws.com
DynamoDB
  • us-east-1: dynamodb.us-east-1.amazonaws.com
ElastiCache
  • us-east-1: elasticache.us-east-1.amazonaws.com
  • us-west-1: elasticache.us-west-1.amazonaws.com
  • us-west-2: elasticache.us-west-2.amazonaws.com
  • sa-east-1: elasticache.sa-east-1.amazonaws.com
  • eu-west-1: elasticache.eu-west-1.amazonaws.com
  • ap-southeast-1: elasticache.ap-southeast-1.amazonaws.com
  • ap-northeast-1: elasticache.ap-northeast-1.amazonaws.com
Elastic Beanstalk
  • us-east-1: elasticbeanstalk.us-east-1.amazonaws.com
Elastic Compute Cloud
  • us-east-1: ec2.us-east-1.amazonaws.com
  • us-west-1: ec2.us-west-1.amazonaws.com
  • us-west-2: ec2.us-west-2.amazonaws.com
  • sa-east-1: ec2.sa-east-1.amazonaws.com
  • eu-west-1: ec2.eu-west-1.amazonaws.com
  • ap-southeast-1: ec2.ap-southeast-1.amazonaws.com
  • ap-northeast-1: ec2.ap-northeast-1.amazonaws.com
Elastic Load Balancing
  • us-east-1: elasticloadbalancing.us-east-1.amazonaws.com
  • us-west-1: elasticloadbalancing.us-west-1.amazonaws.com
  • us-west-2: elasticloadbalancing.us-west-2.amazonaws.com
  • sa-east-1: elasticloadbalancing.sa-east-1.amazonaws.com
  • eu-west-1: elasticloadbalancing.eu-west-1.amazonaws.com
  • ap-southeast-1: elasticloadbalancing.ap-southeast-1.amazonaws.com
  • ap-northeast-1: elasticloadbalancing.ap-northeast-1.amazonaws.com
Elastic Map Reduce
  • us-east-1: elasticmapreduce.us-east-1.amazonaws.com
  • us-west-1: elasticmapreduce.us-west-1.amazonaws.com
  • us-west-2: elasticmapreduce.us-west-2.amazonaws.com
  • sa-east-1: elasticmapreduce.sa-east-1.amazonaws.com
  • eu-west-1: elasticmapreduce.eu-west-1.amazonaws.com
  • ap-southeast-1: elasticmapreduce.ap-southeast-1.amazonaws.com
  • ap-northeast-1: elasticmapreduce.ap-northeast-1.amazonaws.com
Flexible Payment Service
  • sandbox: authorize.payments-sandbox.amazon.com/cobranded-ui/actions/start
  • production: authorize.payments.amazon.com/cobranded-ui/actions/start
  • sandbox: fps.sandbox.amazonaws.com
  • production: fps.amazonaws.com
Identity & Access Management
  • universal: iam.amazonaws.com
Import/Export
  • universal: importexport.amazonaws.com
Mechanical Turk
  • universal: mechanicalturk.amazonaws.com
Relational Data Service
  • us-east-1: rds.us-east-1.amazonaws.com
  • us-west-1: rds.us-west-1.amazonaws.com
  • us-west-2: rds.us-west-2.amazonaws.com
  • sa-east-1: rds.sa-east-1.amazonaws.com
  • eu-west-1: rds.eu-west-1.amazonaws.com
  • ap-southeast-1: rds.ap-southeast-1.amazonaws.com
  • ap-northeast-1: rds.ap-northeast-1.amazonaws.com
Route 53
  • universal: route53.amazonaws.com
Security Token Service
  • universal: sts.amazonaws.com
Simple Email Service
  • us-east-1: email.us-east-1.amazonaws.com
Simple Notification Service
  • us-east-1: sns.us-east-1.amazonaws.com
  • us-west-1: sns.us-west-1.amazonaws.com
  • us-west-2: sns.us-west-2.amazonaws.com
  • sa-east-1: sns.sa-east-1.amazonaws.com
  • eu-west-1: sns.eu-west-1.amazonaws.com
  • ap-southeast-1: sns.ap-southeast-1.amazonaws.com
  • ap-northeast-1: sns.ap-northeast-1.amazonaws.com
Simple Queue Service
  • us-east-1: sqs.us-east-1.amazonaws.com
  • us-west-1: sqs.us-west-1.amazonaws.com
  • us-west-2: sqs.us-west-2.amazonaws.com
  • sa-east-1: sqs.sa-east-1.amazonaws.com
  • eu-west-1: sqs.eu-west-1.amazonaws.com
  • ap-southeast-1: sqs.ap-southeast-1.amazonaws.com
  • ap-northeast-1: sqs.ap-northeast-1.amazonaws.com
Simple Storage Service
  • : s3.amazonaws.com
  • us-west-1: s3-us-west-1.amazonaws.com
  • us-west-2: s3-us-west-2.amazonaws.com
  • sa-east-1: s3.sa-east-1.amazonaws.com
  • eu-west-1: s3-eu-west-1.amazonaws.com
  • ap-southeast-1: s3-ap-southeast-1.amazonaws.com
  • ap-northeast-1: s3-ap-northeast-1.amazonaws.com
SimpleDB
  • us-east-1: sdb.amazonaws.com
  • us-west-1: sdb.us-west-1.amazonaws.com
  • us-west-2: sdb.us-west-2.amazonaws.com
  • sa-east-1: sdb.sa-east-1.amazonaws.com
  • eu-west-1: sdb.eu-west-1.amazonaws.com
  • ap-southeast-1: sdb.ap-southeast-1.amazonaws.com
  • ap-northeast-1: sdb.ap-northeast-1.amazonaws.com
Virtual Private Cloud
  • us-east-1: ec2.us-east-1.amazonaws.com
  • us-west-1: ec2.us-west-1.amazonaws.com
  • us-west-2: ec2.us-west-2.amazonaws.com
  • sa-east-1: vpc.sa-east-1.amazonaws.com
  • eu-west-1: ec2.eu-west-1.amazonaws.com
  • ap-southeast-1: ec2.ap-southeast-1.amazonaws.com
  • ap-northeast-1: ec2.ap-northeast-1.amazonaws.com

by Mitch Garnaat (noreply@blogger.com) at February 23, 2012 03:09 PM