summaryrefslogtreecommitdiff
path: root/Terraform/Azure/VPN-Server-WireGuard/main.tf
diff options
context:
space:
mode:
Diffstat (limited to 'Terraform/Azure/VPN-Server-WireGuard/main.tf')
-rw-r--r--Terraform/Azure/VPN-Server-WireGuard/main.tf70
1 files changed, 70 insertions, 0 deletions
diff --git a/Terraform/Azure/VPN-Server-WireGuard/main.tf b/Terraform/Azure/VPN-Server-WireGuard/main.tf
new file mode 100644
index 0000000..22c7a63
--- /dev/null
+++ b/Terraform/Azure/VPN-Server-WireGuard/main.tf
@@ -0,0 +1,70 @@
+
+# Create VyOS instances
+resource "azurerm_virtual_machine" "azure_vpn_net_vyos" {
+ count = 2
+ name = join("-", [var.prefix, "VyOS", "${count.index + 1}"])
+ location = var.location
+ resource_group_name = var.resource_group
+ vm_size = var.vm_size
+
+ network_interface_ids = [azurerm_network_interface.azure_vnet_vpn_net_nic[count.index].id]
+ delete_os_disk_on_termination = "true"
+ tags = var.tags
+
+ plan {
+ publisher = var.image_publisher
+ name = var.image_sku
+ product = var.image_offer
+ }
+
+ storage_image_reference {
+ # id = var.gallery
+ publisher = var.image_publisher
+ offer = var.image_offer
+ sku = var.image_sku
+ version = var.image_version
+ }
+
+ storage_os_disk {
+ name = join("_", [var.vnet_name, "VyOS", "${count.index + 1}", "osdisk"])
+ managed_disk_type = "Standard_LRS"
+ caching = "ReadWrite"
+ create_option = "FromImage"
+ }
+
+ os_profile {
+ computer_name = join("-", [var.vnet_name, "VyOS", "${count.index + 1}"])
+ admin_username = var.admin_username
+ admin_password = var.admin_password
+ custom_data = base64encode(templatefile("${path.module}/files/vyos_user_data.tpl", {
+ wg_server_subnet_prefix = var.wg_server_subnet_prefix,
+ wg_server_Private_IP = var.wg_server_Private_IP,
+ wg_server_port = var.wg_server_port,
+ wg_server_PrivKey = var.wg_server_PrivKey,
+ wg_client_PubKey = var.wg_client_PublicKey,
+ wg_client_PresharedKey = var.wg_client_PresharedKey,
+ dns_1 = var.dns_1,
+ dns_2 = var.dns_2,
+ vyos_number = count.index + 1
+ }))
+ }
+
+ os_profile_linux_config {
+ disable_password_authentication = false
+ }
+}
+
+# Generate WireGuard client profile
+data "template_file" "wireguard_config" {
+ template = file("${path.module}/files/wireguard.tpl")
+
+ vars = {
+ wg_client_PrivKey = var.wg_client_PrivKey
+ wg_client_IP = var.wg_client_IP
+ wg_server_Private_IP = var.wg_server_Private_IP
+ wg_server_Public_IP = azurerm_public_ip.azure_vnet_public_address_lb.ip_address
+ wg_server_PublicKey = var.wg_server_PublicKey
+ wg_server_port = var.wg_server_port
+ wg_client_PresharedKey = var.wg_client_PresharedKey
+ }
+} \ No newline at end of file