45 Top Terraform Interview Questions For Acing Job Interviews - Hackatrick - Technology With Security

12 November 2020

45 Top Terraform Interview Questions For Acing Job Interviews

The 21st Century bought several changes in the field of science and technology. Mostly, in the field of computer science, where the only motive was to move and store the data efficiently across the internet. This necessity gave birth to what we call the “Cloud-technology,” and along with it came various tools like Terraform required to sustain it. 


For all in the field of IT, staying updated with the latest technology has become an integral part of their lives. Further, the advent of cloud computing has opened multiple avenues for scaling up business processes aided by real-time collaboration. 


This has indeed helped create numerous opportunities for IT professionals while also increasing the competition amongst all to stay ahead when it comes to adopting new tools and techniques. As such, searching for terraform interview questions is highly anticipated by aspiring professionals who want to build a foolproof career in IT.


So, without further ado, let’s look at some of the most common yet tough terraform interview questions and their answers to help you excel in your career.


45 Terraform Interview Questions and Answers for IT Interviews


1. Define Infrastructure as code?


Infrastructure as code generally means writing and executing code to define, deploy, execute, and destroy the infrastructure.  


2. How do you think using infrastructure as code helps?


Using infrastructure as code makes it easier to provision and apply infrastructure configurations by standardizing workflows across providers such as Azure, AWS, GCP etc. by binding them with a standard syntax. 


3. What do you mean by Day 0 and Day 1 activities?


Day 0 and Day 1 refer to the lifecycle of the infrastructure. Day 0 refers to the code that provisions and configures the initial build. Day 1 refers to the OS and application configurations that follow after the initial build.

4. What do you mean by multi-cloud deployment?


Multi-cloud deployment means provisioning the infrastructure into multiple cloud environments to increase the fault tolerance of your applications.


5. What is Terraform?


Terraform is an open-source DevOps tool created by HashiCorp for maintaining data center infrastructure using either HashiCorp Configuration Language, which falls in the high-level category or JSON. 

6. What is the default file that Terraform creates?


The default file that Terraform creates in terraform.tfstate.

7. Terraform is created using which programming language?


Terraform is created using the Go programming language.

8. What are the applications of Terraform?


Some of the noteworthy applications of Terraform as listed below are:


Self-service clusters

Henoku-app setup

Multi-tier applications

Multi-cloud deployers

Resource schedulers

Developing demo versions of softwares

9. How is Terraform useful?


Terraform is an instrument that is mainly used to build, alter, and version infrastructure safely and effectively. Further, it can direct existing and accepted service providers, along with conventioning in-house solutions. 


10. Define a few features of Terraform?


Here a few features of terraform 


1. Built-in graphing features for visualizing infrastructure.
2. Acknowledging resource relationships.
3. Constant updates by the open-source project.
4. Change automation.
5. User-friendly syntax
6. Infrastructure as code

11. In how many structures Terraform is logically divided?


Terraform is logically divided into two distinct structures.


12. What are the components of Terraform?


The two distinct structures of Terraform are its components, namely - Terraform core and Terraform plugins. 


13. What are RPC’s in Terraform?


RPC stands for “Remote Procedure Call,” which Terraform core uses to communicate with Terraform plugins. With this, Terraform core provides many diverse ways to discover and load plugins as per requirements. 


14. List out the primary responsibilities of Terraform Core.


Terraform core is a statically-compiled binary that offers an entry point for users and the following are its responsibilities-


1. Execution of plans.
2. Deploying RPC for communicating with plugins.
3. Constructing resource graph.
4. Managing resource state.
5. Acting like infrastructure as code for reading and interpolation of configuration files and other modules.

15. Why DevOps is preferring Terraform?


DevOps prefer Terraform because it brings efficiency and safety to the software delivery process. Also, terraform brings in the power of automation and extends the support of infrastructure as code. Further, terraform supports all kinds of coding principles, making it very dynamic and robust at the same time. 


16. What is the code to implement infrastructure? Also, what is the code to show an execution plan and not apply it?


The code to apply infrastructure is “Terraform Apply,” and the code to show an execution plan without applying is “Terraform Plan”.

17. Say about Terraform plugins?


Terraform plugins are executable binaries in Go programming language. They are the provisioners and providers in Terraform have built-in provisioner plugins through which a user has to search for the provider plugin according to their requirements. They also help in implementing domain-specific services that they represent. 


18. What is the relation between Terraform and AWS?


Terraform is a part of the AWS partner network (APN) and a member of the AWS DevOps competency used as an “Infrastructure as code” tool for creating, updating, and versioning your infrastructure similar to AWS Cloudformation.



19. Why are provisioners used in Terraform?


Terraform uses provisioners to arrange servers or other transportation modules for repair. It mimics exact actions on both restricted as well as remote machines.

