Month: January 2016

Getting started with OneOps

January 28, 2016

OneOps is an opensource cloud application lifecycle management system that works with public and private cloud infrastructure providers. This means developers can write an application once and deploy the application in a high availability mode across hybrid multi cloud environments with auto-scaling and auto-healing features. OneOps is a very good tool not just for green field applications, but also for forklifting legacy applications to the cloud with relative ease.

OneOps is Apache 2 Licensed and is very recently released by WalmartLabs. In fact, Walmart Ecommerce actually runs on a large OpenStack private cloud and managed by OneOps.

OneOps currently supports: OpenStack, Rackspace Public cloud, AWS, and Microsoft Azure.

Getting started:
OneOne is a complicated piece of software with lots of components. In this first post, I will go through the process of getting a minimally functioning allinone OneOps cluster on a server and connect it to Rackspace cloud, and deploy a very simple sample app on it. The goal is to help get you started with the setup and get you playing with different components and the UI.

I will try to cover the more complex features in future posts e.g. multi-cloud, auto-scaling, auto-healing, monitoring, alerting, CI integration, etc.

OneOps has setup scripts to deploy an allinone cluster on a vagrant environment. I have tweaked the scripts a little bit so you can the scripts to deploy it outside of vagrant. Here I have a server on Rackspace cloud:

  • CentOs 6
  • 15GB RAM (8GB should work too)


yum -y update; yum -y install vim git
git clone
cd setup/vagrant
VAGRANT=false bash

At the end of it, if your install is successful, follow the instructions at the end of the run and hit port 3000 to get to the OneOps portal. Sign up for a new user and login.


Then, follow the instructions here to create organization and add cloud.

In my case, I created a “Blog Team” as an organization and “RAX-DFW” as my cloud choosing rackspace-dfw cloud from the dropdown of clouds. You can see the management location as:

This is the step which trips most people when they are getting started with their first OneOps cluster. Normally, when a cloud is first added, the admin should also create an inductor for that cloud, its the part in OneOps that actually talks to the different clouds.

cd /opt/oneops/inductor
inductor add

This step will ask a bunch of questions. Just accept the defaults except for the couple of questions below:

Queue location? /public/oneops/clouds/rackspace-dfw
What is the authorization key? rackspacesecretkey

Also, make sure you can connect to the cloud vms from the oneOps cluster. Use private_ip or public_ip accordingly.

What compute attribute to use for the ip to connect (if empty defaults to private_ip)?

In case you missed anything or anything changed, you can go to /opt/oneops/inductor/clouds-available/public.oneops.clouds.rackspace-dfw/conf/ and edit any values.

Add this line to the file so the inductor can talk to activemq over ssl:

vi /opt/oneops/inductor/clouds-available/public.oneops.clouds.rackspace-dfw/conf/vmargs

At this point, you should be able to restart the inductor and make sure its running.

inductor restart
inductor status
inductor tail

Add cloud services:
Now go back to the OneOps portal and add cloud services for Rackspace-dfw cloud that you created. You need tenant_id, username and apikey etc and add services like rackspace compute, loadbalancer, dns etc

For dns, if you don’t have a real registered domain, use can actually fake it with any domain name for testing. Eg.

Cloud DNS Id*: dfw

Deploying an app:
The UI isn’t really that friendly but follow the wizard at the top and these instructions  on getting started:
1. Create assembly
2. Create platform (Choose the apache pack from the list) and commit the design
3. Create environment and deploy to the cloud.

At the end of it, you should have apache deployed to Rackspace dfw. You can verify it by going to the ip of the apache server created by OneOps.