Time is changing, so is technology. Infrastructure management of present days is nothing like it was just a decade ago. Every institution moves along with the current wave of technological revolution is looking to get involved with the five letter word: CLOUD.
Being someone who's in charge of a moderate sized infrastructure inside an institution, I too am caught in the tidal wave. After studying the use case that could benefit my infrastructure, I decided to roll my infrastructure over to OpenStack based environment.
OpenStack, the most popular open source cloud software suite, it has tons of features and great community support. Even though it provides detailed and thorough documentations, it can still be a bit overwhelming and chaotic for even the veteran sys admins who has been in the traditional infrastructure management.
This is the record my adventure along with the lessons I've learned during the quest of rolling my existing infrastructure from the old brick-and-mortar environment to OpenStack. Getting OpenStack up and running is actually pretty easy. But getting OpenStack to run the way you want it to actually takes some effort and understanding of how OpenStack works. Having gone through that entire process myself, I hope this adventure log could be somewhat of use to admins that are new to OpenStack and in the same boat as I was trying to roll the entire infrastructure over to OpenStack based environment.
First thing first, as much as I like Ubuntu based system, most of my servers are equipped with LSI controllers and it's a known fact that LSI doesn't play well with Ubuntu/Debian. So since I was rolling my infrastructure from a completely different platform (Solaris 10/11), I didn't quite have the urge to marry to one or another distro. After a brief uphill battle against getting LSI working on Ubuntu, I settled on CentOS/RHEL/Oracle/Scientific Linux. (Yes, I could probably have gotten LSI working on Ubuntu if I just spent a little time, but Ubuntu doesn't give me any significant advantage, nor do I want to run my entire production environment on a "hack"). So this adventure is all about running OpenStack on RHEL based systems.
Getting OpenStack up and running is fairly easy to do, thanks to RDO, the OpenStack distribution built specifically for RedHat based distros. Simply follow the Quick Start Guide, you'll get your all-in-one setup of OpenStack up and running in no time. You can play around with it to get familiar with its interface, api, and concept in general. When it comes to production environment however, the all-in-one mode is definitely not the preferred choice. Instead, you'd want to separate your controller node from your compute node, you'd probably want to do something like:
packstack --install-hosts=10.0.0.2,10.0.0.3 --os-quantum-install=n
- Controller node IP 10.0.0.2
- Compute node IP 10.0.0.3
Packstack would ssh to each IP as root (I'm a little annoyed by this, but since these machines will never host application, only VMs, I'll let it slide. If you disable ssh root login by default like I do, you can always just temporarily enable it and disable it later.)
While we're at it, might as well throw in the ntp setting:
packstack --install-hosts=10.0.0.2,10.0.0.3 --os-quantum-install=n --ntp-severs=pool.ntp.org
Allow the command run to completion, it should complete the single-host FlatDHCP setup (I'll explain that later) for one controller node (10.0.0.2) and one compute node (10.0.0.3).
It's preferable to run this on a minimal installed CentOS/RHEL/SL, previously installed Qpid or MySQL on the controller could cause some part of Puppet run to fail.
After installation completes, you'll get a file named keystonerc_admin in your /root which contains your admin password. You can now use it to log into the web interface running on your controller node's port 80 or just source it to play with commands.
Now the introduction to Grizzly (the codename for the current stable release as of this post is written) is complete. Next time we'll talk a little bit more about networking element in OpenStack so we can have a finalized packstack command.