This document specifies the importance of Configuration Management in DevOps.
It also specifies the various repositories and the configuration tools that are used.
This document specifies which configuration management tool is recommended and why.
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. [Wiki]
Configuration Management in DevOps:
DevOps has several components together to meet the requirements. One of the key elements in DevOps is configuration management. And as DevOps covers both software development and operations, it is only logical that configuration management covers development and operations as well.
Configuration management in DevOps includes all the components that a DevOps team should deal with and that includes:
- Source Code Repository— The Source Code Repository is used primarily during the development phase and acts as the primary container for all the versions of a code. And apart from the code storage, it also stores test scripts, build scripts, deployment scripts and configuration files as well.
- Artifact Repository— The Artifact Repository is used during the development and operations phases and it is primarily a database for storing binaries. Test data and libraries can be stored as well. Unlike Source Code Repository, an artifact repository stores machine readable files.
- Configuration Management Database — The Configuration Management Database is used during the development and operations phases.
The main objective of DevOps is to develop software as quickly as possible. It can be done through proper organization and planning, and the comprehensive configuration management gives you sufficient tools to run the DevOps.
Configuration Management Tools:
It is common for configuration management tools to include automation too. Popular tools are:
- Red Hat Ansible
Configuration management through Ansible:
Ansible is the simplest solution for configuration management available. It’s designed to be minimal in nature, consistent, secure and highly reliable.
Ansible requires nothing more than a password or SSH key to start managing systems and can start managing them without installing any agent software thereby avoiding the problem of “managing the management” common in many automation systems.
- Ansible makes Automation accessible
Ansible configurations are simple data descriptions of infrastructure. This ensures that everyone in your team will be able to understand the meaning of each configuration task which makes it easier for any new team members to understand better and work faster.
- It is Goal-oriented and not scripted
Ansible features a state-driven resource model that describes the desired state of computer systems and services, not the paths to get them to this state. No matter what state a system is in, Ansible understands how to transform it to the desired state
- It is secure and agentless
Ansible relies on the most secure remote configuration management system available as its default transport layer: OpenSSH.
Ansible does not require root login privileges, specific SSH keys, or dedicated users and respects the security model of the system under management.
As a result, Ansible has a very low attack surface area and is quite easy to deploy into new environments. With Ansible, you don’t have to start from scratch.
Configuration Management plays an important role in the success of any DevOps project and it is necessary that we know the best tools that makes it reliable and fast to run any given task.