20. What are the primary responsibilities of Terraform plugins?


The primary responsibilities of Terraform plugins as listed below, are:


1. Initialization of libraries used for making API calls
2. Definition of resources that map to particular services
3. Authentication with infrastructure provider

21. What is the primary responsibility of Terraform provisioner?


Provisioners in terraform are primarily responsible for executing commands or scripts over a resource upon its creation or destruction.


22. What is Terraform CLI along with few commands?


Terraform CLI is a very responsive command-line interface platform to write codes for Terraforming. 


Here a few commands:


Apply: builds or changes infrastructure.

Console: Interactive console for Terraform interpolations.

destroy: Destroy Terraform-managed infrastructure.

env: Workspace management

fmt: Rewrites config files to canonical format

get: Download and install modules for the configuration

graph: Build a visible graph of Terraform resources Import: existing infrastructure into Terraform

Init: Initialize a Terraform working directory

output: Read output from a state file plan: Generate and show an execution plan 

validate: Validates the Terraform files

version: Prints the Terraform version

Workspace: Workspace management


23. Define modules in Terraform?


Modules in terraform contain several resources that are used together with a root module compulsory for every terraform which has all the resources in .tf files.


24. What version controls are supported on Terraform?


Terraform primarily supports Github for version control. Along with it, we can also use Github CE, Github EE as well as Bucket Cloud. 


25. How does Terraform discover plugins?


Terraform uses “Terraform init” to interpret operational files in the directory. After finding out plugins, it then searches for installed plugins in various locations. It also downloads extra plugins at times. Then, it decides the plugin versions and writes a security device file, ensuring that terraform deploys the identical plugin versions.


26. Can you enter policies in the open-source or pro version of Terraform enterprise?


No, we cannot enter policies either to the open-source description or pro version of terraform enterprise.


27. Define the function of init in Terraform?


Init in terraform is used to initialize an operational index containing terraform pattern files. After writing a new terraform design or cloning an obtainable one from another source, this is the first authority that should be sprinted. 


28. Is it safe to run Init in Terraform multiple times?


Yes, it is safe to run init in terraform multiple times.

29. How many types of plugins are there?


There are mainly 3 types of plugins-


1. Built-in provisioners
2. Providers by Hashicorp 
3. Third-party provisioners and providers

30. On what the behavior of Terraform plugins depend on and how do they behave during discovery?


The behavior of terraform plugins depends on their type. 


The built-in provisioners are always available in the terraform binary. The providers by Hashicorp download automatically if they aren’t there. For the third-party providers and provisioners, we have to install them manually. 


31. What is Terragrunt?


Terragrunt is like a thin cover for Terraform for implementation of the practices advocated by Terraform: Up and Running Book. It also encourages versioning of modules and reusability for multiple environments with some useful features, counting recursive code implementation in sub-directories. 



32. Comment on callbacks with Terraform on Azure? Is it possible?

Yes callbacks are possible with Terraform on Azure by using the Azure event hub provided by AzureRM.


33. Comment on the Terraform architecture for building a single EC2 instance on AWS?


provider "aws" {


region = "ap-south-1"


}


resource "aws_instance"


"example" {


ami = "ami-4fc58420"


instance_type = "t2.micro"


tags {


 Name = "terraform-example"


}


34. What is the command to manually taint a resource in Terraform and what it does?


The code to manually taint a resource is -


terraform taint resource.id


The command modifies the state file marking it as tainted. 


35. What happens once a resource has been marked tainted?


Once the resource is marked tainted, it will be destroyed and recreated when the next apply comes to action.


36. If provisioners fail will it also cause Terraform apply to fail?


Yes, failure of provisioners will also result in failure of Terraform apply.


37. How do you set experiments in Terraform?


It is done simply by putting the experimental argument within the Terraform box. The syntax is as follows- 


terraform {

  experiments = [example]

}


38. Can expressions in provisioner blocks refer to their parent resource as name?


No, it cannot!


39. Does Terraform support both cloud and on-premises infrastructure platforms?


Yes, Terraform supports both!


40. Is it possible to delete the default workspace in Terraform?


No it is not possible to delete the default workspace in Terraform.



41. What is the command to access the current workspace in the configuration file?


The command to access the current workspace in configuration files is -

${terraform.workspace}


42. Do you agree when Terraform recommends semantic versioning of every module?


Yes!


43. Define the arguments for using modules in your configuration?


source and version

// example

module "consul" {

  source = "hashicorp/consul/aws"

  version = "0.1.0"

}


44. What is the code to access the output variable from the modules?


The command to access output variable from within the modules is -

module.<MODULE NAME>.<OUTPUT NAME>


45. What do you mean by a child module?


A module summoned by another configuration is often called the “Child Module”.