Basic Scenario-Based Terraform Interview Questions and Answers

Scenario: You need to create a VPC with multiple subnets in different availability zones.

Question: How would you define this in Terraform?

Answer: You would use the aws_vpc, aws_subnet, and aws_availability_zone resources, utilizing modules for reusability and defining subnets in a loop.

Scenario: Your Terraform configuration needs to create an EC2 instance and attach an existing security group.

Question: How do you reference the existing security group?

Answer: Use the data block to fetch the existing security group and reference it in your aws_instance resource.

Scenario: You are asked to migrate an existing infrastructure managed outside Terraform into Terraform.

Question: How would you approach this task?

Answer: Use terraform import to bring the existing resources into Terraform management and ensure the state file reflects the current infrastructure state.

Scenario: Multiple team members need to work on the same Terraform configuration.

Question: How do you manage the state file to avoid conflicts?

Answer: Use remote state storage with state locking enabled, such as Terraform Cloud, AWS S3 with DynamoDB, or Azure Blob Storage with a shared key.

Scenario: A Terraform plan indicates that certain resources will be destroyed and recreated.

Question: How do you investigate the cause and prevent it?

Answer: Check for changes in immutable properties or dependencies in the configuration. Use lifecycle blocks with ignore_changes to prevent recreation if necessary.

Scenario: You need to deploy resources across multiple cloud providers.

Question: How would you structure your Terraform configuration?

Answer: Create provider configurations for each cloud provider and use modules to encapsulate the resource definitions for each provider.

Scenario: Your Terraform apply failed halfway through.

Question: What steps do you take to resolve the situation?

Answer: Investigate the error message, ensure resources are in the expected state, and use terraform apply again. Check the state file if necessary.

Scenario: You need to create infrastructure for multiple environments (dev, staging, prod).

Question: How do you manage different configurations?

Answer: Use workspaces or separate state files and configuration files for each environment, ensuring modularization and parameterization.

Scenario: A critical security patch needs to be applied to all EC2 instances.

Question: How do you ensure all instances are updated?

Answer: Update the AMI or configuration in the Terraform code, apply the changes, and use a rolling update strategy to minimize downtime.

Scenario: A team member accidentally deleted the Terraform state file.

Question: What do you do to recover?

Answer: Restore the state file from a backup or remote state storage, and use terraform refresh to update the state file with current resource statuses.

Scenario: Your Terraform configuration has hardcoded values that need to be changed frequently.

Question: How do you make it more flexible?

Answer: Use input variables to parameterize the configuration, allowing values to be changed without modifying the code.

Scenario: You are tasked with ensuring infrastructure compliance with a set of security policies.

Question: How do you enforce these policies in Terraform?

Answer: Implement policy as code using tools like Sentinel or Open Policy Agent (OPA) integrated with Terraform.

Scenario: You need to create resources that depend on each other in a specific order.

Question: How do you manage the dependencies?

Answer: Use implicit dependencies by referencing resource attributes or explicit dependencies with the depends_on meta-argument.

Scenario: Your Terraform apply command fails due to rate limiting by the cloud provider.

Question: How do you handle this?

Answer: Implement retries with exponential backoff, and use batching or throttling techniques in your configuration.

Scenario: You need to scale infrastructure based on load.

Question: How do you configure auto-scaling in Terraform?

Answer: Use resources like aws_autoscaling_group and aws_launch_configuration, and define scaling policies based on metrics.

Scenario: You need to perform a blue-green deployment.

Question: How do you implement this with Terraform?

Answer: Create separate environments (blue and green) and switch traffic between them using a load balancer or DNS.

Scenario: Your infrastructure needs to be resilient to regional failures.

Question: How do you design it with Terraform?

Answer: Deploy resources across multiple regions and use global services or cross-region replication.

Scenario: You need to update the Terraform provider to the latest version.

Question: What steps do you take to ensure a smooth update?

Answer: Check the provider's release notes, update the provider version constraint in the configuration, and run terraform init -upgrade.

Scenario: A resource configuration change is required but should not affect existing resources.

Question: How do you apply this change?

Answer: Use the lifecycle block with the ignore_changes argument to prevent specific attributes from triggering resource replacement.

Scenario: You need to create a resource only if it doesn't already exist.

Question: How do you handle this in Terraform?

Answer: Use the count or for_each meta-arguments with conditional expressions to control resource creation based on existence checks.

Scenario: You are asked to integrate Terraform with a CI/CD pipeline.

Question: How do you implement this?

Answer: Use Terraform commands in your CI/CD tool (e.g., Jenkins, GitLab CI) to run terraform init, plan, and apply as part of the deployment process.

Scenario: Your Terraform state file grows too large.

Question: What can you do to manage it?

Answer: Break the state file into multiple smaller files by using modules and workspaces, and store state remotely.

Scenario: A new team member needs access to manage Terraform infrastructure.

Question: How do you grant access securely?

Answer: Use role-based access control (RBAC) in your remote state backend and limit access with least privilege principles.

Scenario: You need to debug a Terraform configuration issue.

Question: What tools or methods do you use?

Answer: Use terraform plan to check for discrepancies, terraform validate for syntax errors, and logging/debugging output from Terraform commands.

Scenario: Your Terraform configuration must comply with organizational naming conventions.

Question: How do you enforce naming standards?

Answer: Use modules with predefined naming conventions and validate naming patterns with policies or scripts.

Scenario: You need to create a resource that is dependent on an output from another resource.

Question: How do you reference this output?

Answer: Use output variables to expose values from one module or resource and reference them in another.

Scenario: You need to create resources conditionally based on input variables.

Question: How do you achieve this in Terraform?

Answer: Use conditional expressions with the count or for_each meta-arguments to create resources based on input variable conditions.

Scenario: You need to version control your Terraform configurations.

Question: What best practices do you follow?

Answer: Use a version control system like Git, modularize your code, maintain clear commit messages, and implement CI/CD for automatic testing and deployment.

Scenario: Your organization adopts a multi-cloud strategy.

Question: How do you manage infrastructure across different cloud providers?

Answer: Use Terraform’s multi-provider capabilities, create provider configurations for each cloud, and define modules to encapsulate cloud-specific resource definitions.

Scenario: You need to roll back infrastructure to a previous state.

Question: How do you perform a rollback in Terraform?

Answer: Use versioned state files or revert to a previous commit in your version control system, and run terraform apply to restore the desired state.

0
Subscribe to my newsletter

Read articles from Shraddha Suryawanshi directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Shraddha Suryawanshi
Shraddha Suryawanshi