DevOps Terms

Now a days in DevOps world we come across many terms like Infrastructure as Code – Orchestration, Provisioning & Configuration Management. In this article we will learn everything about these terms.

Why infrastructure-as-code?

Infrastructure as Code, ensures any change to the service configuration is documented through the version control process. ... etc) can be applied to infrastructure services. This leads to fewer errors and less overall downtime, thus improving the entire customer experience.

Earlier,sysadmins used to deploy infrastructure manually. Every server, every route table entry, every database configuration, and every load-balancer was created and managed by hand.

It was a dark and fearful age: fear of downtime, fear of accidental mis-configuration, fear of slow and fragile deployments, and fear of what would happen if the sysadmins fell to the dark side (i.e. took a vacation). The good news is that thanks to the DevOps , we now have a better way to do things: Infrastructure-as-Code (IAC).

We no longer have to rack and stack servers, which alleviates all of the issues and costs that come with human capital and real estate. Also, you could spin up servers, databases, and other necessary infrastructure very quickly, which would address the scalability, high availability, and agility problems.

But the configuration consistency issue, where manual setup of cloud infrastructure can lead to discrepancies, still remains. That’s where Infrastructure as Code comes into play.

Deployment, Provisioning, Orchestration & Configuration Management

Deployment

‘Deployment’ is the process of putting a new application, or new version of an application, onto a prepared application server. As per developer, it may also mean the process of preparing the server, perhaps by installing libraries or daemons. As per operations professional, it DOES NOT. They use the word “provisioning” for that.

Provisioning

The word ‘Provisioning’ is normally used to refer to getting computers or virtual hosts to use, and installing needed libraries or services on them. The thing to remember is that ‘deployment’ does not, as a rule, include ‘provisioning’.

Infrastructure as code (IaC) is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools. Infrastructure as Code (IaC) is the management of Infrastructure(networks, virtual machines, load-balancers, and connection topology) in a descriptive model, using the same versioning as DevOps team uses for source code.

Orchestration

Orchestration means arranging or coordinating multiple systems. It’s also used to mean “running the same tasks on a bunch of servers at once, but not necessarily all of them.”

Configuration Management

Config Management is part of provisioning. Basically, that’s using a tool like Chef, Puppet or Ansible to configure our server. “Provisioning” often implies it’s the first time we do it. Config management usually happens repeatedly.

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 Configuration management is all about bringing consistency in the infrastructure.

Configuration Orchestration vs Configuration Management

The first thing that should be clarified is the difference between “configuration orchestration” and “configuration management” tools, both of which are considered IaC tools and are included on this list.

Configuration orchestration tools, which include Terraform and AWS CloudFormation, are designed to automate the deployment of servers and other infrastructure. Configuration management tools like Chef, Puppet, and the others on this list help configure the software and systems on this infrastructure that has already been provisioned.

Provisioning plus Configuration Management

Example: Terraform and Ansible. We use Terraform to deploy all the underlying infrastructure, including the network topology (i.e., VPCs, subnets, route tables), data stores (e.g., MySQL, Redis), load balancers, and servers. We then use Ansible to deploy our apps on top of those servers. Terraform is more of an infrastructure provisioning tool.

Terraform talks to VMWare, AWS, GCP, and deploys infrastructure. From the house of HashiCorp, Terraform allows the creation, management and improvement of infrastructure. An open source code drives APIs into declarative configuration files.

What is Ansible?

Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates. Ansible’s goals are foremost those of simplicity and maximum ease of use.

What is Terraform?

With Terraform, we describe our complete infrastructure as code, even as it spans multiple service providers. Our servers may come from AWS, our DNS may come from CloudFlare, and our database may come from Heroku. Terraform will build all these resources across all these providers in parallel.