You’re already using open-source management tools for traditional on-premises systems. But if you’re moving workloads to the cloud, you’re going to need open-source analogs, and chances are that your existing tools don’t support that. So which tools are worth considering, and how do you choose?
The place to start is with a clear definition of the term “management tools.” I am talking about open-source tools focused on the management of resources: storage, compute, machine instances, and even containers. Cloud-compatible tools based on existing on-premises, open-source toolsets are beginning to appear, and their respective communities are ready to take them to the next level.
Choosing the right open-source tool
Each of the seven open-source cloud management technologies I reference below has its own approach to cloud management. While I’ve recommended each of the tools to my clients and used them all in my cloud technology consulting work, my recommendations for each client differed.
The fact is, there’s no single, one-size-fits-all solution. Some, such as the container management tools, are very application-oriented. Others are DevOps-oriented or just focus on cloud and non-cloud infrastructure. You’ll need to do some homework to know what’s right for you. Specifically, you need to understand your own requirements in detail before you approach this problem.
And for some situations, open source may not be the way to go at all: A proprietary management tool just might be the better choice. Although you must purchase commercial tools, they could cost less over the long run. Consider fit-to-purpose and whether a given tool matches up with your requirements. For example, my clients that use many different types of clouds have found that open-source tools are not a good fit because those tools typically focus on a single cloud type, such as OpenStack. Other clients already have made an investment in proprietary tools that they use for traditional systems and find it most cost-effective to use those for the cloud platforms as well.
With those caveats, here’s my short list of the top seven open-source cloud management tools that you should consider.
1. Walmart’s OneOps
OneOps, released by Walmart Labs under the Apache 2.0 license, is built around the concept of DevOps, or a “cloud management and application lifecycle management platform,” as Walmart describes it. As such, it competes directly with Chef, Puppet, Ansible, and similar technologies.
OneOps works with all types of clouds—public, private, and hybrid—that leverage OpenStack cloud environments. But it also works with Microsoft Azure and Amazon Web Services (AWS). It can automatically configure, scale, and repair applications that exist across multiple cloud providers.
The OneOps platform can create and maintain virtual machine instances, as well as deal with security settings. However, the best feature is its ability to move applications from one cloud to another, on demand, in order to find the cloud hosting environment with the lowest cost and best features. This puts it in line with similar, proprietary tools on the market. It’s worth considering if you’re leveraging multi-cloud as your cloud architecture of choice.
2. CoreOS’s fleet
CoreOS, Google, and Docker offer management tools that let people who deploy containers effectively manage a bunch of containers running in a cloud. CoreOS’s answer to this is fleet. Fleet is designed to treat a cluster of CoreOS servers as a single unit, a paradigm that’s shared with Google’s Kubernetes and Docker’s Swarm.
A cross-cluster key/value store deals with device management, and supports service discovery called etcd. If a node fails, etcd can restore it on-the-fly using CoreOS’s automated update service. This tool supports Docker as well as CoreOS’s own container platform.
3. Docker’s Machine, Compose, and Swarm
Docker is by far the most popular open-source container technology and is rapidly becoming the gold standard as a platform for container development and deployment.
On the container management side, Docker provides Machine, Swarm, and Compose, all three open source.
Machine lets you automate the provisioning of Docker containers and provides integration with Apache Mesos for higher-scale capabilities.
Swarm can deal with the cluster management problem, including scheduling. Like Kubernetes and fleet, it lets you build a pool of container hosts so that you can scale your container-enabled applications.
Finally, Compose defines application dependencies, which lets you link containers together so that they function as a group. It can work across platforms, allowing you to manage widely distributed container clusters.
4. Google’s Kubernetes
Google’s Kubernetes provides many of the same features as fleet and Swarm, but it’s also the leader in the container management space on public and private clouds. Kubernetes supports an open-source framework that has been adopted by Microsoft and many others. Google’s technology is designed to manage and run Docker or CoreOS containers, enabling you to distribute your containers across a cluster of cloud machines, and it deals with the scaling and service management issues for you.
Kubernetes powers Google’s own Container Engine and also runs on a range of other cloud and data center services, including AWS and Azure, as well as vSphere and Mesos. Containers can be either loosely or tightly coupled, and the technology supports rapid deployment of applications to a cluster, giving you an endpoint for a DevOps process.
5. Apache Mesos
Apache Mesos, like the other open-source tools listed here, lets you manage public, private, and hybrid clouds, and even traditional hardware and software, as if they were a single computer. Mesos deals with resource management and scheduling and is often described as a “distributed systems kernel” that lets you manage thousands of servers using containers to host applications.
Mesos provides a set of daemons that expose resources to a centralized scheduler. This allows tasks to be distributed across nodes, and thus load balancing takes place on different resources in the cloud or traditional systems. Mesos is a natural fit for large, distributed databases such as Hadoop and Cassandra.
6. Joyent’s SmartOS and SmartDataCenter
Joyent’s SmartDataCenter is the software that operates Joyent’s public cloud. It also provides a management platform on top of Joyent’s SmartOS (thin server OS). You can use SmartOS to deploy a set of lightweight servers that can be managed by a set of JSON APIs.
So how do SmartDataCenter and SmartOS relate?
SmartDataCenter runs on SmartOS servers. One server operates as a dedicated management node, and the remainder are “compute nodes.” You deploy services as images, and the components exist in an object library.
The idea here is that both of these open-source technologies bring you the best of Joyent’s public cloud, enabling you to manage or build a cloud. While this is a niche tool set, it’s helpful to at least know that it’s available if you need it.
As a tool for managing server configurations on clouds, Ansible is an open-source product with a great reputation. It’s designed to provide configuration management tooling that can simplify cloud system management, as well as provide scaling capabilities.
Core to this technology is a management service that uses SSH to manage Unix nodes and PowerShell so that both get along with Windows servers. Also core: The Ansible Playbook, which provides information on the state of the servers or services that use the YAML data serialization language. This lets you orchestrate tasks or applications as needed, to support your workloads.
You can also leverage Playbook as part of a DevOps continuous delivery process. Of course, you need build tools that will deliver automated deployments and configurations. Playbook can pull information from public, private, and hybrid cloud service providers, which greatly simplifies management of virtual machines and networks. There are native monitoring tools as well that can automatically push new deployments, thus controlling cloud services or other resource management tasks.
Which tools are right for you?
Before rushing to pick a cloud management tool, you need to think about a few things:
- Figure out the requirements, including the layers that you need to manage. There are data layers, application layers, container layers, network layers, storage layers, compute layers, etc., and each has its own management requirements.
- Not all open-source technologies are right for the job. In some cases, you will be better off paying for commercial cloud management capabilities versus downloading them from GitHub. While many enterprises find this less than desirable, it could save you money in the long run.
- Keep in mind that your cloud management requirements will change over time, and thus your tool requirements may need to change as well. You’ll expand into more complex deployments over the years, and the types and number of tools will become more complex as well.
- Don’t forget about security and performance; you need to link both into your management infrastructure as well. Think of them as systemic concepts, as far as cloud management goes.
- Take into consideration your existing, traditional enterprise environment when choosing tools. The path of least resistance is to use tools that can manage both your cloud and non-cloud platforms. In most cases, that’s just not possible. But if you can find tools that can manage both environments, that’s the easiest path.
Cloud computing is constantly evolving. Expect to see new approaches and new technologies emerge over the next few years, including new open-source options.
Open source will always be part of cloud computing, but cloud management tools differ vastly, and tool complexity will only increase over time. But you certainly can’t wait. So arm yourself with knowledge, understand the problems you need to solve, and get ready to move forward.