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
15 changes: 10 additions & 5 deletions terraform/azure/azure-linux-vm/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ locals {
subnet_id = module.vpc.public_subnet_id
network_security_group_id = azurerm_network_security_group.tailscale_ingress.id
instance_type = "Standard_D2as_v6"
admin_public_key_path = var.admin_public_key_path
admin_public_key = var.admin_public_key_path == "" ? tls_private_key.ssh[0].public_key_openssh : file(var.admin_public_key_path)
}

resource "azurerm_resource_group" "main" {
Expand All @@ -53,6 +53,11 @@ module "vpc" {
subnet_name_private_dns_resolver = "dns-inbound"
}

resource "tls_private_key" "ssh" {
count = var.admin_public_key_path == "" ? 1 : 0
algorithm = "ED25519"
}

#
# Tailscale instance resources
#
Expand Down Expand Up @@ -87,10 +92,10 @@ module "tailscale_azure_linux_virtual_machine" {
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
admin_public_key_path = local.admin_public_key_path
resource_tags = local.azure_tags
machine_name = local.name
machine_size = local.instance_type
admin_public_key = local.admin_public_key
resource_tags = local.azure_tags

# Variables for Tailscale resources
tailscale_hostname = local.name
Expand Down
5 changes: 5 additions & 0 deletions terraform/azure/azure-linux-vm/outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ output "instance_id" {
value = module.tailscale_azure_linux_virtual_machine.instance_id
}

output "ssh_private_key_openssh" {
value = var.admin_public_key_path == "" ? tls_private_key.ssh[0].private_key_openssh : null
sensitive = true
}

output "user_data_md5" {
description = "MD5 hash of the VM user_data script - for detecting changes"
value = module.tailscale_azure_linux_virtual_machine.user_data_md5
Expand Down
4 changes: 3 additions & 1 deletion terraform/azure/azure-linux-vm/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@
# Variables for Azure resources
#
variable "admin_public_key_path" {
type = string
type = string
description = "Path to the SSH public key to assign to the virtual machine - if omitted, a key will be created"
default = ""
}
4 changes: 4 additions & 0 deletions terraform/azure/azure-linux-vm/versions.tf
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ terraform {
source = "hashicorp/azurerm"
version = ">= 4.0, < 5.0"
}
tls = {
source = "hashicorp/tls"
version = ">= 4.0, < 5.0"
}
tailscale = {
source = "tailscale/tailscale"
version = ">= 0.24"
Expand Down
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 @@ -43,7 +43,7 @@ resource "azurerm_linux_virtual_machine" "tailscale_instance" {
admin_username = var.admin_username
admin_ssh_key {
username = var.admin_username
public_key = file(var.admin_public_key_path)
public_key = var.admin_public_key
}

os_disk {
Expand Down
4 changes: 2 additions & 2 deletions terraform/azure/internal-modules/azure-linux-vm/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ variable "admin_username" {
type = string
default = "ubuntu"
}
variable "admin_public_key_path" {
description = "The filepath of the SSH public key to assign to the virtual machine"
variable "admin_public_key" {
description = "The SSH public key to assign to the virtual machine"
type = string
}
variable "public_ip_address_id" {
Expand Down
Loading