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 + +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](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. + +

+ image +

+ +## 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

+ Visitor Count +
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 [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](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" +}