Terraform Interview Questions and Answers
Freshers / Beginner level questions & answers
Ques 1. What is Terraform?
Terraform is an open-source infrastructure as code (IaC) tool used for building, changing, and versioning infrastructure efficiently.
Ques 2. What is a Terraform module?
A Terraform module is a reusable and self-contained collection of Terraform configurations used to define and provision a particular piece of infrastructure.
Ques 3. What is the purpose of 'terraform init'?
'terraform init' initializes a Terraform working directory, downloading necessary plugins and setting up the backend for storing the Terraform state.
Ques 4. What is a Terraform provider?
A Terraform provider is a plugin that enables Terraform to interact with a specific cloud, infrastructure, or service provider, allowing resource creation and management.
Ques 5. What is remote backend in Terraform?
A remote backend in Terraform is a centralized location where Terraform stores its state file. It allows collaboration among team members and supports features like locking and state versioning.
Ques 6. What is Terraform's HCL?
HCL (HashiCorp Configuration Language) is the language used to write configuration files in Terraform. It is designed to be easy to read and write for both humans and machines.
Ques 7. What is Terraform's interpolation syntax?
Interpolation syntax is used in Terraform to insert values into strings. Examples include '${}' for variable interpolation and '${resource.type.name}' for referencing resource attributes.
Ques 8. What are Terraform workspaces used for?
Terraform workspaces allow you to manage multiple instances of the same infrastructure in a single configuration. Each workspace has its own state file, making it useful for environment separation.
Ques 9. Explain the purpose of 'terraform refresh'.
'terraform refresh' is used to reconcile the Terraform state with the real-world infrastructure. It updates the state file with the current state of the resources.
Ques 10. Explain the purpose of 'terraform import'.
'terraform import' is used to import existing infrastructure into Terraform. It associates an existing resource with a Terraform resource configuration.
Ques 11. What is the purpose of the 'depends_on' attribute in Terraform?
The 'depends_on' attribute in Terraform is used to explicitly specify the order in which resources should be created. It creates a dependency relationship between resources.
Ques 12. What is 'terraform console' used for?
'terraform console' provides an interactive command-line interface for evaluating expressions and interpolations in the context of a Terraform configuration.
Ques 13. How do you manage different environments (dev, prod) in Terraform?
Terraform supports workspaces and variable files to manage different environments. Separate configuration files or folders can be used for each environment.
Ques 14. What is the purpose of 'terraform taint'?
'terraform taint' marks a resource instance as tainted, indicating that it should be destroyed and recreated on the next 'terraform apply'.
Intermediate / 1 to 5 years experienced level questions & answers
Ques 15. Explain the difference between Terraform and Ansible.
Terraform is primarily an IaC tool that focuses on provisioning and managing infrastructure, while Ansible is a configuration management tool that automates software provisioning, configuration, and application deployment.
Ques 16. Explain the concept of 'state' in Terraform.
Terraform state is a snapshot of the infrastructure managed by Terraform. It is used to keep track of the resources created and their current state.
Ques 17. How does Terraform manage secrets and sensitive data?
Terraform uses input variables and data sources to manage sensitive information securely. Secrets can be stored in environment variables or using a secret management tool.
Ques 18. Explain the difference between 'terraform apply' and 'terraform plan'.
'terraform plan' shows the execution plan without actually applying the changes, while 'terraform apply' executes the plan and makes the changes to the infrastructure.
Ques 19. How can you create a reusable Terraform module?
To create a reusable Terraform module, define input variables, outputs, and use the module in other configurations. Organize the module in a separate directory with a 'main.tf' file.
Ques 20. How does Terraform handle dependencies between resources?
Terraform automatically handles dependencies between resources. It analyzes the resource graph and provisions resources in the correct order based on dependencies.
Ques 21. Explain the 'count' and 'for_each' meta-arguments in Terraform.
'count' is used to create multiple instances of a resource, while 'for_each' is used for creating multiple instances based on a map or set of values.
Ques 22. Explain the purpose of the 'locals' block in Terraform.
The 'locals' block in Terraform is used to define local variables within a module. These variables are not exposed to the calling module and are only accessible within the module's scope.
Ques 23. How can you manage Terraform remote state locking?
Terraform provides a 'backend' configuration for state storage, and some backends support locking. By configuring the 'lock' option, Terraform can lock the state to prevent concurrent modifications.
Ques 24. How do you handle sensitive data like API keys in Terraform?
Sensitive data like API keys can be stored securely using Terraform's sensitive input variable type or by using a secret management tool. Avoid storing sensitive information directly in configuration files.
Ques 25. What is the difference between 'provisioners' and 'null_resource' in Terraform?
Provisioners are used to execute scripts on a remote resource after creation, while 'null_resource' is a resource type that doesn't directly create infrastructure but can be used to trigger provisioners or other actions.
Ques 26. How does Terraform handle secrets in environment variables?
Terraform automatically masks sensitive information (like secrets) passed through environment variables in command output, making it more secure when dealing with secrets.
Ques 27. Explain the use of 'terraform state mv' command.
'terraform state mv' is used to move a resource instance from one Terraform state file to another. It allows restructuring or reorganizing resources in the state.
Ques 28. Explain the purpose of the 'terraform output' command.
'terraform output' is used to display the values of output variables defined in the Terraform configuration. It helps retrieve information about the infrastructure after it's created.
Ques 29. Explain the difference between 'resource' and 'data' blocks in Terraform.
A 'resource' block is used to define and create infrastructure resources, while a 'data' block is used to fetch and reference data that already exists, such as information from other resources.
Ques 30. How can you manage secret data in Terraform Cloud?
In Terraform Cloud, you can use the 'sensitive' attribute for variables to mark them as sensitive. Terraform Cloud also provides a secure environment for managing sensitive information.
Most helpful rated by users: