| Elastic Bamboo is now part of Bamboo 2.2 This page is now out of date. |
The Problem
Despite the simplicity of Bamboo's setup wizard, it still takes a little bit of work to set up an environment in which to run Bamboo: Hardware needs to be acquired, then you have to set up an operating system, a JDK, your builders and Bamboo itself. The same has to be repeated for every remote agent machine.
We can make this event simpler for people looking to evaluate and use Bamboo.
The Solution
- Create some Amazon Elastic Compute Cloud (EC2) images that let any customer or evaluator instantly start up a Bamboo server and any number of Bamboo remote agents in the EC2 cloud.
- Give the Bamboo server the ability to create Remote Agents in the EC2 cloud.
Demonstration
I set things up so that, with a single command, we can start up a Bamboo server in the EC2 cloud:
scharers:~/Desktop ahempel$ ebrun RESERVATION r-5028ec39 590748183926 default INSTANCE i-ee3ef087 ami-a655b0cf pending 0 m1.small 2008-05-19T01:10:31+0000 us-east-1c aki-a71cf9ce ari-a51cf9cc
A couple of minutes later, it's up and running, and has a host name assigned:
scharers:~/Desktop ahempel$ ec2din RESERVATION r-5028ec39 590748183926 default INSTANCE i-ee3ef087 ami-a655b0cf ec2-75-101-254-117.compute-1.amazonaws.com domU-12-31-39-00-C1-45.compute-1.internal running 0 m1.small 2008-05-19T01:10:31+0000 us-east-1c aki-a71cf9ce ari-a51cf9cc
A DNS CNAME record can be used to assign a host name of the customer's choice (I used elasticbamboo.adrian.hempel.name).
I just use my browser to go to my newly-assigned URL, and I'm greeted by the Bamboo setup wizard:
| We could make this even easier, by injecting a license directly into the image as it starts up, and pre-configuring the Bamboo server, removing the need to use the setup wizard at all! |
The administration pages show that the Bamboo server has been pre-configured with a JDK and a number of builders:
Creating elastic agents in the cloud is as simple as telling Bamboo how many I need:
A couple of minutes later, and they're all online and ready to build:

| Again, we could make this step faster, by removing Bamboo 2.0's remote classloading feature. In a regular deployment of Bamboo, this feature removes the need to manually upgrade remote agents when the Bamboo server is upgraded. In Elastic Bamboo, this isn't a concern, as upgrading remote agents is simply a matter of upgrading a single EC2 image. |
The property page for each agent shows that they are pre-configured with a JDK and a number of builders:
Future Potential
One of the challenges we face if we're to include Bamboo in our JIRA Studio hosted suite, is how to accommodate resource-intensive builds without impacting the performance of the other JIRA Studio applications. Coupling Bamboo 2.0's distributed builds with Amazon's EC2 could be the answer to this.
EC2-hosted remote agents could also be used to provide temporary Remote Agent capacity to an existing Bamboo server, to deal with peaks in demand. The Bamboo server could even automatically create and destroy remote agents as demand dictates.
I'm planning on pursuing these ideas further in Atlassian's 20% time. Stay tuned!
