Differences and similarities between Infrastructure Provisioning Tools and Configuration Management Tools.

DevOps toolchain is essentially tied to Infrastructure provisioning and Configuration Management.

What is infrastructure provisioning?

Provisioning is the process of setting up IT infrastructure. It can also refer to the steps required to manage access to data and resources, and make them available to users and systems.

When the term "provisioning" is used, it can mean many different types of provisioning, such as server provisioning, network provisioning, user provisioning, service provisioning, and more.

Server provisioning

Server provisioning is the process of setting up a server to be used in a network based on required resources.

Provisioning can encompass all of the operations needed to create a new machine and bring it to a working state and includes defining the desired state of the system.

Server provisioning includes setting up the physical hardware in a data center, installing and configuring software, including the operating system and applications, and connecting it to middleware, networks, and storage.

User provisioning

User provisioning is a type of identity management that monitors access rights and authorization privileges.

Network provisioning

Network provisioning can include setting up a network to be accessed by users, servers, containers, and IoT devices, among other things.

Service provisioning

Service provisioning includes the setup of a service and managing the data related to it. Service provisioning has applications in the telecommunications industry, in setting up a service for a customer, as well as with cloud infrastructure.

As an example, cloud service provisioning is the self-service component of cloud computing. Users obtain cloud services through a self-service portal without requiring the help of IT staff.

Provisioning tools

  • Ansible

  • Terraform

  • AWS Cloud Formation

  • Azure Resource Manage

  • Google Cloud Deployment Manager

  • Chef

  • Puppet

  • Salt Stack

  • Vagrant

This is not an exhaustive list but I have named the very popular tools.

What are configuration management tools?

Configuration management (CM) tools automate the process of identifying, documenting and tracking changes in the hardware, software and devices in an IT environment.

Configuration management is important because it enables the ability to scale infrastructure and software systems without having to correspondingly scale administrative staff to manage those systems. This can make it possible to scale where it previously wasn't feasible to do so.

Types of configuration tools for network change management

  • Scripting systems.

  • Network configuration management tools.

  • Intent-based networking configuration management.

Why use configuration management tools?

Configuration management tools enable changes and deployments to be faster, repeatable, scalable, predictable, and able to maintain the desired state, which brings controlled assets into an expected state.

Some advantages of using configuration management tools include:

  • Adherence to coding conventions that make it easier to navigate code

  • Idempotency, which means that the end state remains the same, no matter how many times the code is executed

  • Distribution design to improve managing large numbers of remote servers

Some configuration management tools use a pull model, in which an agent installed on the servers runs periodically to pull the latest definitions from a central repository and apply them to the server. Other tools use a push model, where a central server triggers updates to managed servers.

Here are some of the Best Software Configuration Management Tools:

  • Desktop Central.

  • Auvik.

  • CFEngine Configuration Tool.

  • Server Configuration Monitor.

  • Puppet Configuration Tool.

  • CHEF Configuration Tool.

  • Ansible Configuration Tool.

  • SALTSTACK Configuration Tool.

Provisioning is not the same thing as configuration. They are both steps in the deployment process. Once something has been provisioned, the next step is configuration.

This is a critical differentiation that must be made. When deploying a new service, existing configurations will not be wholly valid. There will always be some amount of customization that must occur if only to make sure the service is interacting with the right application.

This means that once the provisioning of the service is complete, there is still work to be done. One does not simply launch a load balancing service, for example, without instructing it how to distribute the load (what algorithm to use) and to what set of servers (configure a pool).

provisioning versus configuration

It is important to recognize the difference between these two steps in the deployment process and take into consideration the impact of configuration after provisioning on that process. Depending on the method of configuration, this step can have a serious impact on the speed and efficiency of the deployment process as a whole.DevOps.com

Although configuration and provisioning are two different processes in deployment, their tools, i.e. Infrastructure provisioning tools and configuration management tools are both used to automate the setup and maintenance of IT infrastructure. They both typically use a declarative language to define the desired state of the infrastructure. Both types of tools can also be used to automate the deployment of applications and other software components.

Though they share these similarities, they serve slightly different purposes and have some key differences.

Infrastructure provisioning tools are used to automate the process of setting up and configuring hardware and software resources, such as servers, networks, and storage. They are often used to create and manage infrastructure in cloud environments.

Configuration management tools, on the other hand, are used to manage the configuration of software and systems over their lifecycle. They are used to ensure that systems are consistently configured and remain in a known state. Configuration management tools often include features for tracking changes, rolling back changes, and managing dependencies between components.