OpenStack is one of the largest and leading open source projects to build and operate public or private clouds. OpenStack provides a set of APIs for provisioning and managing basic cloud constructs like compute (virtual machines), network (shared or private networks, floating IPs, load balancers etc.), and storage (block and object storage) along with additional layers to build and operate on-demand self-service cloud platforms. OpenStack is used now-a-days by several public cloud providers such as Rackspace, HP as well as by many organizations to provide on-premise private clouds.
Contributing to this project will give developers, first, an opportunity to learn the fundamental building blocks of cloud, the challenges of operating at scale, and second, how to collaborate in a distributed setup to build open source software.
Short term objective of this project is to to setup a working OpenStack deployment on a virtual machine and then use OpenStack APIs or command-line interfaces to create virtual machines, attach storage to them, use object storage, create load balancers etc. Once students become familiar with these workflows, we will evolve the objectives to develop tools to help operate OpenStack, or implement schedulers to efficiently schedule resources on OpenStack. Some examples include
- Develop tools to help monitor the health of an OpenStack cloud by emulating typical user flows and assert the outcome of those actions with the expected.
- Add features to some components like Keystone
- Develop tools to reclaim unused resources
- Develop schedulers to support multiple classes compute flavors
- Develop tools to gather metrics from OpenStack
We will fine tune the goals depending on the interest of the students and the rate of progress. Each participant will have concrete measurable outcomes set.
Students must be able to program in Python 2.7.x or later on Ubuntu 12.04 or later. Each student must be familiar with setting up VirtualBox or vagrant.
Familiarity with capabilities of public clouds like AWS or Rackspace is encouraged.
- Git for version control.
- Python 2.7
- Be able to create Python virtual environments
- MacBook Pro with at least 8GB RAM is recommended. If you do not have access, please let us know and we will work on providing access to a public cloud.
What should I start working on?
To begin with, setup the following:
- Set up a Ubuntu 12.04 box using Vagrant. This creates a virtual machine. In order to be able to access OpenStack services from your Mac, include the following in your
Vagrant::Config.run do |config| config.vm.forward_port 80, 9090 config.vm.forward_port 5000, 5000 config.vm.forward_port 5672, 5672 config.vm.forward_port 3333, 3333 config.vm.forward_port 8773, 8773 config.vm.forward_port 8774, 8774 config.vm.forward_port 8776, 8776 config.vm.forward_port 8777, 8777 config.vm.forward_port 9191, 9191 config.vm.forward_port 9292, 9292 config.vm.forward_port 35357, 35357 config.vm.forward_port 40529, 40529 config.vm.forward_port 47117, 47117 config.vm.forward_port 55977, 55977 config.vm.customize ["modifyvm", :id, "--memory", 8192] end
- Login to the virtual machine.
- Go go DevStack and follow the instructions to setup OpenStack using the
stable/havanabranch of devstack. DevStack is a small automation engine to setup a working OpenStack deployment. To setup devstack, you will be running
Further instructions to accomplish short term goals will be provided prior to the kickoff.
OpenStack is a large distributed system with a large code base. The instructor will provide conceptual overview, but success of this project requires each student to get up to speed with cloud fundamentals and principles, and willingness to jump into any component to understand and troubleshoot.
About The Instructor
My name is Subbu Allamaraju as I work at eBay Inc as the Chief Engineer of the cloud engineering organization where my team builds and operates a multi-tenant private cloud.
For one on one communication, I prefer to use Skype. We will also have private mailing list for all the participants.