From 0ef92cf8ed537671b65ce4e24ce8af5e29b61548 Mon Sep 17 00:00:00 2001
From: Timna Brown <24630902+brown9804@users.noreply.github.com>
Date: Thu, 12 Jun 2025 14:28:20 -0600
Subject: [PATCH 1/3] overview expressroute sample
---
3_networking/expressroute/README.md | 64 +++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100644 3_networking/expressroute/README.md
diff --git a/3_networking/expressroute/README.md b/3_networking/expressroute/README.md
new file mode 100644
index 0000000..73dcd2a
--- /dev/null
+++ b/3_networking/expressroute/README.md
@@ -0,0 +1,64 @@
+# Terraform Template - Azure ExpressRoute
+
+Costa Rica
+
+[](https://github.com/)
+[brown9804](https://github.com/brown9804)
+
+Last updated: 2025-06-11
+
+----------
+
+> This template contains Terraform configurations to create and manage an Azure ExpressRoute circuit, including provider, peering location, and bandwidth settings.
+
+> [!NOTE]
+> ExpressRoute circuits require coordination with your chosen service provider.
+
+
+
+
+
+## File Descriptions
+
+- **main.tf**: Contains the main configuration for creating the Azure ExpressRoute circuit.
+- **variables.tf**: Defines the input variables used in the Terraform configuration.
+- **terraform.tfvars**: Provides default values for the variables defined in `variables.tf`.
+- **outputs.tf**: Defines the outputs such as ExpressRoute circuit ID and service key.
+
+## Variables
+
+| Variable Name | Description | Type | Example Value |
+|------------------------ |--------------------------------------------------|--------|-----------------------------|
+| `subscription_id` | The Azure subscription ID | string | `"00000000-0000-0000-0000-000000000000"` |
+| `resource_group_name` | The name of the resource group | string | `"my-expressroute-rg"` |
+| `location` | The Azure region to deploy resources | string | `"eastus"` |
+| `expressroute_name` | The name of the ExpressRoute circuit | string | `"my-expressroute"` |
+| `service_provider_name` | The name of the ExpressRoute service provider | string | `"Equinix"` |
+| `peering_location` | The peering location for the ExpressRoute circuit| string | `"Silicon Valley"` |
+| `bandwidth_in_mbps` | The bandwidth in Mbps for the circuit | number | `200` |
+| `sku_tier` | The SKU tier for ExpressRoute | string | `"Standard"` |
+| `sku_family` | The SKU family for ExpressRoute | string | `"MeteredData"` |
+
+## Usage
+
+1. Clone the repository and navigate to the expressroute directory.
+2. Update the `terraform.tfvars` file with your values.
+3. Initialize and apply the Terraform configuration:
+
+```bash
+terraform init
+terraform plan
+terraform apply
+```
+
+## Outputs
+
+| Output Name | Description |
+|----------------------------|---------------------------------------------|
+| `expressroute_id` | The ID of the ExpressRoute circuit |
+| `expressroute_service_key` | The service key of the ExpressRoute circuit |
+
+
+
Total Visitors
+

+
From 128962c5a9fe26f3ea9191a80a81b94c8a256da1 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Thu, 12 Jun 2025 20:28:37 +0000
Subject: [PATCH 2/3] Update last modified date in Markdown files
---
3_networking/expressroute/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/3_networking/expressroute/README.md b/3_networking/expressroute/README.md
index 73dcd2a..0b9a810 100644
--- a/3_networking/expressroute/README.md
+++ b/3_networking/expressroute/README.md
@@ -5,7 +5,7 @@ Costa Rica
[](https://github.com/)
[brown9804](https://github.com/brown9804)
-Last updated: 2025-06-11
+Last updated: 2025-06-12
----------
From 0e8e6c9a2001769e92c89911cadf99f72324dca5 Mon Sep 17 00:00:00 2001
From: Timna Brown <24630902+brown9804@users.noreply.github.com>
Date: Thu, 12 Jun 2025 14:29:49 -0600
Subject: [PATCH 3/3] sample added
---
3_networking/expressroute/main.tf | 23 ++++++++++
3_networking/expressroute/outputs.tf | 7 ++++
3_networking/expressroute/provider.tf | 19 +++++++++
3_networking/expressroute/terraform.tfvars | 18 ++++++++
3_networking/expressroute/variables.tf | 49 ++++++++++++++++++++++
5 files changed, 116 insertions(+)
create mode 100644 3_networking/expressroute/main.tf
create mode 100644 3_networking/expressroute/outputs.tf
create mode 100644 3_networking/expressroute/provider.tf
create mode 100644 3_networking/expressroute/terraform.tfvars
create mode 100644 3_networking/expressroute/variables.tf
diff --git a/3_networking/expressroute/main.tf b/3_networking/expressroute/main.tf
new file mode 100644
index 0000000..1ae8d35
--- /dev/null
+++ b/3_networking/expressroute/main.tf
@@ -0,0 +1,23 @@
+# main.tf
+# This file contains the main configuration for creating an Azure ExpressRoute circuit.
+
+# Resource Group
+resource "azurerm_resource_group" "er" {
+ name = var.resource_group_name
+ location = var.location
+}
+
+# ExpressRoute Circuit
+resource "azurerm_express_route_circuit" "er" {
+ name = var.expressroute_name
+ location = azurerm_resource_group.er.location
+ resource_group_name = azurerm_resource_group.er.name
+ service_provider_name = var.service_provider_name
+ peering_location = var.peering_location
+ bandwidth_in_mbps = var.bandwidth_in_mbps
+
+ sku {
+ tier = var.sku_tier
+ family = var.sku_family
+ }
+}
\ No newline at end of file
diff --git a/3_networking/expressroute/outputs.tf b/3_networking/expressroute/outputs.tf
new file mode 100644
index 0000000..4627c16
--- /dev/null
+++ b/3_networking/expressroute/outputs.tf
@@ -0,0 +1,7 @@
+# outputs.tf
+# This file defines the outputs for the ExpressRoute configuration.
+
+output "expressroute_id" {
+ description = "The ID of the ExpressRoute circuit"
+ value = azurerm_express_route_circuit.er.id
+}
diff --git a/3_networking/expressroute/provider.tf b/3_networking/expressroute/provider.tf
new file mode 100644
index 0000000..f3f9b2d
--- /dev/null
+++ b/3_networking/expressroute/provider.tf
@@ -0,0 +1,19 @@
+# provider.tf
+# This file configures the Azure provider to interact with Azure resources.
+# It specifies the required provider and its version, along with provider-specific configurations.
+
+terraform {
+ required_version = ">= 1.8, < 2.0"
+ # Specify the required provider and its version
+ required_providers {
+ azurerm = {
+ source = "hashicorp/azurerm" # Source of the AzureRM provider
+ version = "~> 4.16.0" # Version of the AzureRM provider
+ }
+ }
+}
+
+provider "azurerm" {
+ features {} # Enable all features for the AzureRM provider
+ subscription_id = var.subscription_id # Use the subscription ID variable
+}
diff --git a/3_networking/expressroute/terraform.tfvars b/3_networking/expressroute/terraform.tfvars
new file mode 100644
index 0000000..55f03a5
--- /dev/null
+++ b/3_networking/expressroute/terraform.tfvars
@@ -0,0 +1,18 @@
+# terraform.tfvars
+# This file provides default values for the variables defined in variables.tf.
+# These values can be overridden by specifying different values during Terraform execution.
+
+# Azure Subscription
+subscription_id = "" # "your-subscription-id"
+
+# Resource Group
+resource_group_name = "RG-expressroute-test"
+location = "eastus"
+
+# ExpressRoute Configuration
+expressroute_name = "my-expressroute"
+service_provider_name = "Equinix"
+peering_location = "Silicon Valley"
+bandwidth_in_mbps = 200
+sku_tier = "Standard"
+sku_family = "MeteredData"
\ No newline at end of file
diff --git a/3_networking/expressroute/variables.tf b/3_networking/expressroute/variables.tf
new file mode 100644
index 0000000..8ca879e
--- /dev/null
+++ b/3_networking/expressroute/variables.tf
@@ -0,0 +1,49 @@
+# variables.tf
+# This file defines the input variables used in the Terraform configuration.
+
+variable "subscription_id" {
+ description = "The Azure subscription ID"
+ type = string
+}
+
+variable "resource_group_name" {
+ description = "The name of the resource group"
+ type = string
+}
+
+variable "location" {
+ description = "The Azure region to deploy resources"
+ type = string
+}
+
+variable "expressroute_name" {
+ description = "The name of the ExpressRoute circuit"
+ type = string
+}
+
+variable "service_provider_name" {
+ description = "The name of the ExpressRoute service provider"
+ type = string
+}
+
+variable "peering_location" {
+ description = "The peering location for the ExpressRoute circuit"
+ type = string
+}
+
+variable "bandwidth_in_mbps" {
+ description = "The bandwidth in Mbps for the ExpressRoute circuit"
+ type = number
+}
+
+variable "sku_tier" {
+ description = "The SKU tier for ExpressRoute (Standard or Premium)"
+ type = string
+ default = "Standard"
+}
+
+variable "sku_family" {
+ description = "The SKU family for ExpressRoute (MeteredData or UnlimitedData)"
+ type = string
+ default = "MeteredData"
+}