In Cloud Infrastructure world when we hear the words like Provisioning, Automation and Configuration Management people will always consider only what they hear as a case study or a famous scenario.
There is a famous saying "Understanding is always a two-way street".
Today we will be understanding in more detail on what actually meant by Provisioning, Automation, Configuration Management and their use cases in traditional and cloud world.
Consider a scenario where we want to host a web application:
First, we need a Server which can be a physical or a Virtual Machine using a Hypervisor or a Container. If it's a single pet project it might be manual but in an enterprise, they might have their own procedure to request servers.
Later in the next blog will see how to create a virtual machine using Vagrant but nowadays everyone uses cloud by which we can simply create or delete any number of servers in very little time.
Provisioning - In any Data Center or even on a single Physical Server we can set-up a logical server by using a script or using a manual process to create a virtual server which utilizes the resources of the Physical Server. We can also automate the provisioning of a server process by passing the necessary parameters to PowerShell, Terraform, etc to create servers in an easy and quick way.
- There is always a huge difference between Cloud and On-Premises.
- Cloud is flexible, On-Demand, API Support.
- Can also use Hybrid Solution - Partial Cloud and Partial On-Prem
Once we have our machines spun up we can install different services to run on our servers which can be Web Server Software like Apache, IIS, PHP, and .NET at this place we talk about Automation & Configuration Management. All the application will have their unique configuration files and upon which we will have our application code.
So what is Configuration Management ?
Configuration Management (CM) is a system engineering process for maintaining establishing and maintaining consistency of a product's performance, functional and physical attributes with its requirements, design and operational information throughout its life.
Maintaining consistency of software and configuration. i.e, we create a pipeline where we provision servers in an automated way and then maintaining the consistency of the software configuration.
Automation is necessary when:
- Easy to create any number of servers without any human error.
- Infrastructure is unmanageable.
Some tools we can use are Chef, Puppet, Ansible, SaltStack.
Do follow my blog for more posts on cloud and related concepts...
Happy Reading :)