Creación de una red virtual local en Azure con Terraform
En este artículo se muestra cómo implementar una red local en Azure. Puede reemplazar la red de ejemplo por una red virtual privada. Para ello, modifique las direcciones IP de subred de modo que se adapten a su entorno.
En este artículo aprenderá a:
- Implementación de una red virtual local en una topología en radio de concentrador
- Creación de recursos del dispositivo de red del centro
- Creación de una máquina virtual local
- Creación de una puerta de enlace de red privada virtual local
1. Configurar su entorno
- Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Configuración de Terraform: si aún no lo ha hecho, configure Terraform con una de las siguientes opciones:
2. Implementación del código de Terraform
Convertir el directorio de ejemplo creado en el primer artículo de esta serie en el directorio actual.
Cree un archivo llamado
on-prem.tfe inserte el siguiente código:locals { onprem-location = "eastus" onprem-resource-group = "onprem-vnet-rg" prefix-onprem = "onprem" } resource "azurerm_resource_group" "onprem-vnet-rg" { name = local.onprem-resource-group location = local.onprem-location } resource "azurerm_virtual_network" "onprem-vnet" { name = "onprem-vnet" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name address_space = ["192.168.0.0/16"] tags = { environment = local.prefix-onprem } } resource "azurerm_subnet" "onprem-gateway-subnet" { name = "GatewaySubnet" resource_group_name = azurerm_resource_group.onprem-vnet-rg.name virtual_network_name = azurerm_virtual_network.onprem-vnet.name address_prefixes = ["192.168.255.224/27"] } resource "azurerm_subnet" "onprem-mgmt" { name = "mgmt" resource_group_name = azurerm_resource_group.onprem-vnet-rg.name virtual_network_name = azurerm_virtual_network.onprem-vnet.name address_prefixes = ["192.168.1.128/25"] } resource "azurerm_public_ip" "onprem-pip" { name = "${local.prefix-onprem}-pip" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name allocation_method = "Dynamic" tags = { environment = local.prefix-onprem } } resource "azurerm_network_interface" "onprem-nic" { name = "${local.prefix-onprem}-nic" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name enable_ip_forwarding = true ip_configuration { name = local.prefix-onprem subnet_id = azurerm_subnet.onprem-mgmt.id private_ip_address_allocation = "Dynamic" public_ip_address_id = azurerm_public_ip.onprem-pip.id } } # Create Network Security Group and rule resource "azurerm_network_security_group" "onprem-nsg" { name = "${local.prefix-onprem}-nsg" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name security_rule { name = "SSH" priority = 1001 direction = "Inbound" access = "Allow" protocol = "Tcp" source_port_range = "*" destination_port_range = "22" source_address_prefix = "*" destination_address_prefix = "*" } tags = { environment = "onprem" } } resource "azurerm_subnet_network_security_group_association" "mgmt-nsg-association" { subnet_id = azurerm_subnet.onprem-mgmt.id network_security_group_id = azurerm_network_security_group.onprem-nsg.id } resource "azurerm_virtual_machine" "onprem-vm" { name = "${local.prefix-onprem}-vm" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name network_interface_ids = [azurerm_network_interface.onprem-nic.id] vm_size = var.vmsize storage_image_reference { publisher = "Canonical" offer = "UbuntuServer" sku = "16.04-LTS" version = "latest" } storage_os_disk { name = "myosdisk1" caching = "ReadWrite" create_option = "FromImage" managed_disk_type = "Standard_LRS" } os_profile { computer_name = "${local.prefix-onprem}-vm" admin_username = var.username admin_password = var.password } os_profile_linux_config { disable_password_authentication = false } tags = { environment = local.prefix-onprem } } resource "azurerm_public_ip" "onprem-vpn-gateway1-pip" { name = "${local.prefix-onprem}-vpn-gateway1-pip" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name allocation_method = "Dynamic" } resource "azurerm_virtual_network_gateway" "onprem-vpn-gateway" { name = "onprem-vpn-gateway1" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name type = "Vpn" vpn_type = "RouteBased" active_active = false enable_bgp = false sku = "VpnGw1" ip_configuration { name = "vnetGatewayConfig" public_ip_address_id = azurerm_public_ip.onprem-vpn-gateway1-pip.id private_ip_address_allocation = "Dynamic" subnet_id = azurerm_subnet.onprem-gateway-subnet.id } depends_on = [azurerm_public_ip.onprem-vpn-gateway1-pip] }
Solución de problemas de Terraform en Azure
Solución de problemas comunes al usar Terraform en Azure
Pasos siguientes
Create a hub virtual network with Terraform in Azure (Creación de una red virtual del concentrador con Terraform en Azure)