As most of you may already know, here at Cloudbase Solutions we love to bridge the gap between Microsoft Windows and open source technologies, starting with OpenStack.
Recently we’ve had the opportunity to get our hands on some pretty amazing open source hardware. We are talking about serious hardware that would make any cloud deployer sigh with happiness. Enter, Microsoft’s Open CloudServer OCS V2.
Here’s a very nice slide deck with additional details from a Microsoft Open Compute presentation.
One interesting aspect of this chassis design is the fact that BMC features are available through a management component instead of the individual blades. The chassis manager is a separate board which can run Windows Server, like Microsoft does in its datacenters, or any other OS. The main goal of this component is to expose a set of RESTful API that replace what IPMI and other BMC features do in traditional server hardware. The board sports also a TPM to allow SecureBoot and thus providing enhanced security on the board’s OS image itself. The code that provides this feature has been open sourced by Microsoft.
Come to visit us at the OCP Summit 2015 in San Jose to see this hardware live!
MAAS and Juju
Some time ago we started looking into automated deployment systems. The goal was to find one that would fit into a simple set of requirements:
- Open source
- Support for Linux and Windows
- Easy to use
- Deployments had to be repeatable with predictable results
- Good community support
- Bare metal deployments support
As it turns out, there are a number of amazing open source projects that fit into most (if not all) of our requirements. There is Puppet , SaltStack that can orchestrate deployments of OpenStack on already installed machines, and with some 3rd party components can even do bare metal. There is Crowbar that can both deploy bare metal and orchestrate an OpenStack install.
The projects that eventually caught our eye were actually MAAS (bare metal deployment) and Juju (orchestration). These two projects offer a clear separation of concerns, and they are tightly integrated. We simply loved how you could just take an archive containing a Juju charm, drop it in a gorgeous UI, and with just a few simple configuration options to edit, deploy an entire OpenStack cloud becomes a piece of cake. At that time there was no Windows support in either MAAS or Juju so we decided to provide the required integration, which turned out into a great partnership between Cloudbase Solutions and Canonical. Starting with version 1.16 of MAAS and version 1.21 of Juju, you can now deploy Windows workloads as well.
MAAS and OCS integration
Getting back to the Open Compute topic introduced at the beginning of this article, Canonical and Microsoft announced the support for MAAS based deployments on OCS hardware. This means that now MAAS is able to interact with the chassis manager to perform power operations on the blades, allowing the same bare metal deployment scenarios that you’d expect on traditional server hardware.
OpenStack with Hyper-V on OCS using MAAS
Now is where things become interesting. How do we deploy an entire OpenStack cloud on one or more OCS chassis in a fully automated way using MAAS and Juju?
One of our more recent projects, offers to OpenStack users the possibility to deploy OpenStack, hiding all the existing complexity that notoriously brought some bad rap on OpenStack. The project is called V-Magine.
V-Magine includes a portable command line tool that can be executed from any media, including a simple USB drive and integrates DHCP, TFTP and HTTP services to allow fast automated OS deployments (currently Ubuntu and CentOS) via PXE on any hardware.
Thanks to this tool and an additional set of fully automated Python scripts dubbed AutoMaas (that we’ll introduce in a forthcoming blog post), we can deploy MAAS, Juju and OpenStack on an entire OCS chassis in a couple of hours without any human intervention. More on this later!
Here is a list of the OpenStack components and related services that we deploy:
- Active directory
- Keystone (with AD integration)
- Nova (KVM, Hyper-V)
- Open vSwitch on Hyper-V
- Neutron (using Open vSwitch)
- Cinder (Windows Server running Cinder with SMB3 support)
Some interesting aspects of this OpenStack deployment:
- We are deploying Open vSwitch on Hyper-V. Yes, it works as you’d expect and it retains the same CLI we are all familiar with on Linux systems, supporting VXLAN, NVGRE or VLAN tenant based network isolation.
- We are using Active Directory as a credential storage for keystone
- Cinder Volume is running on top of Microsoft Windows Storage Server 2012 R2, using our SMB3 driver.
- Windows clustering for full HA (coming soon)
The Active Directory integration allowed us to create relationships between active directory and various OpenStack components, enabling live migration in nova-hyperv and user authentication against AD.
Here’s a sample Active Directory users view side by side with a keystone user-list output.
Once your OpenStack cloud is ready, you can use Juju or Heat to deploy any type of Linux or Windows workload on it, including our charms for IIS, Active Directory, SQL Server, SharePoint, Exchange and more.
We still find it amazing to see how everything we’ve worked on for the paste few years if coming together so harmoniously. Each piece of technology is amazing by itself, but when you bring them together you get an even better result: multiple platforms working together to create tomorrow’s clouds.
The glue bringing all this together are MAAS, Juju and V-Magine. Stay tuned for part 2 of this post, where we will detail how we bootstrapped everything from scratch!