Infrastructure as code (IaC) is a method to create and manage infrastructure resources like servers, networks, storage, load balancers, and others, using descriptive code. Instead of using manual steps, the desired infrastructure configuration is represented as code inside files (sometimes called "configuration files"). These files serve as a model for the IaC tools which read the instructions inside and create the infrastructure.
This method provides multiple benefits in terms of speed, cost, and reliability. It allows faster deployments by removing manual steps that would take a much longer time and using an automated way instead, that quickly provisions and configures the infrastructure. It saves a lot of time and effort freeing up teams to work on other tasks, hence reducing costs for the business. IaC provides more reliability by reducing errors in configuration that can happen more often with manual steps. It makes creating the infrastructure a repeatable error-free task as no human error is introduced.
Amazon Web Services (AWS) is a public cloud environment that enables an on-demand self-service model for provisioning resources that can be used instantly by clients. AWS offers a wide variety of services including servers, networking, storage, serverless functions, security tools, databases, and others.
Users can request any resource/service and it gets created as fast as possible. They will only pay for the time they are using it. Or for the number of requests sent to this resource. In other cases, they'll pay for the amount of data used or transferred. Either way, when the resource/service is not needed anymore, the users can delete it to stop paying for an unnecessary component. This can provide a better and more cost-effective model than buying on-premise infrastructure and paying all the costs of the hardware and setup, upfront.
To manually create resources, users can navigate the online interface provided by AWS. Basically, buttons, menus, text boxes on a web page. The users can interact with those to specify how they want to configure their infrastructure. But APIs (Application Programming Interface) are also supported. Programs can connect to the API to interact with AWS directly, thus eliminating the need for manual human interaction. And IaC tools are one example of programs using APIs to tell AWS what it should do.
Pulumi is an IaC tool used to provision and manage infrastructure on multiple cloud platforms like AWS, Azure, and others. It gives you the flexibility of using configuration files written in YAML, or using an SDK (software development kit) in your preferred programming language so you can manage your infrastructure in a familiar programming style.
The main components of Pulumi are as follows :
1. Program: a Pulumi program is written in one programming language and describes how the desired infrastructure should be created and configured.
2. Language host: A Language host executes a Pulumi program and detects what resources this registers. The deployment engine is then notified about these resources.
3. Deployment engine: The Deployment engine receives the registered resources from the language host and compares the desired state with the current state to determine what changes need to be done on which resource, then it communicates with the infrastructure provider (like AWS) to apply these changes.
In this playground you’re provided with Pulumi already installed with all of its components. Since this IaC tool needs to deploy resources somewhere, you also get access to an AWS account that it can use. You can start writing Pulumi programs and execute them on AWS to test creating your desired infrastructure. You don’t need to setup or configure any additional tools. All you need is a KodeKloud Pro subscription and you’ll have access to a Pulumi and AWS environment straight from your web browser.