Skip to content

Instantly share code, notes, and snippets.

@s3u
Last active December 27, 2015 15:29
Show Gist options
  • Save s3u/7348242 to your computer and use it in GitHub Desktop.
Save s3u/7348242 to your computer and use it in GitHub Desktop.

OpenStack

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.

Objectives

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.

Requirements

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.

Required Tools

dev

  1. Git for version control.
  2. Python 2.7
  3. Be able to create Python virtual environments
  4. Vagrant
  5. 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:

  1. 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 Vagrantfile.
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
  1. Login to the virtual machine.
  2. Go go DevStack and follow the instructions to setup OpenStack using the stable/havana branch of devstack. DevStack is a small automation engine to setup a working OpenStack deployment. To setup devstack, you will be running stack.sh.

Further instructions to accomplish short term goals will be provided prior to the kickoff.

Project Success

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.

@mhkane
Copy link

mhkane commented Feb 9, 2014

Is this project open to the open source community or only for academic purpose ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment