During the 1950s the United States Department of Defense developed a technical management discipline to track changes in the development of complex systems. It gave this system and various iterations very technical names, until in 2001 it published a consolidated guidebook that established the technical management system now called configuration management. Today, configuration management is not only used by the defense department, but in software development,IT service management, civil engineering, industrial engineering, and more.
What is configuration management?
Configuration management is a systems engineering process for establishing consistency of a product’s attributes throughout its life. In the technology world, configuration management is an IT management process that tracks individual configuration items of an IT system. IT systems are composed ofIT assetsthat vary in granularity. An IT asset may represent a piece of software, or a server, or a cluster of servers. The following focuses on configuration management as it directly applies to IT software assets and software asset CI/CD.
Software configuration management is a systems engineering process that tracks and monitors changes to a software systems configuration metadata. In software development, configuration management is commonly used alongside version control and CI/CD infrastructure. This post focuses on its modern application and use in agile CI/CD software environments.
Why is configuration management important?
related material
Microservices vs. monolithic architecture
SEE SOLUTION
Manage your components with Compass
Configuration management helps engineering teams build robust and stable systems through the use of tools that automatically manage and monitor updates to configuration data. Complex software systems are composed of components that differ in granularity of size and complexity. For a more concrete example consider amicroservice architecture. Each service in a microservice architecture uses configuration metadata to register itself and initialize. Some examples of software configuration metadata are:
- Specifications of computational hardware resource allocations for CPU, RAM, etc.
- Endpoints that specify external connections to other services, databases, or domains
- Secrets like passwords and encryption keys
It’s easy for these configuration values to become an afterthought, leading to the configuration to become disorganized and scattered. Imagine numerous post-it notes with passwords and URLs blowing around an office. Configuration management solves this challenge by creating a “source of truth” with a central location for configuration.
Git is a fantastic platform for managing configuration data. Moving configuration data into a Git repository enables version control and the repository to act as a source of truth. Version control also solves another configuration problem: unexpected breaking changes. Managing unexpected changes through the use of code review and version control helps to minimize downtime.
Configuration values will often be added, removed, or modified. Without version control this can cause problems. One team member may tweak a hardware allocation value so that the software runs more efficiently on their personal laptop. When the software is later deployed to a production environment, this new configuration may have a suboptimal effect or may break.
Version control and configuration management solve this problem by adding visibility to configuration modifications. When a change is made to configuration data, the version control system tracks it, which allows team members to review an audit trail of modifications.
Configuration version control enables rollback or “undo” functionality to configuration, which helps avoid unexpected breakage. Version control applied to the configuration can be rapidly reverted to a last known stable state.
How configuration management fits with DevOps, CI/CD, and agile
Configuration data has historically been hard to wrangle and can easily become an afterthought. It's not really code so it’s not immediately put in version control and it’s not first-class data so It isn’t stored in a primary database. Traditional and small scale system administration is usually done with a collection of scripts and ad-hoc processes. Configuration data can be overlooked at times, but it is critical to system operation.
The rise of cloud infrastructures has led to the development and adoption of new patterns of infrastructure management. Complex, cloud-based system architectures are managed and deployed through the use of configuration data files. These new cloud platforms allow teams to specify the hardware resources and network connections they need provisioned through human and machine readable data files like YAML. The data files are then read and the infrastructure is provisioned in the cloud. This pattern is called infrastructure as code (IaC).
DevOps configuration management
In the early years of internet application development, hardware resources and systems administration were primarily performed manually. System administrators wrangled configuration data while manually provisioning and managing hardware resources based on configuration data.
Configuration management is a key part of a DevOps lifecycle. DevOps configuration is the evolution and automation of the systems administration role, bringing automation to infrastructure management and deployment.
DevOps configuration also brings system administration responsibility under the umbrella of software engineering. Enterprises today utilize it to empower software engineers to request and provision needed resources on demand. This removes a potential organizational dependency bottleneck of a software development team waiting for resources from a separate system administration team.
CI/CD configuration management
CI/CD configuration management utilizes pull request-based code review workflows to automate deployment of code changes to a live software system. This same flow can be applied to configuration changes. CI/CD can be set up so that approved configuration change requests can immediately be deployed to a running system. A perfect example of this process is a GitOps workflow.
Agile configuration management
Configuration management enables agile teams to clearly triage and prioritize configuration work. Examples of configuration work are chores and tasks like:
- Update the production SSL certificates
- Add a new database endpoint
- Change the password for dev, staging, and production email services.
- Add API keys for a new third-party integration
Once a configuration management platform is in place, teams have visibility into the work required for configuration tasks. Configuration management work can be identified as dependencies for other work and properly addressed as part of agile sprints.
Configuration management tools
Git
Git is the industry-leading version control system to track code changes. Adding configuration management data alongside code in a Git repository provides a holistic version control view of an entire project. Git is a foundational tool in higher-level configuration management. The following list of other configuration management tools is designed to be stored in a Git repository and leverage Git version control tracking.
Docker
Docker introduced containerization that is an advanced form of configuration management -- like a configuration lockdown. Docker is based on configuration files called Dockerfiles, which contain a list of commands that are evaluated to reconstruct the expected snapshot of operating system state. Docker creates containers from these Dockerfiles that are snapshots of a preconfigured application. Dockerfiles are committed to a Git repository for version tracking and need additional configuration management to deploy them to infrastructure.
Terraform
Terraform is an open source configuration management platform by HasiCorp. Terraform uses IaC to provision and manage clusters, cloud infrastructure, or services. Terraform supports Amazon Web Services (AWS), Microsoft Azure, and other cloud platforms. Each cloud platform has its own representation and interface for common infrastructure components like servers, databases, and queues. Terraform built an abstraction layer of configuration tools for cloud platforms that enable teams to write files that are reproducible definitions of their infrastructure.
Ansible, Salt Stack, Chef, Puppet
Ansible, Salt Stack, Chef, and Puppet are IT automation frameworks. These frameworks automate many traditional system administrators' processes. Each framework uses a series of configuration data files -- usually YAML or XML -- that are evaluated by an executable.
The configuration data files specify a sequence of actions to take to configure a system. The actions are then run by the executable. The executable differs in language between the systems -- Ansible and Salt Stack are Python based and Chef is Ruby. This workflow is similar to running ad-hoc shell scripts but offers a more structured and refined experience through the respective platforms ecosystems. These tools are what will bring enable the automation needed to achieve CI/CD.
How to implement configuration management
Identification
The first action towards configuration management is information gathering. Configuration data should be aggregated and compiled from different application environments, development, staging, and production for all the components and services in use. Any secret data like passwords and keys should be identified and securely encrypted and stored. At this point configuration data should be organized into data files that can be pointed to as a central source of truth.
Baseline
After configuration data has been aggregated and organized a baseline can be established. A baseline configuration is a known state of configuration that will successfully operate the dependent software without error. This baseline is usually created by reviewing the configuration of a functioning production environment and committing those configuration settings.
Version Control
Your development project should use a version control system. If not, install Git, initialize a repository for the project, and add the configuration data files to the repository. A word of caution before adding configuration data to a repository: make sure that any secret data like passwords or keys are encrypted with an external key. Secret data accidentally committed to a repository is a huge risk. It needs to be scrubbed from the repositories history or it will be at risk of being exploited.
Auditing
Having configuration data organized and added to a repository enables collaboration and visibility into the system’s configuration. The popular pull request workflow that software teams use to review and edit code can then be applied to configuration data files. This helps build out an audit and accounting system. Any changes applied to the configuration must be reviewed and accepted by the team. This adds accountability and visibility into configuration changes.
In conclusion…
Configuration management is a necessary tool for managing complex software systems. Lack of configuration management can cause serious problems with reliability, uptime, and the ability to scale a system. Many current software development tools have configuration management features built in. Bitbucket offers a powerful system for configuration management that is built around Git pull request workflows and CI/CD pipelines.
Ian Buchanan
https://www.linkedin.com/in/ianbuchanan/
While Ian has broad and deep experience with both Java and .NET, he's best known as a champion of agile methods in large enterprises. He's currently focused on the emerging DevOps culture and the tools for enabling better continuous integration, continuous delivery, and data analysis. During his career, he's successfully managed enterprise software development tools in all phases of their lifecycle. He has driven organization-wide process improvement with results of greater productivity, higher quality, and improved customer satisfaction. He has built multi-national teams that value self-direction and self-organization. When not speaking or coding, you can find Ian indulging his passions in parsers, meta-programming, and domain-specific languages. Follow Ian at @devpartisan.
Share this article
FAQs
What is the benefits of configuration management? ›
Benefits of Configuration Management
Increased efficiency with a defined configuration process that provides control and improves visibility with tracking. Cost reduction by having detailed knowledge of all the elements of the configuration which allows for unnecessary duplication to be avoided.
Configuration Management is the process of maintaining systems, such as computer hardware and software, in a desired state. Configuration Management (CM) is also a method of ensuring that systems perform in a manner consistent with expectations over time.
What is configuration management and why is IT necessary? ›When properly implemented, configuration management ensures that an organization knows how its technology assets are configured and how those items relate to one another. The CM process seeks to identify and track individual configuration items (CI), and document their functional capabilities and interdependencies.
What are the four elements of configuration management? ›Identification, control, audit, and status accounting are the four basic requirements for a software configuration management system.
What is an example of configuration management? ›Configuration management can be used to maintain OS configuration files. Example systems include Ansible, Bcfg2, CFEngine, Chef, Nix, Otter, Puppet, Quattor, SaltStack, Terraform, Pulumi and Vagrant. Many of these systems utilize Infrastructure as Code to define and maintain configuration.
What is the goal of configuration management? ›A configuration management system helps development teams control the process of modifying source code, developing documentation, and managing products.
What are the five stages of the configuration management process? ›- Planning and Identification. The first step in the process is planning and identification. ...
- Version Control and Baseline. ...
- Change Control. ...
- Configuration Status Accounting. ...
- Audits and Reviews.
Explanation: Configuration management allows a user to specify alternative configurations of the software system through the selection of appropriate versions.
What is configuration management and its main phases? ›Configuration management (CM) is a systems engineering process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life.
Who is responsible for configuration management? ›Project Manager – will produce the Configuration Management Plan and include within the Project Management plan. Responsible for ensuring all who work on the project are aware of the Configuration Management Plan and understand how the plan works.
What are the examples of configuration? ›
Examples of Configuration Items include software and applications, locations and offices, employees and customers, documentation, hardware and companies, and even your incidents, changes and customers.
Which type of tool is used for configuration management? ›Ansible is the best configuration management, deployment, orchestration open-source tool and also automation engine. It is a push-based configuration tool. It helps to automate the entire IT infrastructure by providing large productivity gains.
What is configuration process? ›Generally, a configuration is the arrangement - or the process of making the arrangement - of the parts that make up a whole.
What is configuration management in ISO? ›Configuration management is defined by ISO 10007 asking organizations to manage the components of a product. Breaking this down, configuration management consists mostly of two components – document control and product identification.
What are the 4 main functions of software configuration management? ›- Configuration identification.
- Configuration control.
- Configuration status documentation.
- Contents. The Configuration Management Plan typically comprises the following: ...
- Introduction. ...
- Concept. ...
- Configuration Identification. ...
- Configuration Control. ...
- Configuration Status Accounting. ...
- Organization and Responsibilities. ...
- Size and Format.
It is written in parallel with other project planning documents by the Project Manager, and is reviewed by all affected groups. Although the CM Plan is approved by the Project Manager, it needs to be reviewed by all affected parties.
What is the scope of configuration management? ›Definition. Configuration management encompasses the technical and administrative activities concerned with the creation, maintenance, controlled change and quality control of the scope of work.
What are the three components of the configuration management plan? ›- Process Overview.
- Classification.
- Evaluation.
- Modeling and Testing.
- Implementation.
What is configuration management? ITIL defines Service Asset and Configuration Management (SACM) as: “The process responsible for ensuring that the assets required to deliver services are properly controlled, and that accurate and reliable information about those assets is available when and where it is needed.
What is configuration management in agile? ›
Like agile, configuration management gives teams the confidence to move quickly with their changes. Under agile practices, the company gives configuration management responsibilities to the development teams, empowering them to provision, configure, and manage their own infrastructure. You build it, you run it.
What is the role of a configuration management system in requirement management? ›Configuration Management (CM) is a systems engineering process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life.
What do you know about the configuration? ›Configuration is the manner in which components are arranged to make up the computer system. Configuration consists of both hardware and software components. Sometimes, people specifically point to hardware arrangement as hardware configuration and to software components as software configuration.
Which is not task of configuration management? ›...
Which is not a task of a configuration management?
A) Security testing | B) Performance testing |
---|---|
C) Boundary value analysis | D) Usability testing |
The major change between configuration and change management is that configuration management focuses on managing the configurable items and the state of the system while change management focuses on managing the changes that affect the configurable items and the system.
What is the use of configuration? ›In computing, configuration files (commonly known simply as config files) are files used to configure the parameters and initial settings for some computer programs. They are used for user applications, server processes and operating system settings.
What is configuration tool? ›Configuration management tools make changes and deployments faster, remove the potential for human error, while making system management predictable and scalable. They also help you to keep track of the state of your resources, and keep you from repeating tasks, like installing the same package twice.
What is configuration diagram? ›A Configuration Diagram is a hierarchical diagram representing all or part of an ARINC 653 configuration. It is based on the UML structure diagram which represents whole/part hierarchies using nested rectangles.
Is Jira a configuration management tool? ›Insight is Jira Service Management's native asset and configuration management tool. It gives teams a simple and quick way to tie assets and configuration items to service requests, incidents, problems, changes, and workloads.
Is Jenkins a configuration management tool? ›Is Jenkins a configuration management tool? Being an open-source software development automation server originally, Jenkins is extremely popular in the field of configuration management. This is due to the unprecedented CI/CD, software deployment, testing, and building opportunities it provides.
How do you plan configuration management? ›
- Creating the configuration management plan. The first step of the configuration management process is creating the plan. ...
- Identifying configuration requirements. ...
- Documenting changes. ...
- Tracking configurations. ...
- Testing adherence to configuration requirements.
This standard provides minimum require ments for preparation and content of Software Configuration Management (SCM) Plans. SCM Plans document the methods to be used for identifying software product items, controlling and implementing changes, and recording and reporting change implementation status.
What is the role of configuration management in DevOps? ›Using Configuration Management is imperative in DevOps infrastructures. Remember, DevOps is about facilitating speed, accuracy, and efficiency. Configuration Management helps to automate mundane maintenance tasks, which frees up dev time for actual programming.
What is a configuration document? ›Definition. document that defines the requirements for function, design, build, production, and verification for a configuration item.
What are the benefits of configuration management Mcq? ›Explanation: Configuration management allows a user to specify alternative configurations of the software system through the selection of appropriate versions.
What are the benefits of configuration management Capgemini? ›The benefits include: Better pipeline management and control, which allows for better asset utilization while lowering TCO, management, and support costs. Increased automation of build and deployment activities, including the use of monitoring (health checks and shakedowns) to improve productivity.
Why is configuration management important in project management? ›Within a project, the purpose of configuration management is to identify, track and protect the project's deliverables or products from unauthorised change.
What is the primary goal of configuration management? ›The objective of Configuration Management is to define and control the components of an IT service and its infrastructure, and to maintain accurate configuration information. The Configuration Management process manages service assets to support other Service Management processes.
Which type of tool is used for configuration management? ›Ansible is the best configuration management, deployment, orchestration open-source tool and also automation engine. It is a push-based configuration tool. It helps to automate the entire IT infrastructure by providing large productivity gains.
What is configuration management in ISO? ›Configuration management is defined by ISO 10007 asking organizations to manage the components of a product. Breaking this down, configuration management consists mostly of two components – document control and product identification.
Which of the following is a example of configuration items? ›
Examples of Configuration Items include software and applications, locations and offices, employees and customers, documentation, hardware and companies, and even your incidents, changes and customers.
What is configuration management in testing? ›Continuous Integration. Adhoc Testing. Configuration Management (CM) is a systems engineering process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life.
What do you know about the configuration? ›Configuration is the manner in which components are arranged to make up the computer system. Configuration consists of both hardware and software components. Sometimes, people specifically point to hardware arrangement as hardware configuration and to software components as software configuration.
What is configuration management in cyber security? ›Security configuration management is a process that involves adjusting the default settings of an information system in order to increase security and mitigate risk. Security configuration management identifies misconfigurations of a system's default settings.
What is the scope of configuration management? ›Definition. Configuration management encompasses the technical and administrative activities concerned with the creation, maintenance, controlled change and quality control of the scope of work.
What are the 2 key deliverables for configuration management? ›- Contents. The Configuration Management Plan typically comprises the following: ...
- Introduction. ...
- Concept. ...
- Configuration Identification. ...
- Configuration Control. ...
- Configuration Status Accounting. ...
- Organization and Responsibilities. ...
- Size and Format.
Project Manager – will produce the Configuration Management Plan and include within the Project Management plan. Responsible for ensuring all who work on the project are aware of the Configuration Management Plan and understand how the plan works.
What are the five stages of the configuration management process? ›- Planning and Identification. The first step in the process is planning and identification. ...
- Version Control and Baseline. ...
- Change Control. ...
- Configuration Status Accounting. ...
- Audits and Reviews.
What is configuration management? ITIL defines Service Asset and Configuration Management (SACM) as: “The process responsible for ensuring that the assets required to deliver services are properly controlled, and that accurate and reliable information about those assets is available when and where it is needed.
What is configuration example? ›When artwork is laid out in order to maximize the connections between the pieces, this is an example of configuration. When you try to set up your computer hardware and software to work the way you want such as adding a wireless mouse and keyboard, this is an example of configuration.