Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions terraform/aws/aws-ec2-autoscaling-dual-subnet/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
output "resource_name_prefix" {
value = local.name
}

output "vpc_id" {
value = module.vpc.vpc_id
}
Expand Down
2 changes: 1 addition & 1 deletion terraform/aws/aws-ec2-autoscaling-dual-subnet/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
tailscale = {
source = "tailscale/tailscale"
version = ">= 0.13.13"
version = ">= 0.24"
}
}
}
4 changes: 4 additions & 0 deletions terraform/aws/aws-ec2-autoscaling-session-recorder/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
output "resource_name_prefix" {
value = local.name
}

output "vpc_id" {
value = module.vpc.vpc_id
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
tailscale = {
source = "tailscale/tailscale"
version = ">= 0.13.13"
version = ">= 0.24"
}
}
}
4 changes: 4 additions & 0 deletions terraform/aws/aws-ec2-autoscaling/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
output "resource_name_prefix" {
value = local.name
}

output "vpc_id" {
value = module.vpc.vpc_id
}
Expand Down
2 changes: 1 addition & 1 deletion terraform/aws/aws-ec2-autoscaling/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
tailscale = {
source = "tailscale/tailscale"
version = ">= 0.13.13"
version = ">= 0.24"
}
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
output "resource_name_prefix" {
value = local.name
}

output "vpc_id" {
value = module.vpc.vpc_id
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
tailscale = {
source = "tailscale/tailscale"
version = ">= 0.13.13"
version = ">= 0.24"
}
}
}
4 changes: 4 additions & 0 deletions terraform/aws/aws-ec2-instance/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
output "resource_name_prefix" {
value = local.name
}

output "vpc_id" {
value = module.vpc.vpc_id
}
Expand Down
2 changes: 1 addition & 1 deletion terraform/aws/aws-ec2-instance/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
tailscale = {
source = "tailscale/tailscale"
version = ">= 0.13.13"
version = ">= 0.24"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 5.0, < 6.0"
version = ">= 6.0, < 7.0"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 5.0, < 6.0"
version = ">= 6.0, < 7.0"
}
}
}
6 changes: 3 additions & 3 deletions terraform/aws/internal-modules/aws-vpc/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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" {
Expand Down
2 changes: 1 addition & 1 deletion terraform/aws/internal-modules/aws-vpc/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 5.0, < 6.0"
version = ">= 6.0, < 7.0"
}
}
}
17 changes: 16 additions & 1 deletion terraform/azure/azure-linux-vm/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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"
Expand All @@ -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"

Expand All @@ -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
Expand Down
4 changes: 4 additions & 0 deletions terraform/azure/azure-linux-vm/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
output "resource_name_prefix" {
value = local.name
}

output "vpc_id" {
value = module.vpc.vnet_id
}
Expand Down
4 changes: 3 additions & 1 deletion terraform/azure/azure-linux-vm/providers.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
provider "azurerm" {
skip_provider_registration = true
resource_provider_registrations = "none"
features {
resource_group {
prevent_deletion_if_contains_resources = false
Expand All @@ -8,4 +8,6 @@ provider "azurerm" {
delete_os_disk_on_deletion = true
}
}

# subscription_id = "00000000-0000-0000-0000-000000000000"
}
2 changes: 1 addition & 1 deletion terraform/azure/azure-linux-vm/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
tailscale = {
source = "tailscale/tailscale"
version = ">= 0.13.13"
version = ">= 0.24"
}
}
}
2 changes: 1 addition & 1 deletion terraform/azure/internal-modules/azure-linux-vm/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
6 changes: 1 addition & 5 deletions terraform/azure/internal-modules/azure-linux-vm/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
}
81 changes: 46 additions & 35 deletions terraform/azure/internal-modules/azure-network/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,45 +12,49 @@ 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"
actions = [
"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]
Expand All @@ -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]
Expand All @@ -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]
Expand All @@ -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" {
Expand All @@ -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" {
Expand Down
Loading