on-demand continuous integration with jenkins, jclouds, and cloudstack

23
Jenkins, jclouds, and CloudStack David Nalley @ke4qqq [email protected]

Upload: ke4qqq

Post on 17-Aug-2015

10 views

Category:

Technology


0 download

TRANSCRIPT

Jenkins, jclouds, and CloudStackDavid Nalley @ke4qqq [email protected]

#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

Background: Jenkins

‘Continuous Integration Server’

Formerly Hudson – community forked

Written in Java

MIT-LicensedLots of plugins

Jenkins + jclouds + Centos + CloudStack

Background: Apache jclouds

Cloud Abstraction Library

Written in Java

ASLv2 License

Jenkins + jclouds + Centos + CloudStack

Background: Apache CloudStack

Formerly from Cloud.comCompute- focused IaaS management solution.

Started in 2008

Now a top level project at the ASF

Written in Java

ASLv2

Jenkins + jclouds + Centos + CloudStack

The Problem

Lots of different testing needs – multiple platforms, multiple versions, multiple versions of software.

Jenkins + jclouds + Centos + CloudStack

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

The transition for monolith to scalable.

Jenkins + jclouds + Centos + CloudStack

Where we were

Dedicated Jenkins master

Esoteric things had VMs

~30 dedicated machines, strewn across multiple datacenters.

Jenkins + jclouds + Centos + CloudStack

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

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

How you plan to use Cloud

Server huggers wanted to use fixed VMs

(deploy fixed machines)

Jenkins + jclouds + Centos + CloudStack

How you want to use cloud

Fresh, dynamically provisioned VM for each build

Jenkins + jclouds + Centos + CloudStack

The right answer

Jenkins + jclouds + Centos + CloudStack

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

Make it all work

Jenkins + jclouds + Centos + CloudStack

Install the jclouds plugin

Jenkins + jclouds + Centos + CloudStack

Choose a cloud provider

Jenkins + jclouds + Centos + CloudStack

Configure

Jenkins + jclouds + Centos + CloudStack

Configure

Jenkins + jclouds + Centos + CloudStack

Profit?

Jenkins + jclouds + Centos + CloudStack

Bonus

Jenkins + jclouds + Centos + CloudStack

Get Involved

Web: http://cloudstack.apache.org/

Mailing Lists: cloudstack.apache.org/mailing-lists.html

IRC:  irc.freenode.net: 6667 #cloudstack

Twitter:  @cloudstack

LinkedIn: www.linkedin.com/groups/CloudStack-Users-Group-3144859

If it didn’t happen on the mailing list, it didn’t happen.

Jenkins + jclouds + Centos + CloudStack