Jenkins my Gitorious with Puppet and Spacewalk

Imagine that you work at Go Daddy and you’re starting a new project to build a multi-tier web application. This is no lightweight system. It incorporates billing, control panels, application servers, special function services, nosql, and a database.

Your Goals:

  • No snowflakes
  • Rapid and robust development and deployment model
  • Working model as soon as possible

You heard Spacewalk is the corporate standard for Patch management. Puppet is the corporate configuration management system. Jenkins is the standard for build automation. And the in-house Gitorious safely stores the application source code and the build and deploy automation code.

This is exciting and scary at the same time. You have four new systems to learn while being expected to hit milestones on your projects.

Luckily, Go Daddy already has in-house versions of Spacewalk, Puppet, Jenkins, and Gitorious. You don’t have to build any of these from the ground up; you only need to learn how to use them, accelerate development cycles, improve consistency, and meet your project deadlines. As it turns out, it’s a well thought out and simple process.

Spacewalk
There are Spacewalk proxies in all Go Daddy network environments. You run a command on each server to register with Spacewalk. Presto! That was easy. Now you can view all servers in your Development, Test, and Production environments in the Spacewalk GUI. You can group them by role, define packages by role, reconcile differences, and update out-of-date packages. Super awesome! Now, there are no more snowflake,s in terms of packages and versions, on your servers.

Add a little Jenkins and Gitorious
The Go Daddy Jenkins system automates builds and facilitates pushing releases to Test, Staging, and Production. You setup jobs in Jenkins to read your Gitorious source code repo to build RPMs and push to the Spacewalk Yum repos. Common deployment steps are saved into Jenkins jobs, which interface with the Spacewalk API to execute commands on remote servers.

Throw in some Puppet
What Puppet does is makes configuration blueprints for the servers it manages. Puppet clients live on every server and connect to the centralized Puppet master to ask, “What’s my configuration blueprint?” Puppet manages your configuration files, ensures the correct packages are installed, and that specified services are running (or not).

Puppet manifests are stored in Gitorious. This makes configuration changes a snap. If you want to change a configuration value in production, follow this simple process:

  1. Clone the Gitorious repo.
  2. Edit the configuration file.
  3. Commit and push to origin.
  4. Merge into the target environment branch (i.e. production).
  5. Run puppetd on target servers.

It’s simple, right? And, you can put non-puppet-masters in charge of making these changes. Developers are not admins on the Puppet system, but they can control the configuration of their applications.

Using this combination of Spacewalk, Gitorious, Jenkins, and Puppet, you have attained your goals of no snowflake servers, and you have a robust and fast development and deployment model. By using Go Daddy-supplied internal services, you were up and running fast. Now, you can focus on developing an innovative, feature-rich application; you know? The main point of your project!

David leads the research arm of the Chief Technology Office as our Chief Scientist and is responsible for researching new technologies to enhance and expand the Go Daddy product portfolio. Since joining Go Daddy in 2002 as a software developer, David has held several development positions including Dedicated/Virtual Dedicated Hosting Team Manager, Architect, Sr. VP of Product Development, Chief Technology Officer, and now Chief Scientist. Connect with David on Google+

Got something to say? Go for it!

 
Traffic Log Image