In this latest consideration guide created to assist IT operators in which tools they choose for a range of different processes and activities, we’ve gathered a range of insights from some of our favourite specialists to take you through the essentials tools of configuration management.
What Is Configuration Management?
Configuration management is a systems engineering practise that ensures consistency of the configuration supporting both software and hardware of a company or product.
All changes to assets that fall under this infrastructure are tracked to provide a single source of truth to anyone overseeing the project at hand. Configuration management is often heavily reliant on automation to achieve the necessary consistency across systems, resources, servers and any other known assets.
What Are Configuration Management Tools?
Configuration management tools help speed up changes and deployments. They even make processes repeatable, scalable, and predictable. It helps maintain the desired state on the changes, which brings the controlled assets into an expected state.
Configuration management tools all provide a level of enforcement because these tools run often they can ensure your system is configured to the desired state in order to prevent drift.
Excess configuration drift can lead to an increased resolution time because you are more likely to be caught out by an unexpected package update or by live debugging being conducted by another member of your team, making it harder to pinpoint & resolve incidents within your operating environment. Your chosen configuration management tool should also aid your engineering team in cooperating as changes should be updated seamlessly across a centralised system once they are saved.
Last but certainly not least, it is important that your selected tool is version control friendly as this further aids collaboration and additionally assists in times of crisis by enabling rollback to a previous version when an issue is encountered.
What Are Some Of The Benefits Of Using A Configuration Management System?
- Easier to navigate code.
- The tools greatly help to manage a large number of remote servers.
- Unchanged end-state every time you execute the code.
“I have been using Puppet Labs' Configuration Tool, as it helps to automate provisioning across the entire IT infrastructure”, said Thomas Fultz, CEO at Coffeeble.
“Their SCM tool means that you can take full control and visibility over your software delivery processes. It also allows you to make any quick changes that you may need to if you notice any urgent problems alongside the automation happening.”
“I think that it is the best configuration management tool out there as it helps you to manage your infrastructure as code, using your favourite version control systems.”
Puppet was also recommended by Caroline Lee, Marketing Director at CocoSign; “Developed by Luke Kanies, Puppet is an open-source configuration management tool.
“You can have up to 10 nodes for free, and if subsequent nodes are required you can pay $120 per node. It is used for deploying, configuring, and managing servers.”
Pros Of Using Puppet:
- Easy to Learn Programming Language
- It is an open-source tool
- Impeccable support
Cons Of Using Puppet:
- Difficulty in the installation process, and it lacks adequate error messaging.
- No immediate action on changes; hence it lacks a revert system.
“I chose Ansible as my preferred configuration management tool because of how simple it is to use,” said our next specialist, Patrick Smith, found of Firesticktricks.com.
“Ansible does not require you to type in scripts or code. You can deploy and update applications using a language that approaches plain English, using SSH. I have been using this for a while, and I find it unique because it is usable for non-technical users.”
Ethan Taub, CEO of Goalry also swore by using Ansible in his response; “Ansible is the best configuration management, deployment, open-source orchestration tool, and automation engine.”
“It helps with IT infrastructure automation from software provisioning and configuration management to application deployment, providing large productivity gains.”
“Despite being a relatively new player in the arena compared to competitors like Chef or Puppet, it's gained quite a favourable reputation amongst DevOps professionals for its straightforward operations and simple management capabilities.”
“A downside to Ansible is the insufficient user interface as it was only made initially for a command-line only tool. The reason I chose Ansible over the other options was its simplicity of use.”
Cal Mitchell, DevOps Engineer & Founder of database learning website SQLRef gave very comprehensive feedback when he was asked why his team swears by using Ansible for configuration management; “Ansible is one of the most popular configuration management tools. This means that when someone from your team leaves the company, it is relatively easier to find someone who knows Ansible in comparison to some other relatively unknown tool.”
“Anecdotally, Ansible has some of the best documentation out there, and it is easy to install and get started. This is a benefit when onboarding people who don't already know Ansible.”
“Ansible has a very active community. There are lots of great learning resources out there, and most common problems have already been solved by someone else.”
“Your configuration management server usually isn't a performance bottleneck - this means that it should use languages that are widely used, easy to learn and understand, and have active communities. Ansible nailed their language choices by going with Python and YAML, as they are both popular and easy to use.”
“Ansible works across all major clouds and has great support for cloud-specific IaS (infrastructure as code) products. For example, it is very easy to provision AWS infrastructure by triggering CloudFormation templates with Ansible, then configure the software on those servers with Ansible YAML. As an added benefit, CloudFormation templates are also written in YAML, which lowers the amount of mental context switching.”
Pros Of Using Ansible:
- Easy to learn
- Written in Python & YAML, which makes it quick and easy to run while others are in languages like Ruby
- Ansible galaxy serves as the central repository for finding, reusing, and sharing Ansible content.
- YAML based playbooks
Cons Of Using Ansible:
- Since the software is comparatively new, it has a smaller community of users
- Unlike other software it has no notion of state, it doesn’t keep track of dependencies
- Recent versions require native PowerShell remoting and a Linux control machine to work with windows
Ansible Combined With Other Frameworks
Mike Roberts, Founder & CEO at San Diego Code School discusses the benefit of using multiple frameworks to ensure a robust build pipeline in his response below “For our team, Terraform combined with Ansible works better together than choosing between one or the other ecosystem.”
“If you want to implement best-in-class infrastructure as code you will want to engineer a solution that involves more than one of the three frameworks.” “Striking the right balance between each tool's sweet spot and getting familiar with the best practices of each, allows DevOps engineers to create very robust build pipelines.”
“A combination that I have seen work well in production is Ansible and Packer to build an image with Terraforming provisioning the infrastructure and managing secrets. One final handoff to back Ansible to do some configuration could make more sense than scripting within Terraform.”
Gene Gotimer, Senior DevSecOps Engineer with Steampunk, Inc leans towards Chef in his review but also stresses the importance of understanding how similar the leading tools in this area are: “As a consultant, I almost always use whichever tool the client has chosen. Treating infrastructure as code and using a CM tool is more important than using a particular one. Chef, Puppet, and Ansible are all very similar.”
“If the client hasn't chosen, I prefer the Chef ecosystem. There is a lot of community support and many official and semi-official cookbooks available for maintaining various packages and software so that you don't have to write your own from scratch.”
“The Chef instructions are easy to read even if you aren't familiar with Chef, and Chef is very good at maintaining the desired state to enforce configuration management.”
“Terraform works with other CM tools like Chef, Puppet, or Ansible to extend infrastructure-as-code beyond individual systems to include the network, firewalls, and all the systems in the environment.”
If you enjoyed this guide all about configuration management tools, then why not check out another one of our articles on the required phases and steps that make up SDLC or check out our guide to what is Kaggle used for?