cyclecloud/main.tf (86 lines of code) (raw):

terraform { required_version = ">= 1.1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "=3.41.0" } } } provider "azurerm" { features { resource_group { prevent_deletion_if_contains_resources = true } } } # # Account # data "azurerm_subscription" "current" {} data "azurerm_client_config" "current" {} # # RG # resource "azurerm_resource_group" "rg" { name = var.cyclecloud_resource_group location = var.cyclecloud_location } # # Network # resource "azurerm_virtual_network" "vnet" { name = var.cyclecloud_vnet location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name address_space = [var.cyclecloud_vnet_address_space] } resource "azurerm_subnet" "subnet" { name = var.cyclecloud_subnet resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = [var.cyclecloud_subnet_address_prefix] service_endpoints = ["Microsoft.Storage"] } data "azurerm_virtual_network" "existing_vnet" { name = var.existing_vnet resource_group_name = var.existing_vnet_rg } resource "azurerm_virtual_network_peering" "cyclecloud_to_existing" { name = "cc-to-${var.cyclecloud_vnet}" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name remote_virtual_network_id = data.azurerm_virtual_network.existing_vnet.id use_remote_gateways = true } resource "azurerm_virtual_network_peering" "existing_to_cyclecloud" { name = "${var.cyclecloud_vnet}-to-cc" resource_group_name = var.existing_vnet_rg virtual_network_name = var.existing_vnet remote_virtual_network_id = azurerm_virtual_network.vnet.id allow_gateway_transit = true } # # Storage - Must not be hierarchical namespace enabled to work with CycleCloud # resource "azurerm_storage_account" "storage" { name = var.cyclecloud_storage_account resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location account_tier = "Standard" account_replication_type = "LRS" account_kind = "StorageV2" access_tier = "Hot" is_hns_enabled = "false" network_rules { default_action = "Deny" ip_rules = [var.local_ip_address] virtual_network_subnet_ids = [ azurerm_subnet.subnet.id ] } } resource "azurerm_storage_container" "container" { name = var.cyclecloud_storage_container storage_account_name = azurerm_storage_account.storage.name container_access_type = "private" } # # SSH public key # resource "azurerm_ssh_public_key" "public_key" { name = "public-key" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name public_key = file(var.public_key_path) } # # User identify for CycleCloud nodes # resource "azurerm_user_assigned_identity" "cyclecloud_node" { name = "cyclecloud-node" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name }