- Lab
-
Libraries: If you want this lab, consider one of these libraries.
Cross-Project Data Sharing
In this hands-on lab, you will build a producer-consumer pattern for sharing infrastructure data between separate Terraform projects using remote state. Starting with an empty workspace and a pre-configured S3 backend, you will create a networking project that provisions a VPC and subnets and exposes their IDs as outputs. You will then build an application project that reads those outputs using a `terraform_remote_state` data source to launch an EC2 instance in the correct subnet. Finally, you will explore governance challenges, including breaking changes when outputs are removed, dependency inversion to improve testability, and naming conventions for state paths at scale.
Lab Info
Table of Contents
-
Challenge
Build a Producer Project That Exposes Networking Metadata Through Versioned Remote State Outputs
- Configure the backend to store state at a team-based path in the shared S3 bucket.
- Provision a VPC with two subnets, an internet gateway, and a route table.
- Define output blocks for the VPC ID, subnet IDs, VPC CIDR, and internet gateway ID.
- Apply and verify that the outputs are visible in the remote state.
-
Challenge
Develop a Consumer Configuration That Retrieves and Utilizes Cross-Project Dependencies via a Read-Only Remote State Data Source
- Configure a separate backend path for the Application project.
- Write a
terraform_remote_statedata source pointing to the Networking project's state. - Create a security group and launch an EC2 instance using the remote state outputs.
- Inspect the cross-project data with terraform show and terraform output.
-
Challenge
Establish Governance and Naming Standards for Shared State Paths to Simplify Long-Term Dependency Management
- Simulate a breaking change by removing a producer output and observing the consumer impact.
- Refactor the Application project to use dependency inversion with a local module.
- Document the team-based state path naming convention.
About the author
Real skill practice before real-world application
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Learn by doing
Engage hands-on with the tools and technologies you’re learning. You pick the skill, we provide the credentials and environment.
Follow your guide
All labs have detailed instructions and objectives, guiding you through the learning process and ensuring you understand every step.
Turn time into mastery
On average, you retain 75% more of your learning if you take time to practice. Hands-on labs set you up for success to make those skills stick.