Duration 3 days – 21 hrs
Overview
This hands-on training course introduces participants to Terraform and Ansible—two powerful open-source tools used in DevOps environments for managing infrastructure and automating software provisioning. The course covers how developers and QA engineers can create reproducible infrastructure, automate configuration, and manage multi-environment deployments using best practices in Infrastructure as Code (IaC). Real-world examples and labs ensure practical application aligned with development and QA needs.
Objectives
- Understand and apply Infrastructure as Code (IaC) principles.
- Use Terraform to define, provision, and manage infrastructure across environments.
- Automate configuration, provisioning, and deployments using Ansible playbooks and roles.
- Integrate Terraform and Ansible into development and QA workflows.
- Manage and troubleshoot environment provisioning across dev/test environments.
Audience
- Developers
- QA Engineers
- DevOps Engineers
- Site Reliability Engineers (SRE)
- System Administrators managing infrastructure for dev/test
Pre-requisites
- Basic knowledge of system administration (Linux/Unix preferred)
- Familiarity with scripting or coding (YAML, Bash, or Python)
- Understanding of cloud platforms (AWS, Azure, or GCP) is helpful but not required
Content
Day 1: Terraform Fundamentals
Introduction to Infrastructure as Code
- Benefits and tools: Terraform vs others
- Declarative vs imperative approaches
Terraform Basics
- Providers, resources, variables, outputs
- Writing Terraform configuration files (.tf)
Managing State
- Terraform state files and remote backends
- Terraform CLI: init, plan, apply, destroy
Modules and Reusability
- Creating and using modules
- Input/output variables
Hands-on Labs
Provision EC2 or VM instances on a cloud/local provider
Create and destroy environments programmatically
Day 2: Ansible for Configuration Management
Introduction to Ansible
- Agentless automation, YAML syntax, and architecture
- Inventory files and ad-hoc commands
Playbooks and Roles
- Writing playbooks for provisioning and testing environments
- Using Ansible roles for modularity and reusability
Variables and Templates
- vars, group_vars, host_vars, and Jinja2 templating
Error Handling and Conditionals
- Tags, conditionals, loops, and handlers
Hands-on Labs
- Create an Ansible playbook to configure a dev/test server
- Automate web server or application environment setup
Day 3: Integration & Dev-QA Use Cases
Terraform + Ansible Integration
- Using Terraform to provision infrastructure and Ansible for post-provision configuration
- Passing dynamic inventory from Terraform to Ansible
Common Use Cases
- Dev/test environment provisioning
- QA environment reset and automation
- Configuration drift detection and remediation
Automation Pipelines
- Integrating Terraform and Ansible in Jenkins/GitLab pipelines
- Infrastructure testing (e.g., Molecule for Ansible, Terratest for Terraform)
Security & Compliance
- Best practices in managing secrets, SSH keys, and cloud credentials
- Idempotency and repeatable deployment patterns
Hands-on Final Lab
- Deploy a complete environment (infra + app config) using Terraform and Ansible end-to-end

