# Organize cluster into a resource group resource "azurerm_resource_group" "cluster" { name = var.cluster_name location = var.region } resource "azurerm_virtual_network" "network" { resource_group_name = azurerm_resource_group.cluster.name name = var.cluster_name location = azurerm_resource_group.cluster.location address_space = [var.host_cidr] } # Subnets - separate subnets for controller and workers because Azure # network security groups are based on IPv4 CIDR rather than instance # tags like GCP or security group membership like AWS resource "azurerm_subnet" "controller" { resource_group_name = azurerm_resource_group.cluster.name name = "controller" virtual_network_name = azurerm_virtual_network.network.name address_prefixes = [cidrsubnet(var.host_cidr, 1, 0)] } resource "azurerm_subnet_network_security_group_association" "controller" { subnet_id = azurerm_subnet.controller.id network_security_group_id = azurerm_network_security_group.controller.id } resource "azurerm_subnet" "worker" { resource_group_name = azurerm_resource_group.cluster.name name = "worker" virtual_network_name = azurerm_virtual_network.network.name address_prefixes = [cidrsubnet(var.host_cidr, 1, 1)] } resource "azurerm_subnet_network_security_group_association" "worker" { subnet_id = azurerm_subnet.worker.id network_security_group_id = azurerm_network_security_group.worker.id }