Terraform Interview Questions
Terraform Interview Questions
Terraform is a part of the AWS DevOps Competency and also an AWS Partner Network
(APN) advanced technology partner. It is similar to AWS Cloud Formation in the sense
that it is also an “infrastructure as code” tool that allows you to create, update, and
version your AWS infrastructure.
Terraform helps you manage all of your infrastructures as code and construct it as and
when needed. Here are its key main features:
3. Define IAC?
IAC or Infrastructure as Code allows you to build, change, and manage your
infrastructure through coding instead of manual processes. The configuration files are
created according to your infrastructure specifications and these configurations can be
edited and distributed securely within an organization.
By using the Azure Event Hubs, callbacks are probable on Azure. Terraform’s Azure
supplier provides effortless functionality to users. Microsoft Azure Cloud Shell provides
an already installed Terraform occurrence.
7. What is Terraform D?
Terraform D is a plugin used on most in-service systems and Windows. Terraform init
by default searches next directories for plugins.
8. Is history the same as it is on the web while using TFS API to provide resources?
Yes, the narration is similar to on the web because UI keeps API as the base. The
whole thing that is on the UI is availed during other methods and the API.
null_resource implements standard resource library, but no further action is taken. The
triggers argument allows an arbitrary set of values that will cause the replacement of
resources when changed.
11. What do you mean by Terraform cloud?
Terraform Cloud is a platform that enables teams to use Terraform together, either on-
demand or in response to various events. It is deeply integrated with Terraform's
workflows and data, unlike a general-purpose continuous integration system. It includes
easy access to shared state and secret data, detailed policy controls for updating
infrastructure and governing the contents of Terraform, a private registry for sharing
Terraform modules, and lots more.
Each Terraform configuration can specify a backend, which defines two main things:
14. What are the version controls supported by Terraform besides GitHub?
The version controls supported GitLab EE, GitLab CE, and Bucket cloud.
Some of the top competitors and alternatives to Terraform are Azure Management
Tools, Morpheus, CloudHealth, Turbonomic, and CloudBolt.
16. Explain the uses of Terraform CLI and list some basic CLI commands?
A jug for numerous resources that are used jointly is known as a module in Terraform.
The root module includes resources mentioned in the .tf files and is required for every
Terraform.
A Private Module Registry is a feature from Terraform Cloud that allows you to share
Terraform modules across the organization. You can enforce rules or “sentinel policies”
on the registry that specify how members of your organization can use the modules.
Yes, Terraform can be used for on-prem infrastructure. As there are a lot of obtainable
providers, we can decide which suits us the best. All that we need is an API.
1. Delete those resources from the cloud provider(API) and recreate them using
Terraform
2. Delete those resources from Terraform code to stop its management with it
3. Carry out a terraform import of the resource and remove the code that is trying
to recreate them
22. Name all version controls supported by Terraform
● Salt-masterless Provisioner
● Remote-exec Provisioner
● Puppet Provisioner
● Local-exec Provisioner
● Habitat Provisioner
● File Provisioner
● Chef Provisioner
The applications of Terraform are pretty broad due to its facility of extending its abilities
for resource manipulation. Some of the unique applications are:
● Sub-graphs
● Expression Evaluation
● Vertex Evaluation
● Graph Walk
● Graph Builder
● State Manager
● Configuration Loader
● CLI (Command Line interface)
● Backend
A resource graph is a visual representation of the resources. It helps modify and create
independent resources simultaneously. Terraform establishes a plan for the
configuration of the graph to generate plans and refresh the state. It creates structure
most efficiently and effectively to help us understand the drawbacks.
28. Can you provide a few examples where we can use for Sentinel policies?
Sentinels are a powerful way to implement a variety of policies in Terraform. Here are a
few examples:
Sentinel has three enforcement levels - advisory, soft mandatory, and hard mandatory.
● Advisory - Logged but allowed to pass. An advisory is issued to the user when
they trigger a plan that violates the policy.
● Soft Mandatory - The policy must pass unless an override is specified. Only
administrators have the ability to override.
● Hard Mandatory - The policy must pass no matter what. This policy cannot be
overridden unless it is removed. It is the default enforcement level in
Terraform.
Terraform requires credentials to communicate with your cloud provider's API. But most
of the time, these credentials are saved in plaintext on your desktop. GitHub is exposed
to thousands of API and cryptographic keys every day. Hence, your API keys should
never be stored in Terraform code directly. You should use encrypted storage to store
all your passwords, TLS certificates, SSH keys, and anything else that shouldn't be
stored in plain text.
Terragrunt is a thin wrapper that provides extra tools to keep configurations DRY,
manage remote state and work with multiple Terraform modules. It is used for:
State file locking is a Terraform mechanism in which operations on a specific state file
are blocked to avoid conflicts between multiple users performing the same process.
When one user releases the lock, then only the other one can operate on that state.
This helps in preventing state file corruption. This is a backend operation.
A tainted resource is a resource that is forced to be destroyed and recreated on the next
apply command. When a resource is marked as tainted, the state files are updated, but
nothing changes on infrastructure. The terraform plan shows that help will get destroyed
and recreated. The changes get implemented when the next apply happens.
A proven way of locking Terraform module version is using the Terraform module
registry as a source. We can use the ‘version’ attribute in module of the Terraform
configuration file. As the Github repository is being used as a source, we need to
specify versions, branch, and query string with ‘?ref’.
36. Give the terraform configuration for creating a single EC2 instance on AWS.
This is the Terraform configuration for creating a single EC2 instance on AWS:
provider “aws” {
region = “”}
resource “aws_instance”
“example” {
ami = ""
instance_type = ""
tags {
Name = "example"}
Run ‘terraform init’ with ‘-upgrade’ option. This command rechecks the
releases.hashicorp.com to find new acceptable provider versions. It also downloads
available provider versions. “.terraform/plugins/<OS>_<ARCH>” is the automatic
downloads directory.
38. How will you make an object of one module available for the other module at a high
level?
39. What are some of the latest Terraform Azure Provider factors?
The latest versions involve new data resources and Azurem_batch_certificate, which
helps in managing the certificate. This resource is used for controlling the prefix in
networking. There is fixing of bugs, and azurerm_app_service has also been enhanced.
40. How will you control and handle rollbacks when something goes wrong?
I need to recommit the previous code version to be the new and current version in my
VCS. This would trigger a terraform run, which would be responsible for running the old
code. As Terraform is more declarative, I will make sure all things in the code roll back
to the old code. I would use the State Rollback Feature of Terraform Enterprise to roll
back to the latest state if the state file got corrupted.