Configuration Management DevOps Tools are plentiful. So we will start this primer off with what I look for in a tool and why. Then we will talk about my current top paid and open source choices.
When I am evaluating new tools in this class look at the following things:
Is it OS restricted?
If I need to manage Windows Machines and it only supports Linux then the solution obviously won't work.
Does it support the application platform we need to support?
This is generally more of an Enterprise problem where you are deploying Application Servers.
Can I write custom scripts?
If we have a team that can or is willing to learn how to script we can fill in any minor missing pieces.
How much OS needs to be in place before I can start using it?
Will the solution allow me to go from Bare Metal(i.e. no Windows or Linux) to fully installed? Or does it require that we have some basic level of an operating system.
Is it Agent Based, Agentless, or a Hybrid?
I tend to lean towards Agentless or Hybrid solutions because it removes the requirement to monitor or restart the agent when they fail.
Does the tool have a DSL or Domain Specific Language or does it use a standard method for describing work to be done?
This will tell you how steep an adoption curve you are going to have. DSL products generally require more training than ones based on YAML or XML.
This list narrows the field for me. The how much OS needs to be in place is one most people miss in their lists. But if you need to roll out machines for something like a Disaster Recovery Drill it can be critical to your timing and person power requirements. A tool that will go from bare metal to fully functional would be better for that solution.
No solution will be a 100% fit for your environment. So you need to make trade offs. If I have a team that can script then customization may not be a problem. If I don't or if they are all new to it I may want to choose a tool that limits what we can do but does more out of the box.
How the tool works for me is also important. How do I scale this tool as we grow. Can I set up more than one master server for failover/load balancing? There is nothing worse than a fully deployed management tool with not management server.
What happens when the Configuration Management tool and server cannot talk for an extended amount of time. Can the tool maintain the configuration the last known good state? Does the server alert/log that the server cannot connect to the remote machine?
Once I have figured out a spreadsheet with the names of DevOps tools down one side and my critical items listed across the top. Below is an example one I filled out for WagsWorld.com(one of my other sites) If the item isn't a simple yes/no answer I have often used a numeric grading system. This let's me further refine my rankings of the tools.
If you are a small company working with Linux based systems any of the open sourced tools should be more than enough. Small companies with Windows systems will have a slightly harder time because that will reduce your Open Source options and may require a small investment in a paid for solution. The larger the organization the more people that have to see how it all works out and the more likely you will choose to pay for a tool. The good news is that most of them are pretty cheap at this point.
The bottom line:
- Take your time do your research
- Make sure it will do at least your list of must haves
- Make sure you understand what it will take to extend it's operations.
- Test it out in a lab before agreeing to spend any money for a tool
- Invest in training if it's available for two or more people to get familiar on the tool