You are on page 1of 11

What is configuration management?

 Configuration management is a process for maintaining computer systems,


servers, and software in a desired, consistent state. It’s a way to make sure that
a system performs as it’s expected to as changes are made over time.

 Automation plays an essential role in server configuration management. It’s the


mechanism used to make the server reach a desirable state, previously defined
by provisioning scripts using a tool’s specific language and features.

 Another common term used to describe the automation features implemented


by configuration management tools is Server Orchestration or IT Orchestration,
since these tools are typically capable of managing one to hundreds of servers
from a central controller machine.
Configuration Management Benefits

 The primary benefit of configuration management is consistency of


systems and software. With configuration management, you no longer
guess or hope that a configuration is current. It is correct because the
configuration management system ensures that it is correct.

 When combined with automation, configuration management can


improve efficiency because manual configuration processes are replaced
with automated processes. This also makes it possible to manage more
targets with the same or even fewer resources.
Deployment models of configuration management tools

There are two deployment models for configuration management tools :


Push-based deployment model: initiated by a master node.
Pull-based deployment model: initiated by agents.

Push-based deployment model:


In this deployment model master server pushes the configurations and
software to the individual agents. After verifying a secure connection, the
master runs commands remotely on the agents. For example, Ansible and
Salt Stack.
Pull-based deployment model.
In this deployment model, individual servers contact a master server, verify
and establish a secure connection, download their configurations and
software and then configure themselves accordingly — for example,
Puppet and Chef.
Differences based on Procedural and Declarative

 Chef and Ansible use a procedural style language where you write code
that specifies, step-by-step, how to achieve the desired end state.
 The onus is on the user to determine the optimal deployment process.
 Procedural languages are more familiar to system admins who have
backgrounds in scripting.
 Terraform, SaltStack, and Puppet use a declarative style where you write
code that specifies the desired end state.
 The IaC tool itself then determines how to achieve that state in the
most efficient way possible.
 Declarative tools are more familiar to users with a programming
background.
Mutable or immutable

 Traditional server environments are mutable, in that they are


changed after they are installed. Administrators are always making
tweaks or adding code.

 An immutable infrastructure is one in which servers are never


modified after they’re deployed. If something needs to be
updated or changed, new servers are built afresh from a common
template with the desired changes.

You might also like