mirror of
https://github.com/bregman-arie/devops-exercises.git
synced 2026-02-04 23:59:11 +00:00
Add exercise and solution for creating a custom VPC and subnets with … (#10597)
* Add exercise and solution for creating a custom VPC and subnets with Terraform * Add exercise and solution for creating a custom VPC and subnets with Terraform
This commit is contained in:
parent
2a9bfcb78b
commit
cf4400911b
@ -53,6 +53,7 @@
|
|||||||
|--------|--------|------|----|----|
|
|--------|--------|------|----|----|
|
||||||
| Launch EC2 instance | EC2 | [Exercise](exercises/launch_ec2_instance/exercise.md) | [Solution](exercises/launch_ec2_instance/solution.md) | |
|
| Launch EC2 instance | EC2 | [Exercise](exercises/launch_ec2_instance/exercise.md) | [Solution](exercises/launch_ec2_instance/solution.md) | |
|
||||||
| Rename S3 bucket | S3 | [Exercise](exercises/s3_bucket_rename/exercise.md) | [Solution](exercises/s3_bucket_rename/solution.md) | |
|
| Rename S3 bucket | S3 | [Exercise](exercises/s3_bucket_rename/exercise.md) | [Solution](exercises/s3_bucket_rename/solution.md) | |
|
||||||
|
| Create Custom VPC and Subnets | VPC | [Exercise](exercises/vpc_subnet_creation/exercise.md) | [Solution](exercises/vpc_subnet_creation/solution.md) | |
|
||||||
|
|
||||||
## Questions
|
## Questions
|
||||||
|
|
||||||
|
|||||||
19
topics/terraform/exercises/vpc_subnet_creation/exercise.md
Normal file
19
topics/terraform/exercises/vpc_subnet_creation/exercise.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Creating Custom VPC and Subnets with Terraform
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
* An existing AWS account with permissions to create VPCs and subnets.
|
||||||
|
* Terraform installed on your local machine.
|
||||||
|
* AWS CLI configured with your credentials.
|
||||||
|
|
||||||
|
|
||||||
|
## Objectives
|
||||||
|
1. Create a custom VPC with a specified CIDR block.
|
||||||
|
For example, you can use `10.0.0.0/16`.
|
||||||
|
2. Create two subnets within the VPC, each with a different CIDR block.
|
||||||
|
For example, you can use `10.0.0.0/20` for the first subnet and `10.0.16.0/20` for the second subnet.
|
||||||
|
|
||||||
|
Both subnets should be in different availability zones to ensure high availability.
|
||||||
|
3. Ensure that the VPC and subnets are tracked by Terraform.
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
Click [here to view the solution](solution.md)
|
||||||
78
topics/terraform/exercises/vpc_subnet_creation/solution.md
Normal file
78
topics/terraform/exercises/vpc_subnet_creation/solution.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# Creating Custom VPC and Subnets with Terraform
|
||||||
|
|
||||||
|
|
||||||
|
## Objectives
|
||||||
|
1. Create a custom VPC with a specified CIDR block.
|
||||||
|
For example, you can use `10.0.0.0/16`.
|
||||||
|
2. Create two subnets within the VPC, each with a different CIDR block.
|
||||||
|
For example, you can use `10.0.0.0/20` for the first subnet and `10.0.16.0/20` for the second subnet.
|
||||||
|
|
||||||
|
Both subnets should be in different availability zones to ensure high availability.
|
||||||
|
3. Ensure that the VPC and subnets are tracked by Terraform.
|
||||||
|
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Create a directory for the Terraform configuration
|
||||||
|
mkdir vpc_subnet_creation && cd vpc_subnet_creation
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Create the main.tf file with the VPC and subnets configuration
|
||||||
|
touch main.tf
|
||||||
|
```
|
||||||
|
|
||||||
|
```terraform
|
||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
aws = {
|
||||||
|
source = "hashicorp/aws"
|
||||||
|
version = "~> 5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "aws" {
|
||||||
|
region = "your-region" # e.g., ap-south-1
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_vpc" "my_custom_vpc" {
|
||||||
|
cidr_block = "10.0.0.0/16"
|
||||||
|
tags = {
|
||||||
|
Name = "my_custom_vpc_made_with_terraform"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_subnet" "Subnet_A" {
|
||||||
|
cidr_block = "10.0.0.0/20"
|
||||||
|
vpc_id = aws_vpc.my_custom_vpc.id
|
||||||
|
availability_zone = "your-availability-zone-a" # e.g., ap-south-1a
|
||||||
|
tags = {
|
||||||
|
"Name" = "Subnet A"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resource "aws_subnet" "Subnet_B" {
|
||||||
|
cidr_block = "10.0.16.0/20"
|
||||||
|
vpc_id = aws_vpc.my_custom_vpc.id
|
||||||
|
availability_zone = "your-availability-zone-b" # e.g., ap-south-1b
|
||||||
|
tags = {
|
||||||
|
"Name" = "Subnet B"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Initialize Terraform to download the AWS provider
|
||||||
|
terraform init
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Apply the Terraform configuration to create the VPC and subnets
|
||||||
|
terraform apply -auto-approve
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user