An Organizational Scenario
-
This is scenario of an organization called as LearningThoughts.
-
LearningThoughts has an application for HRMS => lt-hrms
-
LearningThoughts has many customers and Each of customers have their own server infrastructure. Some organizations have
- On-Premise Infrastructure:
- Cloud Infrastructure:
- On-Premise Infrastructure:
-
So, how does lt-hrms handle the variations in server infrastructure
-
Automating deployment for multiple server infrastructures is also a challenge
- VMWare has its own way of automation
- HyperV has its own ways of automation
- OpenStack Has its own way of automation
- Azure => Azure CLI/Powershell or ARM Templates
- AWS => AWS CLI or CloudFormation
- GCloud => GCloud cli or Gcloud templates
-
So we need an effective solution which can deploy lt-hrms app in multiple server infrastructure (Creating servers) and then to deploy application into individual server using shell/powershell/ansible/chef etc
-
What are possible solutions?
- Writing a script for all the possible infrastructures might be complex and making changes will become difficult
- Create your own tool with the help of dev team. Maintenance becomes a challenge
-
To solve these kind of issues, we need InfraProvisioning tools. We have the infraprovisioning tools such as AWS Cloudformation, Azure ARM Tempalte, Openstack Heat but they work only their environments
-
Terraform is an infra provisioning tool which can work with various server infrastructures and the way we approach to write the template in terraform is declarative
- Terraform supports Declarative Language
-
Terraform is an Opensource tool developed by HashiCorp using Go Language. Terraform is all about copying one binary(executable) in the system
-
5000 feet overview of how terraform works
-
To create Terraform template terraform has its own language (Domain specific language) => Terraform Configuration Language Refer Here
Softwares to be installed on the system
-
Terminal:
- Mac => Terminal
- Windows => Powershell (Terminal)
- Linux => Terminal
-
Git
-
Visual Studio Code
-
Refer Here for the software installations on windows
-
Mac:
- Homebrew: Refer Here for the homebrew installation. Launch terminal and execute the command
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - Git:
brew install git - Visual Studio Code: Refer Here
- terraform Refer Here
- Homebrew: Refer Here for the homebrew installation. Launch terminal and execute the command
-
Windows:
- Chocolatey: Refer Here
- Git:
choco install git -y - VisualStudioCode:
choco install vscode -y - terraform:
choco install terraform
