
Master basic to advanced Terraform concepts through real-life, large-scale AWS project scenarios to pass the HashiCorp Terraform Associate Certification (003), guided by an experienced senior infrastructure architect.
Meet an experienced senior architect with expertise in IT architecture, cloud infrastructure, cloud migration, DevOps, and information security. Learn through engaging online teaching, goal setting, and flexible video lectures.
Learn Terraform by doing with real examples, balancing theory with practical, best-practice approaches. Build a real AWS project to see infrastructure as code in action and prepare for HashiCorp certification.
Explore how Terraform enables infrastructure as code to describe, version, and reuse cloud and on-prem resources through declarative configuration, providers, modules, and a trusted plan with a state file.
Compare Terraform with CloudFormation, ARM templates, and configuration tools like Chef, Puppet, and Ansible. See Terraform's platform independence, declarative management, and a single tool with a state file.
Build a fully configured Terraform development environment by installing Terraform on Windows, macOS, and Linux, managing versions, and setting up AWS CLI, accounts, API credentials, and VS Code integration.
Install Terraform on Windows by downloading the AMD64 binary from the official site, extracting it, placing terraform.exe in a PATH directory, and verifying with terraform -version on Windows Server 2022.
Install Terraform on macOS using Homebrew or manual download. Unzip the binary, move it to /usr/local/bin, and verify with terraform -version.
Install and verify Terraform on Linux Ubuntu using apt, add the HashiCorp repository and GPG key, then run terraform -version to confirm.
Manage multiple versions of Terraform on a single machine with tfswitch and keep the state file compatible across updates. Standardize project versions to avoid disruptive upgrades.
Install the AWS CLI on macOS with Homebrew and explore its text-based commands to manage AWS resources, configure credentials, and automate tasks like listing S3 buckets.
Learn to create and verify an AWS account, set up billing and identity verification, and choose a developer support plan to activate full access for Terraform deployments.
Explore how Terraform uses AWS API access and credential generation, creating and managing access keys such as Access Key ID and Secret Access Key to authorize programmatic requests.
Configure the AWS CLI credentials by entering your access key, secret key, default region, and output format, and learn to secure and manage AWS access with IAM.
Automate obtaining temporary AWS credentials for the AWS CLI and Terraform with saml2aws, using SAML 2.0 IdPs like Okta.
Configure Visual Studio Code for Terraform development by installing the HashiCorp Terraform, Terraform Autocomplete, and Rainbow Brackets extensions, enabling syntax highlighting, formatting, autocompletion, and error checking.
Review Terraform concepts across operating systems and environments. Use tfswitch and saml2aws for version control, and configure AWS CLI credentials to enable Terraform to access AWS API.
Master infrastructure with Terraform by exploring infrastructure as code, HashiCorp configuration language basics, and JSON as an alternative, then tour the Terraform project structure and practice init, plan, and apply.
Master the concept of infrastructure as code (IaC) with Terraform, automating provisioning and management of information technology resources, while preventing configuration drift through version-controlled, repeatable deployments in devops.
Explore the HashiCorp configuration language (HCL) and its role in Terraform configurations. Learn about blocks, arguments, expressions, resources, variables, data sources, interpolation, and comments.
Explore JSON syntax as an alternative to HCL in Terraform configurations, compare their structures, benefits, and trade-offs for integrating with JSON-based systems and APIs.
Explore a three-tier Terraform project structure with presentation, application, and data layers powered by AWS services such as the load balancer, CloudFront, S3, EC2 auto-scaling, and RDS.
Master infrastructure as code with Terraform, leveraging HCL and JSON syntax to define resources for a three-tier AWS setup, and practice init, plan, and apply commands.
Explore how Terraform interacts with service providers like AWS, master the core workflow from initialization to applying and destroying resources, and learn authentication and authorization, planning, and idempotency.
Understand how Terraform providers translate resource declarations into service API calls, enabling uniform infrastructure management across AWS and other services through a seamless HCL to API interface.
Master Terraform's IaC workflow through five steps, writing HCL source code in .tf files, initialization, planning, applying, and destroying, to build and manage infrastructure resources.
Master Terraform authentication and authorization by learning how providers, such as the AWS provider, securely validate identities and grant access to cloud resources through various authentication methods.
Use static credentials by placing AWS access key and secret key in Terraform provider configuration, a simple but insecure approach; apply least-privilege access and avoid committing keys to version control.
Learn how to use environment variables to authenticate Terraform with AWS, keeping credentials out of configuration files, with practical steps to set access key and secret key using export.
Learn to use a shared credentials file with Terraform and the aws command line interface, switching profiles via the aws profile environment variable or Terraform configuration, while keeping keys secure.
Assign an IAM role to an EC2 instance to provide Terraform with temporary AWS credentials for API requests, automating credential management and improving security in production environments.
Discover how assume role enables secure cross-account access in AWS, and how Terraform uses it to grant temporary permissions through IAM roles for multi-account environments.
Enable AWS identity federation by using external identity providers such as Active Directory, Google, or Facebook to log in and obtain temporary credentials that Terraform uses to manage AWS resources.
Choose a right authentication method for Terraform with AWS by balancing environment variables, shared credentials, EC2 roles, assume role, identity federation, and MFA, then apply least privilege through IAM policies.
Discover how the Terraform init command sets up your working directory by installing provider plugins, initializing the backend, and preparing modules, the essential first step in infrastructure as code.
Preview infrastructure changes with Terraform plan by refreshing the state and comparing current and desired configuration, generating a secure execution plan that may create, update, or destroy resources.
Save the Terraform execution plan to a file with terraform plan -out=tfplan to reuse it, enable review and approval, and apply the saved plan to ensure predictability.
Run terraform apply to enact your planned infrastructure on AWS, creating, updating, or deleting resources. Confirm the action or use a pre-approved plan (terraform plan -out=tfplan) for idempotent execution.
Master how to safely destroy infrastructure with terraform destroy, read the destruction plan, confirm removal, and selectively target resources with -target for precise, irreversible cleanup.
Explore idempotency in Terraform to keep infrastructure consistent and reliable as you run Terraform apply and reconcile desired with actual state.
Recap the core Terraform workflow from initialization to destroying, covering authentication with AWS, providers, backend state, planning and saving plans, applying changes, and ensuring idempotency.
Master Terraform state management by examining state files, desired versus current state, drift, and the pros and cons of local and remote states, including S3 backends, DynamoDB locking, and workspaces.
Learn how Terraform state management uses the state file as the source of truth, mapping resources to real-world infrastructure and updating the mapping in real time.
Mastering Terraform explains how the desired state in HCL configurations compares with the current state tracked in the state file, and how terraform apply reconciles them within infrastructure as code.
Discover the differences between local and remote Terraform state, and learn best practices for team collaboration, state security, versioning, backups, and careful planning.
Store Terraform state securely using Amazon S3 backend with encryption and versioning for durability and security. Create S3 bucket, configure main.tf with bucket, key, region, then run terraform init.
Transition from local to remote state in Terraform by selecting a backend (S3, Google Cloud Storage, or Terraform Cloud), configure it, then run terraform init to migrate state.
Understand how Terraform state locking prevents concurrent modifications to state file during apply, ensuring a consistent state, with backends like S3 with DynamoDB, Google Cloud Storage, and Azure Blob Storage.
Understand drift between Terraform state and live infrastructure and its causes, including manual changes, external actions, and configuration updates. Use plan, refresh, and import to keep the state aligned.
Import existing resources created outside of Terraform with Terraform import, then define a resource block and run plan to synchronize state and configuration.
Enable cross-project collaboration in Terraform by using the terraform_remote_state data source to read outputs from one project, such as an S3 bucket, into another, boosting reusability and efficiency.
Master Terraform state management by aligning desired and current states, enabling cross-project collaboration via remote state on AWS S3, with state locking via DynamoDB and drift management.
Explore Terraform expressions from literal values to dynamic blocks, mastering quoting, interpolation, for expressions, conditional logic, and navigating lists and maps for flexible infrastructure configurations.
Explore Terraform data types and literal expressions, including strings, numbers, bools, lists, and maps, and learn how to access individual elements from these structures.
Master Terraform templates with quoted strings, heredoc strings, and interpolation to define and tailor infrastructure, using variables and multi-line text for clear, scalable configurations.
Terraform syntax and blocks, including resources, variables, outputs, modules, providers, data sources, and references like var.variable and module.output.
Navigate Terraform configurations spanning multiple files by using path.module, path.root, and path.cwd to reference scripts and files relative to the module, root, or current directory.
Learn how to use Terraform's conditional expressions to dynamically tailor infrastructure, returning true or false values and combining conditions with logical operators and nesting for production, region, and environment cases.
Learn how Terraform’s for expression transforms and filters collections by iterating over lists, maps, or objects and producing lists or objects using keys and values (K and V).
Learn how to use Terraform dynamic blocks to create repeatable nested tag blocks for multiple aws ec2 instances via a map variable, using for_each.
Master Terraform expressions, including literals, quoting, heredocs, and interpolation, and learn conditional expressions, for expressions, and dynamic blocks for lists and maps with readable configurations.
Explore Terraform built-in functions, including numeric, string, collection, encoding, filesystem, date and time, hash and crypto, IP network, and type conversion functions, with practical examples.
Discover how Terraform's built-in functions unlock data manipulation, string and arithmetic operations, and conditional logic within the HashiCorp Configuration Language, while modules provide reusable workarounds for custom behavior.
Explore three essential terraform built-in functions, ABS, MAX, and CEIL, and see how ABS yields positive differences, MAX enforces minimum counts, and CEIL rounds up resources.
Master Terraform's string built-ins: format, substr, join, for naming resources, extracting data from ARNs, and joining subnet IDs, enabling dynamic infrastructure configurations.
Master three essential Terraform built-in functions: length, element, and flatten, to manage lists, maps, and sets, and flatten subnet data, such as counting security group IDs and selecting a subnet.
Explore three practical built-in encoding functions in Terraform: JSONENCODE, BASE64ENCODE, and YAMLENCODE, converting values to JSON, Base64, and YAML for configs, secrets, and data transmission.
Master three built-in terraform functions—file, fileexists, and filebase64—to read local files, conditionally load config, and encode data for aws ec2 user data and kubernetes secrets.
Explore three essential Terraform date and time built-in functions: formatdate formats ISO 8601 dates, timeadd calculates future times, and timestamp provides UTC RFC 3339 timestamps to tag AWS instances.
Explore Terraform's built-in md5, sha256, and base64encode functions to secure data, verify integrity, and encode binary content.
Master three built-in Terraform functions for network management: cidrsubnet for subnetting, cidrhost for host addresses, and cidrnetmask for netmasks, enabling efficient IP addressing in Terraform configurations.
Explore how to convert data types in Terraform using the three built-in functions tostring, tonumber, and tolist to ensure strings, numbers, and lists are handled correctly.
Explore core built-in HashiCorp Terraform functions, including numeric, string, collection, encoding and decoding, filesystem, time, hash and crypto, and IP network functions, emphasizing secure, efficient infrastructure.
Explore Terraform modules, learn their basic concept, and why they’re essential. Build a local module, manage inputs, outputs, and locals, explore the registry, version control, forking, and sharing modules.
Discover how Terraform modules group resources into reusable units with the root module; define inputs and outputs in variables.tf and outputs.tf, and call modules via the module block and source.
Learn to build a local Terraform module by creating main.tf, variables.tf, and outputs.tf, then call it from the root module and run terraform init and terraform apply.
Leverage input variables to customize Terraform modules across dev, staging, and prod, use output variables to connect modules, and employ local values for concise, maintainable code.
Explore how to leverage modules from the Public Terraform Registry to accelerate infrastructure deployments, configure module inputs and outputs, manage versions, and integrate reusable patterns into your projects.
Pin Terraform modules from the registry to ensure consistent, reliable deployments and prevent unexpected changes. Learn semantic versioning, test updates in non-production environments, and review release notes before production.
Fork Terraform modules from the registry to customize features, then manage updates via an upstream remote, resolve merge conflicts, and point your Terraform source to the fork for stability.
Learn how to write and publish a public Terraform module for the public Terraform registry, including structure, inputs, outputs, docs, testing, and versioning.
Publish your Terraform module to the public registry by linking a GitHub repository, applying versioning with tags like v1.0.0, and following naming conventions such as terraform-- to ensure discoverability.
Explore how Terraform modules organize and scale infrastructure, create personal modules with input, output, and local variables, and use the public registry, versioning, forking, and publishing to the community.
Explore Terraform provisioners, including local-exec and remote-exec, and learn their role in infrastructure as code, lifecycle management, failure handling, and best practices for robust infrastructure.
Explore Terraform provisioners, including local-exec and remote-exec, their use as a last resort, and practical examples for bootstrapping and cleanup, along with pros, cons, and alternatives.
Learn how the local-exec provisioner runs a local executable on the Terraform machine after resource creation, and use it sparingly with idempotent scripts.
Master the remote-exec provisioner in Terraform to run commands on created resources as a last resort, using inline or script blocks, while noting when to use it and its limitations.
Explore creation-time and destroy-time provisioners in Terraform, including how to bootstrap resources and perform cleanup, and learn when to use them as a last resort.
Configure provisioner failure behavior in Terraform with the on_failure attribute, choosing continue or fail to maintain resilience; note the default fatal behavior when unspecified.
Explore how Terraform provisioners operate, including local-exec and remote-exec, creation-time and destroy-time, and on_failure handling, with best practices to rely on native resources.
Master advanced Terraform topics, including depends on, count, for each, tainting, and lifecycle hooks. Explore dependency lock file, workspaces, Terraform graph, validation, HashiCorp Vault, and unit testing to ensure infrastructure.
Learn to use the depends_on argument in Terraform to explicitly define dependencies, manage the dependency graph and resource order, and improve reliability across modules, scripts, and cloud resources.
Leverage the count argument in Terraform to create multiple resource instances from a block. Reduce code duplication and enable scaling, while knowing when to prefer for_each for complex scenarios.
Master the for_each argument in Terraform to create multiple resources from a map or set. Compare for_each with count to manage unique resources and update or delete individually.
Learn how tainting a resource in Terraform marks it as tainted in the state, prompting a destroy and recreate on the next apply, and when to use this manual intervention.
Explore Terraform lifecycle hooks to control how resources are created, updated, and destroyed. Use create before destroy, prevent destroy, and ignore changes to fine-tune availability and safety during updates.
Understand how Terraform dependency lock files (.lock.hcl) record exact provider versions to ensure consistent, repeatable deployments across teams, generated by Terraform init and updated via providers lock.
Master terraform workspaces to maintain separate state files for dev and prod, switch environments with workspace commands, and apply per-workspace .tfvars to compare configurations and outcomes.
Visualize your Terraform execution plan and resource dependencies with the terraform graph command. Output a DOT graph for GraphViz to reveal dependencies and execution order, aiding debugging in complex infrastructures.
Use Terraform validate to catch syntax errors in your configuration files before applying changes. It checks syntax against HashiCorp Configuration Language and does not verify infrastructure state or provider connectivity.
Explore HashiCorp Vault as a secure secret management tool that encrypts secrets, issues temporary credentials for services, and controls access with audit trails, reducing risks from hard-coded credentials in apps.
Master unit testing for infrastructure as code with Terraform, using mock resources to validate configurations and interactions, and learn tools like Terraform validate and Terratest.
Master Terraform by reinforcing depends on, count, and for each; tainting resources, lifecycle hooks, and dependency lock files, then explore workspaces, graph, validation, HashiCorp Vault, and unit testing.
Are you ready to enter the transformative world of DevOps? Terraform, a well known and widely used tool for Infrastructure As a Code DevOps pattern. Whether you're preparing for the Terraform Authoring and Operations Professional Certification or keen to understand its fundamentals, we’ve designed this course just for you.
Why pick this course?
Detailed Topics: Delve deep into over 100 Terraform concepts. From basics to advanced, we ensure you're set for the Terraform Certification.
Hands-On Learning: More than just theory. Engage in a substantial Amazon AWS project. Witness Terraform's power and utility in tangible real-world applications.
Beginner Friendly: New to Terraform? We welcome learners of all levels. Our structured lessons let you grasp concepts at your own pace.
Experience Counts: Benefit from Oleksiy Pototskyy’s rich 9-year journey with Terraform. Absorb essential tips, best practices, and invaluable insights from someone who’s been in the trenches.
Oleksiy curated this course with a vision: to provide a streamlined, effective learning path for Terraform enthusiasts. It’s a treasure trove of knowledge without unnecessary jargon.
Dive in, and embark on a rewarding journey to master Terraform. We promise a transformative learning experience, and can't wait to support you every step of the way!
I wish you good luck!