This repository contains the Terraform configuration files used to deploy and manage the cloud infrastructure for Red Squad Inc. on Microsoft Azure. The infrastructure is designed to support a robust, secure, and scalable environment for our applications and services.
The following is a list of the primary components deployed within our Azure environment:
- Resource Group: A container that holds related resources for an Azure solution.
- Virtual Network (VNet): The fundamental building block for your private network in Azure.
- Public IP: An IP address that communicates with the internet, including Azure public-facing services.
- Load Balancer: Helps distribute traffic to multiple servers to ensure no single server becomes overwhelmed, increasing reliability and availability.
- Windows Server VMs: Virtual machines running the Windows Server operating system, serving as application hosts.
- Network Security Group (NSG): A set of firewall rules that allow or deny network traffic to resources connected to Azure VNets.
- VNet Peering: Connects two VNets in the same or different Azure regions, allowing resources to communicate with each other.
- Ubuntu Server VM: A virtual machine running the Ubuntu Server Linux distribution.
- DNS Record: A record that maps a domain name to an IP address in the DNS system.
The architecture consists of two main VNets:
- Front-end VNet: Hosts the public-facing components such as the load balancer and the Windows Server VMs.
- Back-end VNet: Contains the internal services such as the Ubuntu Server VM.
The VNets are peered to enable secure internal communication. The load balancer ensures high availability of the services by distributing incoming traffic across the Windows Server VMs.
Network Security Groups are configured to restrict access as follows:
- Only RDP traffic is allowed to the Windows Server VMs from specific, whitelisted IP addresses.
- SSH access to the Ubuntu Server VM is restricted to internal traffic from the front-end VNet.
To deploy this infrastructure:
- Clone the repository.
- Navigate to the repository directory.
- You must be in the directory of the file that you are wanting to run.
- Use Terraform to initialize, plan, and apply the configuration:
terraform init terraform plan terraform apply
A note to make, when you are deploying the VM configuraton you must use the following command:
terraform plan -var-file="../terraform.tfvars"
terraform apply -var-file="../terraform.tfvars"