1. Jenkins, jclouds, CloudStack, and CentOS David Nalley
@ke4qqq [email protected] 10 November 2014
2. #whoami Recovering sysadmin Former server hugger, now cloud
addict Contributor to a few open source projects: Fedora, Zenoss,
CloudStack, jclouds VP, Infrastructure for the Apache Software
Foundation Employed by Citrix in the Open Source Business Office
Jenkins + jclouds + Centos + CloudStack
3. Background: Jenkins Continuous Integration Server Formerly
Hudson community forked Written in Java MIT-Licensed Lots of
plugins Jenkins + jclouds + Centos + CloudStack
4. Background: Apache jclouds Cloud Abstraction Library Written
in Java ASLv2 License Jenkins + jclouds + Centos + CloudStack
5. Background: Apache CloudStack Formerly from Cloud.com
Compute- focused IaaS management solution. Started in 2008 Now a
top level project at the ASF Written in Java ASLv2 Jenkins +
jclouds + Centos + CloudStack
6. The Problem Lots of different testing needs multiple
platforms, multiple versions, multiple versions of software.
Jenkins + jclouds + Centos + CloudStack
7. The Problem at scale We have nearly 200 software projects
each with their own set of needs, distinct platforms. Some want
CentOS 5, 6, or 7; others want OSX, Win 2012, Ubuntu, FreeBSD, or
Solaris. Demand varies widely projects getting closer to release
test more; some days we had hundreds of jobs in the queue, other
days we had 20 or 30 Jenkins + jclouds + Centos + CloudStack
8. The transition for monolith to scalable. Jenkins + jclouds +
Centos + CloudStack
9. Where we were Dedicated Jenkins master Esoteric things had
VMs ~30 dedicated machines, strewn across multiple datacenters.
Jenkins + jclouds + Centos + CloudStack
10. How we started our move Defining what a build slave needs
Make sure that Jenkins is working efficiently (Misconfigured jobs
are a huge drain) Adopted a LTS version of Jenkins Jenkins +
jclouds + Centos + CloudStack
11. Building images Packer building images Start with JeOS
declare everything else in puppet, run puppet as a job. Create a
jenkins job for this everytime a job changes rebuild, reupload.
Jenkins + jclouds + Centos + CloudStack
12. How you plan to use Cloud Server huggers wanted to use
fixed VMs (deploy fixed machines) Jenkins + jclouds + Centos +
CloudStack
13. How you want to use cloud Fresh, dynamically provisioned VM
for each build Jenkins + jclouds + Centos + CloudStack
14. The right answer Jenkins + jclouds + Centos +
CloudStack
15. The right answer (for us) Spin up build slaves in response
to demand. Leave the machine up for 30 minutes after demand
subsides to keep from flapping. Jenkins + jclouds + Centos +
CloudStack
16. Make it all work Jenkins + jclouds + Centos +
CloudStack