diff --git a/terraform/aws/aws-ec2-autoscaling-dual-subnet/outputs.tf b/terraform/aws/aws-ec2-autoscaling-dual-subnet/outputs.tf index 66dd139..6344142 100644 --- a/terraform/aws/aws-ec2-autoscaling-dual-subnet/outputs.tf +++ b/terraform/aws/aws-ec2-autoscaling-dual-subnet/outputs.tf @@ -1,3 +1,7 @@ +output "resource_name_prefix" { + value = local.name +} + output "vpc_id" { value = module.vpc.vpc_id } diff --git a/terraform/aws/aws-ec2-autoscaling-dual-subnet/versions.tf b/terraform/aws/aws-ec2-autoscaling-dual-subnet/versions.tf index 22380d3..8906343 100644 --- a/terraform/aws/aws-ec2-autoscaling-dual-subnet/versions.tf +++ b/terraform/aws/aws-ec2-autoscaling-dual-subnet/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { tailscale = { source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 0.24" } } } diff --git a/terraform/aws/aws-ec2-autoscaling-session-recorder/outputs.tf b/terraform/aws/aws-ec2-autoscaling-session-recorder/outputs.tf index 66dd139..6344142 100644 --- a/terraform/aws/aws-ec2-autoscaling-session-recorder/outputs.tf +++ b/terraform/aws/aws-ec2-autoscaling-session-recorder/outputs.tf @@ -1,3 +1,7 @@ +output "resource_name_prefix" { + value = local.name +} + output "vpc_id" { value = module.vpc.vpc_id } diff --git a/terraform/aws/aws-ec2-autoscaling-session-recorder/scripts/tsrecorder_docker.tftpl b/terraform/aws/aws-ec2-autoscaling-session-recorder/scripts/tsrecorder_docker.tftpl index 3af537a..d061be4 100644 --- a/terraform/aws/aws-ec2-autoscaling-session-recorder/scripts/tsrecorder_docker.tftpl +++ b/terraform/aws/aws-ec2-autoscaling-session-recorder/scripts/tsrecorder_docker.tftpl @@ -19,6 +19,8 @@ tee /etc/apt/sources.list.d/docker.list > /dev/null apt-get -qq update apt-get -yqq install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +mkdir -p "$HOME/tsrecorder/state" + docker run \ --rm -d \ --name tsrecorder \ diff --git a/terraform/aws/aws-ec2-autoscaling-session-recorder/versions.tf b/terraform/aws/aws-ec2-autoscaling-session-recorder/versions.tf index 22380d3..8906343 100644 --- a/terraform/aws/aws-ec2-autoscaling-session-recorder/versions.tf +++ b/terraform/aws/aws-ec2-autoscaling-session-recorder/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { tailscale = { source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 0.24" } } } diff --git a/terraform/aws/aws-ec2-autoscaling/outputs.tf b/terraform/aws/aws-ec2-autoscaling/outputs.tf index 66dd139..6344142 100644 --- a/terraform/aws/aws-ec2-autoscaling/outputs.tf +++ b/terraform/aws/aws-ec2-autoscaling/outputs.tf @@ -1,3 +1,7 @@ +output "resource_name_prefix" { + value = local.name +} + output "vpc_id" { value = module.vpc.vpc_id } diff --git a/terraform/aws/aws-ec2-autoscaling/versions.tf b/terraform/aws/aws-ec2-autoscaling/versions.tf index 22380d3..8906343 100644 --- a/terraform/aws/aws-ec2-autoscaling/versions.tf +++ b/terraform/aws/aws-ec2-autoscaling/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { tailscale = { source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 0.24" } } } diff --git a/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/outputs.tf b/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/outputs.tf index 658d46f..8ed38ee 100644 --- a/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/outputs.tf +++ b/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/outputs.tf @@ -1,3 +1,7 @@ +output "resource_name_prefix" { + value = local.name +} + output "vpc_id" { value = module.vpc.vpc_id } diff --git a/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/versions.tf b/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/versions.tf index 22380d3..8906343 100644 --- a/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/versions.tf +++ b/terraform/aws/aws-ec2-instance-dual-stack-ipv4-ipv6/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { tailscale = { source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 0.24" } } } diff --git a/terraform/aws/aws-ec2-instance/outputs.tf b/terraform/aws/aws-ec2-instance/outputs.tf index 658d46f..8ed38ee 100644 --- a/terraform/aws/aws-ec2-instance/outputs.tf +++ b/terraform/aws/aws-ec2-instance/outputs.tf @@ -1,3 +1,7 @@ +output "resource_name_prefix" { + value = local.name +} + output "vpc_id" { value = module.vpc.vpc_id } diff --git a/terraform/aws/aws-ec2-instance/versions.tf b/terraform/aws/aws-ec2-instance/versions.tf index 22380d3..8906343 100644 --- a/terraform/aws/aws-ec2-instance/versions.tf +++ b/terraform/aws/aws-ec2-instance/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { tailscale = { source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 0.24" } } } diff --git a/terraform/aws/internal-modules/aws-ec2-autoscaling/versions.tf b/terraform/aws/internal-modules/aws-ec2-autoscaling/versions.tf index a214e8f..951051f 100644 --- a/terraform/aws/internal-modules/aws-ec2-autoscaling/versions.tf +++ b/terraform/aws/internal-modules/aws-ec2-autoscaling/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.0, < 6.0" + version = ">= 6.0, < 7.0" } } } diff --git a/terraform/aws/internal-modules/aws-ec2-instance/versions.tf b/terraform/aws/internal-modules/aws-ec2-instance/versions.tf index a214e8f..951051f 100644 --- a/terraform/aws/internal-modules/aws-ec2-instance/versions.tf +++ b/terraform/aws/internal-modules/aws-ec2-instance/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.0, < 6.0" + version = ">= 6.0, < 7.0" } } } diff --git a/terraform/aws/internal-modules/aws-vpc/main.tf b/terraform/aws/internal-modules/aws-vpc/main.tf index aad47f8..a608750 100644 --- a/terraform/aws/internal-modules/aws-vpc/main.tf +++ b/terraform/aws/internal-modules/aws-vpc/main.tf @@ -15,7 +15,7 @@ resource "random_integer" "vpc_cidr" { module "vpc" { # https://github.com/terraform-aws-modules/terraform-aws-vpc source = "terraform-aws-modules/vpc/aws" - version = ">= 5.0, < 6.0" + version = ">= 6.0, < 7.0" name = var.name tags = var.tags @@ -37,8 +37,8 @@ module "vpc" { # ipv6 enable_ipv6 = var.enable_ipv6 public_subnet_assign_ipv6_address_on_creation = var.enable_ipv6 - public_subnet_ipv6_prefixes = range(0, length(var.public_subnets)) - private_subnet_ipv6_prefixes = range(10, 10 + length(var.private_subnets)) + public_subnet_ipv6_prefixes = range(0, length(local.public_subnet_cidr)) + private_subnet_ipv6_prefixes = range(10, 10 + length(local.private_subnet_cidr)) } data "aws_availability_zones" "available" { diff --git a/terraform/aws/internal-modules/aws-vpc/versions.tf b/terraform/aws/internal-modules/aws-vpc/versions.tf index a214e8f..951051f 100644 --- a/terraform/aws/internal-modules/aws-vpc/versions.tf +++ b/terraform/aws/internal-modules/aws-vpc/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.0, < 6.0" + version = ">= 6.0, < 7.0" } } } diff --git a/terraform/azure/azure-linux-vm/main.tf b/terraform/azure/azure-linux-vm/main.tf index a17a8b9..45138cf 100644 --- a/terraform/azure/azure-linux-vm/main.tf +++ b/terraform/azure/azure-linux-vm/main.tf @@ -17,11 +17,12 @@ locals { "--advertise-connector", "--advertise-exit-node", "--advertise-routes=${join(",", coalescelist( - local.vpc_cidr_block, + tolist(local.vpc_cidr_block), ))}", ] // Modify these to use your own VPC + resource_group_id = azurerm_resource_group.main.id resource_group_name = azurerm_resource_group.main.name location = azurerm_resource_group.main.location @@ -45,6 +46,7 @@ module "vpc" { tags = local.azure_tags location = local.location + resource_group_id = local.resource_group_id resource_group_name = local.resource_group_name subnet_name_public = "public" @@ -63,6 +65,18 @@ resource "tailscale_tailnet_key" "main" { tags = local.tailscale_acl_tags } +resource "azurerm_public_ip" "vm" { + location = local.location + resource_group_name = local.resource_group_name + + name = "${local.resource_group_name}-vm" + tags = local.azure_tags + + sku = "Standard" + allocation_method = "Static" + zones = [] +} + module "tailscale_azure_linux_virtual_machine" { source = "../internal-modules/azure-linux-vm" @@ -72,6 +86,7 @@ module "tailscale_azure_linux_virtual_machine" { # public subnet primary_subnet_id = local.subnet_id network_security_group_id = local.network_security_group_id + public_ip_address_id = azurerm_public_ip.vm.id machine_name = local.name machine_size = local.instance_type diff --git a/terraform/azure/azure-linux-vm/outputs.tf b/terraform/azure/azure-linux-vm/outputs.tf index d98dcd6..9a84535 100644 --- a/terraform/azure/azure-linux-vm/outputs.tf +++ b/terraform/azure/azure-linux-vm/outputs.tf @@ -1,3 +1,7 @@ +output "resource_name_prefix" { + value = local.name +} + output "vpc_id" { value = module.vpc.vnet_id } diff --git a/terraform/azure/azure-linux-vm/providers.tf b/terraform/azure/azure-linux-vm/providers.tf index 7e4d8fe..9121052 100644 --- a/terraform/azure/azure-linux-vm/providers.tf +++ b/terraform/azure/azure-linux-vm/providers.tf @@ -1,5 +1,5 @@ provider "azurerm" { - skip_provider_registration = true + resource_provider_registrations = "none" features { resource_group { prevent_deletion_if_contains_resources = false @@ -8,4 +8,6 @@ provider "azurerm" { delete_os_disk_on_deletion = true } } + + # subscription_id = "00000000-0000-0000-0000-000000000000" } diff --git a/terraform/azure/azure-linux-vm/versions.tf b/terraform/azure/azure-linux-vm/versions.tf index 22380d3..8906343 100644 --- a/terraform/azure/azure-linux-vm/versions.tf +++ b/terraform/azure/azure-linux-vm/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { tailscale = { source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 0.24" } } } diff --git a/terraform/azure/internal-modules/azure-linux-vm/main.tf b/terraform/azure/internal-modules/azure-linux-vm/main.tf index 98509aa..98a2257 100644 --- a/terraform/azure/internal-modules/azure-linux-vm/main.tf +++ b/terraform/azure/internal-modules/azure-linux-vm/main.tf @@ -19,7 +19,7 @@ resource "azurerm_network_interface" "primary" { internal_dns_name_label = "${var.machine_name}-primary" ip_configuration { subnet_id = var.primary_subnet_id - name = "internal" + name = "primary" private_ip_address_allocation = "Dynamic" public_ip_address_id = var.public_ip_address_id } diff --git a/terraform/azure/internal-modules/azure-linux-vm/versions.tf b/terraform/azure/internal-modules/azure-linux-vm/versions.tf index 5dfddf7..7746b9c 100644 --- a/terraform/azure/internal-modules/azure-linux-vm/versions.tf +++ b/terraform/azure/internal-modules/azure-linux-vm/versions.tf @@ -2,11 +2,7 @@ terraform { required_providers { azurerm = { source = "hashicorp/azurerm" - version = ">= 3.0, < 4.0" - } - tailscale = { - source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 4.0, < 5.0" } } } diff --git a/terraform/azure/internal-modules/azure-network/main.tf b/terraform/azure/internal-modules/azure-network/main.tf index 6759aac..ddd5eca 100644 --- a/terraform/azure/internal-modules/azure-network/main.tf +++ b/terraform/azure/internal-modules/azure-network/main.tf @@ -12,27 +12,33 @@ resource "random_integer" "vpc_cidr" { } module "vpc" { - # https://registry.terraform.io/modules/Azure/network/azurerm/latest - source = "Azure/network/azurerm" - version = ">= 5.0, < 6.0" - - resource_group_location = var.location - resource_group_name = var.resource_group_name - - vnet_name = var.name - tags = var.tags - - address_spaces = local.cidrs - subnet_prefixes = local.subnet_cidrs - subnet_names = [ - var.subnet_name_public, - var.subnet_name_private, - var.subnet_name_private_dns_resolver, - ] - - subnet_delegation = { - "${var.subnet_name_private_dns_resolver}" = [ - { + # https://registry.terraform.io/modules/Azure/avm-res-network-virtualnetwork/azurerm/latest + source = "Azure/avm-res-network-virtualnetwork/azurerm" + version = ">= 0.16, < 1.0" + + location = var.location + parent_id = var.resource_group_id + + name = var.name + tags = var.tags + + address_space = local.cidrs + subnets = { + "public" = { + name = var.subnet_name_public + address_prefixes = [local.subnet_cidrs[0]] + } + "private" = { + name = var.subnet_name_private + address_prefixes = [local.subnet_cidrs[1]] + nat_gateway = { + id = azurerm_nat_gateway.nat.id + } + } + "dns-inbound" = { + name = var.subnet_name_private_dns_resolver + address_prefixes = [local.subnet_cidrs[2]] + delegations = [{ name = "Microsoft.Network/dnsResolvers" service_delegation = { name = "Microsoft.Network/dnsResolvers" @@ -40,17 +46,15 @@ module "vpc" { "Microsoft.Network/virtualNetworks/subnets/join/action", ] } - } - ] + }] + } } - - use_for_each = true # https://github.com/Azure/terraform-azurerm-network#notice-to-contributor } data "azurerm_subnet" "public" { resource_group_name = var.resource_group_name - virtual_network_name = module.vpc.vnet_name + virtual_network_name = module.vpc.name name = var.subnet_name_public depends_on = [module.vpc.vnet_subnets] @@ -59,7 +63,7 @@ data "azurerm_subnet" "public" { data "azurerm_subnet" "private" { resource_group_name = var.resource_group_name - virtual_network_name = module.vpc.vnet_name + virtual_network_name = module.vpc.name name = var.subnet_name_private depends_on = [module.vpc.vnet_subnets] @@ -68,7 +72,7 @@ data "azurerm_subnet" "private" { data "azurerm_subnet" "dns-inbound" { resource_group_name = var.resource_group_name - virtual_network_name = module.vpc.vnet_name + virtual_network_name = module.vpc.name name = var.subnet_name_private_dns_resolver depends_on = [module.vpc.vnet_subnets] @@ -83,7 +87,7 @@ resource "azurerm_private_dns_resolver" "main" { name = var.name tags = var.tags - virtual_network_id = module.vpc.vnet_id + virtual_network_id = module.vpc.resource_id } resource "azurerm_private_dns_resolver_inbound_endpoint" "main" { @@ -107,23 +111,30 @@ resource "azurerm_nat_gateway" "nat" { location = var.location resource_group_name = var.resource_group_name - name = var.name + name = var.name + tags = var.tags + sku_name = "Standard" idle_timeout_in_minutes = 10 -} + zones = [] -resource "azurerm_subnet_nat_gateway_association" "nat" { - nat_gateway_id = azurerm_nat_gateway.nat.id - subnet_id = data.azurerm_subnet.private.id } +# resource "azurerm_subnet_nat_gateway_association" "nat" { +# nat_gateway_id = azurerm_nat_gateway.nat.id +# subnet_id = data.azurerm_subnet.private.id +# } + resource "azurerm_public_ip" "nat" { location = var.location resource_group_name = var.resource_group_name - name = "${var.name}-nat" + name = "${var.name}-nat" + tags = var.tags + sku = "Standard" allocation_method = "Static" + zones = [] } resource "azurerm_nat_gateway_public_ip_association" "nat" { diff --git a/terraform/azure/internal-modules/azure-network/outputs.tf b/terraform/azure/internal-modules/azure-network/outputs.tf index 68bb83e..aad274a 100644 --- a/terraform/azure/internal-modules/azure-network/outputs.tf +++ b/terraform/azure/internal-modules/azure-network/outputs.tf @@ -1,14 +1,14 @@ output "vnet_id" { - value = module.vpc.vnet_id + value = module.vpc.resource_id } output "vnet_name" { - value = module.vpc.vnet_name + value = module.vpc.name } output "vnet_address_space" { - value = module.vpc.vnet_address_space + value = module.vpc.address_spaces } output "vnet_subnets" { - value = module.vpc.vnet_subnets + value = module.vpc.subnets } output "public_subnet_id" { diff --git a/terraform/azure/internal-modules/azure-network/variables.tf b/terraform/azure/internal-modules/azure-network/variables.tf index 0f922fd..8281b1f 100644 --- a/terraform/azure/internal-modules/azure-network/variables.tf +++ b/terraform/azure/internal-modules/azure-network/variables.tf @@ -1,6 +1,10 @@ # # Variables for all resources # +variable "resource_group_id" { + description = "ID of Resource Group for all resources" + type = string +} variable "resource_group_name" { description = "Name of Resource Group for all resources" type = string diff --git a/terraform/azure/internal-modules/azure-network/versions.tf b/terraform/azure/internal-modules/azure-network/versions.tf index 39e5b29..7746b9c 100644 --- a/terraform/azure/internal-modules/azure-network/versions.tf +++ b/terraform/azure/internal-modules/azure-network/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { azurerm = { source = "hashicorp/azurerm" - version = ">= 3.0, < 4.0" + version = ">= 4.0, < 5.0" } } } diff --git a/terraform/google/google-compute-instance/outputs.tf b/terraform/google/google-compute-instance/outputs.tf index d5f5def..63d0d0c 100644 --- a/terraform/google/google-compute-instance/outputs.tf +++ b/terraform/google/google-compute-instance/outputs.tf @@ -1,3 +1,7 @@ +output "resource_name_prefix" { + value = local.name +} + output "instance_id" { value = module.tailscale_instance.instance_id } diff --git a/terraform/google/google-compute-instance/versions.tf b/terraform/google/google-compute-instance/versions.tf index 22380d3..8906343 100644 --- a/terraform/google/google-compute-instance/versions.tf +++ b/terraform/google/google-compute-instance/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { tailscale = { source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 0.24" } } } diff --git a/terraform/google/internal-modules/google-compute-instance/versions.tf b/terraform/google/internal-modules/google-compute-instance/versions.tf index ee541ae..b3679ed 100644 --- a/terraform/google/internal-modules/google-compute-instance/versions.tf +++ b/terraform/google/internal-modules/google-compute-instance/versions.tf @@ -2,11 +2,7 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 4.0, < 5.0" - } - tailscale = { - source = "tailscale/tailscale" - version = ">= 0.13.13" + version = ">= 7.0, < 8.0" } } } diff --git a/terraform/google/internal-modules/google-vpc/main.tf b/terraform/google/internal-modules/google-vpc/main.tf index 29912c8..6396145 100644 --- a/terraform/google/internal-modules/google-vpc/main.tf +++ b/terraform/google/internal-modules/google-vpc/main.tf @@ -26,7 +26,7 @@ resource "random_integer" "vpc_cidr" { module "vpc" { # https://registry.terraform.io/modules/terraform-google-modules/network/google/latest source = "terraform-google-modules/network/google" - version = ">= 7.0, < 8.0" + version = ">= 13.0, < 14.0" project_id = var.project_id network_name = var.name @@ -37,10 +37,10 @@ module "vpc" { module "cloud_router" { # https://registry.terraform.io/modules/terraform-google-modules/cloud-router/google/latest source = "terraform-google-modules/cloud-router/google" - version = ">= 6.0, < 7.0" + version = ">= 8.0, < 9.0" - project = var.project_id - region = var.region + project_id = var.project_id + region = var.region name = var.name network = module.vpc.network_name diff --git a/terraform/google/internal-modules/google-vpc/versions.tf b/terraform/google/internal-modules/google-vpc/versions.tf index 8b1e8d5..b3679ed 100644 --- a/terraform/google/internal-modules/google-vpc/versions.tf +++ b/terraform/google/internal-modules/google-vpc/versions.tf @@ -2,7 +2,7 @@ terraform { required_providers { google = { source = "hashicorp/google" - version = ">= 4.0, < 5.0" + version = ">= 7.0, < 8.0" } } }