 Good afternoon. My name is Jimmy Ray. I'm a CloudBees Solutions Architect, and today we're going to talk about cloud bursting into an open stack cloud. I'm using Rackspace for this demo. But essentially, we're looking at launching Rackspace servers using the Apache J Clouds API, the J Clouds plug-in with Jenkins. Some information about CloudBees, who we are. We are the Jenkins experts. Continuous integration and continuous delivery underpinned by Jenkins. We optimize Jenkins for your enterprise. We offer 20 enterprise plug-ins plus support for the entire complement of open source plug-ins and Jenkins. That's about 860 plug-ins that we support for you. Our offerings span Jenkins Enterprise and Jenkins Operations Center on-premise. We also offer Devit Cloud, which is approximately 2,500 Jenkins servers up in our cloud, platform as a service for development. And then we also offer a hybrid model where you can both use our Devit Cloud Jenkins and then also run your builds locally inside your own firewall. Jenkins Operations Center by CloudBees brings you professional support that you already know about Jenkins Enterprise. It also brings you scalability. You can now share resources between Jenkins Enterprise, multiple Jenkins Enterprise servers connected to the Operations Center. So shared slaves, shared security set up, single sign on. You have a centralized dashboard to manage your multiple Jenkins servers. You can ensure security compliance, ensure plug-in control via what version of plug-ins they're allowed to use, what plug-ins they're allowed to use, what version of the core Jenkins they're allowed to download and install. Now you have an enterprise control over your multiple Jenkins servers. And then, of course, it's all underpinned by Jenkins Enterprise, which is, again, the professional support that you've come to know and love, the high availability for Jenkins in an enterprise setting, and then plug-ins for large installations, security, and optimized utilization. So as far as Devit Cloud is concerned, this is where you would use Jenkins in the cloud to do your development on our platform as a service using the plug-ins that you're already using on-premise, open-source plug-ins, as well as our plug-ins in the cloud. It's elastic and it's scalable. We manage Jenkins for you. You manage your configurations. The headache of managing the servers in an infrastructure is gone. The hybrid model, it allows you to manage Jenkins in the cloud, but then run your builds locally in case there are resources that you just can't get into the cloud. So again, managing in the cloud but running locally, the best of both worlds. Additional services that we offer, certified training, Jenkins consulting through some of our partners, the Jenkins newsletter, as well as the Jenkins user conferences which are coming up shortly in June. So Jenkins Enterprise, basically it is Jenkins open-source, wrapped inside Jenkins professional support with additional Jenkins enterprise plug-ins to allow you to move your Jenkins across the enterprise in a controlled fashion. And this is just a list of our Jenkins proprietary enterprise plug-ins. If you've got any questions about these plug-ins, please see me at booth E32. Be happy to talk to you about some of these plug-ins. What you're going to see here today, you're going to see Jenkins Enterprise by CloudBees. You're going to see Jenkins bursting into a Rackspace cloud using instrumentation provided by JCloud's API and the JCloud's plug-in. You're going to see dynamic horizontal scaling across cloud environments for on-the-fly increased capacity. So about the demo, I'm using Jenkins Enterprise by CloudBees. I'm using the open-source Jenkins Apache JCloud's plug-in. For those of you who don't know, Apache JClouds is an open-source API to instrument and control multiple cloud environments. My open-stack environment is up inside Rackspace. I'm using Rackspace cloud for this. I'm building with Java and Maven. And when I start my builds, they're going to trigger a new slave to be instantiated up inside the Rackspace cloud. And then the builds will take place up there, also installing Java and Maven on the fly. So let's take a look at what we got going on here. Make sure that I'm logged into my Rackspace. I have no servers up and running. I have Jenkins Enterprise right here. For those of you who have not seen it, if you see these folders here, this is one of our proprietary plug-ins that we've also open-sourced to allow you to organize your jobs in a better fashion than instead of just views, you can organize them in folders. Now what I'm using is the JCloud's plug-in, which allows me to create cloud environments on the fly. So if I go into manage Jenkins and look at the configuration of the system here, what I've done is I've used the JCloud's plug-in to create a Rackspace cloud that's going to have a max two instances and a retention time of five minutes. And then I'm going to call it my open-stack slave so that my jobs will go there and execute. Once I've configured that, then I also configure inside the configuration an auto installer. So in case I don't have Java up there, Jenkins will push Java to it. And if I need Maven, Jenkins will also push Maven out there as well. You got to tell it where to download it from. So I have this build and coincidentally enough it's called Hello World Rackspace. Now I'm going to go ahead and kick it off. And the first thing it's going to do is it's going to sit there and languish because it doesn't have any executors to run. So now Jenkins is in the background contacting Rackspace using the API credentials that I gave it. And it's talking to Rackspace, hey, set me up a server, I want to use Ubuntu. And as soon as that server is set up, push out the Jenkins slave information to it, including Java or Maven if I need it. Yeah, meanwhile, and this may take a while, I've got a hardwired internet connection, but I don't know the speed of which that's going to run compared to wireless, should be really fast. But go ahead and look at the log and see what it's doing. It's out there reaching out to Rackspace, trying to provision a server right now. It's going to take a little bit to provision that server. Actually the server is up and running so the wired is really fast. The server, the slave itself will start to show up down here. Right now since the server is up and running, then it's going to get the identity of that server and then start to push out the Jenkins slave to it. So in the interest of time, while that thing is building up and spinning out a new slave, I can go out and look at a previous build to give you an idea of what this thing is going to do. So the first thing it does is it goes out there and it instantiates that slave. And as soon as that slave is up and running, then it hands it over to the build. The Jenkins job kicks off and says, hey, I need Java, I don't have Java out here. So I've already pre-staged Java up in a file container, up in Rackspace. So it's going to use that stage of Java, bring it down, install it in a temp directory. And then it's going to come down, start building Maven. Looking at the project, it's a Maven project. So hey, I also need Maven. So it's going to unpack Maven and put that out there. I pulled that down from Apache. Once everything is up there, then it's going to inspect the palms and then start building my Maven project across the internet and in Rackspace's open stack environment. Let's go back and look and see. Now it started building. The slave is up and running and I'm building. The same thing that I told you it was doing before, it's now trying to install Java. So it's pulling Java down from the Rackspace file container and then it's pushing it out to the temp directory. So it's creating, not only instantiating the server on the fly from inside Rackspace, but it's also on the fly, putting my Java environment in there, putting my Maven environment in there and then running the build. At the end of the build, it will take my binary that I've created with the Maven project, copy it back over to Jenkins, stop the slave or hold the slave up for about five minutes in case I have another build and then once five minutes is over, it'll shut that slave down. Now this takes a little while installing Java. What it also does is also running all my unit tests. And the last thing I do, most of my Maven projects, I run a dependency tree to make sure that what I think I've loaded in the Maven dependencies is what is actually being built. A lot of times that's not the case. So let's see where we're at. Now it started building. So we got Java and Maven up there. It reached out to my subversion repository up in the cloud, v's cloud, where I have my code, pulled down my code and started building. And now it's parsing the palms in order to finish the build. Now this plugin that I'm using, the Jclouds plugin, it wraps the Apache Jclouds API. It's a completely open source plugin. You can use it with, you know, I'm using it with a rack space, but you could use it with your own internal open stack cloud. You could use it with Amazon EC2 or other cloud providers. It's got a huge list of different clouds you can put out there. And what this does is it pushes that instrumentation of being able to control that cloud down to the Jenkins user or the Jenkins developer, let's say. Now the job is finishing up. And then inside the logs, it's going to go into a cleanup mode. And then it's doing the final Maven download before it pushes out the artifact, additional tests. To give you an idea, what this looks like from a Jenkins perspective, as far as slaves are concerned, I've got an open stack slave that I started as part of a triggered job. I can also start this slave manually by just clicking on this button here. I've got two slaves I could start with this configuration. So if I click the button right now, I'd start a completely different slave up. And it looks like I'm now idle on my slave. Yeah, my build is finished. It's got the Jenkins blue ball unless you've installed the green ball. So now you know that this Jenkins blue ball is a successful build. And again, now the server instance up in rack space is just sitting there waiting for me to push out another build to it, just in case. I've got it set to shut down after five minutes. So basically that's it, ladies and gentlemen. Cloud bursting into rack space with the J Clouds API and Jenkins. I got about a minute, 20 seconds. Any questions out there? No questions? Then I'll wrap up. What you saw was, oh, I'm sorry, the role-based access control to do access control. I don't have enough time for that, but E32 is right there. I'll be right there after the presentation. This is role-based access control inside the enterprise, Jenkins Enterprise. This allows you to layer over top of your Jenkins, a enterprise-ish security scheme that is brought in, connected to your external security realm like LDAP or Active Directory or OpenID. Again, I'm running out of time, 10 seconds. I will be able to show you more about this plugin and the other 20 plugins over there at E32. Thank you for your time.