The course is part of these learning paths
A lot of options exist for configuration management and the different tools have different approaches to solving the same problem. It can be difficult to know where to start. This course is a high-level overview to help explain some of the concepts of configuration management.
Hello, and welcome to Cloud Academy's What is Configuration Management? In this course, you'll learn what configuration management is, which configuration management tool is best for you, and the additional tools you'll be using to perform configuration management.
Configuration management is a process for maintaining the configuration of systems throughout their life cycle. A system under configuration management control can have deployed artifacts, configuration files, system packages, user configurations, and services, all defined in source control. This ensures a repeatable process, which is the foundation of automation.
Configuration management has the ability to manage infrastructure deployments through the design, implementation, testing, building, release, and maintenance phases. A configuration management system, or a CMS, provides a source of truth for your system's configurations. This allows you to leverage a version control system, or VCS, to store and track configurations.
Versioning of configuration management code allows for easy roll backs in case of problems. Using a VCS together with your CMS will greatly increase the ability to reproduce and maintain your systems as well as fully automate the deployment and provisioning of systems and software. It is important to understand the means by which different CMS automation technologies operate.
There are two different methods by which a system under configuration management control is modified. Either the infrastructure is immutable, and a change will result in a destruction and recreation of a resource, or the infrastructure change will run idempotently over a resource and converge as necessary. These concepts are very important when evaluating and understanding how a CMS solution works.
We will now dive a bit deeper into idempotency, convergence, and immutability. Idempotency is the idea that if you rerun your automated configuration scripts over the same resources, the exact same result is produced each time. The configuration management occurs in place. If an artifact does not meet the requirements of the CMS, it is changed. Otherwise, it is left alone. This places confidence in your automated configuration routines, removing the fear of damaging a working system.
An idempotent configuration management solution means continuous CMS runs will not break existing resources. Ansible and Chef are examples of an idempotent configuration management solution. Convergence is the ability for configuration management runs upon executing idempotently to successfully modify or restore an existing environment to that which is specified in code, when necessary.
When resources diverge over time, or when new changes are introduced, convergence is successful when resources are able to converge to the desired state, as specified in configuration management. When an in-place idempotent run occurs and any needed changes are enacted successfully, the managed node is said to have converged.
Immutability is the environment condition that dictates resources should not be changed, only created and destroyed. When a change is required, the resources to be changed are destroyed and recreated, as opposed to being modified in an idempotent or in-place way. Examples of these are AWS autoscaling groups, in which changes to launch configuration can cause an instance to be terminated and relaunched.
Configuration management tools that work well at managing immutable resources include Terraform and CloudFormation. Immutable infrastructure is also well aligned with the blue/green deployment concept. It is important to understand this concept to appreciate the difference between different CMS strategies and solutions.
About the Author
Stelligent's entire focus is DevOps automation and Continuous Delivery in the AWS cloud. Founded in 2007, Stelligent is an AWS Advanced Consulting Partner with the DevOps Competency. For more information please visit https://stelligent.com/