Központi virtuális hálózat létrehozása az Azure-ban a Terraform használatával
A Terraform lehetővé teszi a felhőinfrastruktúra definícióját, előzetes verzióját és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre HCL-szintaxissal. A HCL szintaxissal megadhatja a felhőszolgáltatót – például az Azure-t – és a felhőinfrastruktúra elemeit. A konfigurációs fájlok létrehozása után létrehoz egy végrehajtási tervet , amely lehetővé teszi az infrastruktúra változásainak előzetes megtekintését az üzembe helyezés előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezésére.
A központi virtuális hálózat a helyszíni hálózathoz való kapcsolódás központi pontja. A virtuális hálózat a küllős virtuális hálózatokban üzemeltetett számítási feladatok által felhasznált megosztott szolgáltatásokat üzemelteti. Bemutató célokra ebben a cikkben nem implementálunk megosztott szolgáltatásokat.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- A küllős topológiában implementálja a központi virtuális hálózatot.
- Hozzon létre egy központi jumpbox virtuális gépet.
- Hozzon létre egy központi virtuális magánhálózati átjárót.
- Hub- és helyszíni átjárókapcsolatok létrehozása.
1. A környezet konfigurálása
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
A Terraform konfigurálása: Ha még nem tette meg, konfigurálja a Terraformot az alábbi lehetőségek egyikével:
Küllős hibrid hálózati topológia létrehozása a Terraformmal az Azure-ban.
Helyszíni virtuális hálózat létrehozása a Terraformmal az Azure-ban.
2. A Terraform-kód implementálása
A központi hálózat a következő összetevőkből áll:
- Központi virtuális hálózat
- Központi virtuális hálózati átjáró
- Központi átjárókapcsolatok
Hozza létre a példakönyvtárat a sorozat első cikkében az aktuális könyvtárként.
A példakönyvtárban hozzon létre egy fájlt
hub-vnet.tf
.Szúrja be a következő kódot:
locals { prefix-hub = "hub" hub-location = "eastus" hub-resource-group = "hub-vnet-rg" shared-key = "4-v3ry-53cr37-1p53c-5h4r3d-k3y" } resource "azurerm_resource_group" "hub-vnet-rg" { name = local.hub-resource-group location = local.hub-location } resource "azurerm_virtual_network" "hub-vnet" { name = "${local.prefix-hub}-vnet" location = azurerm_resource_group.hub-vnet-rg.location resource_group_name = azurerm_resource_group.hub-vnet-rg.name address_space = ["10.0.0.0/16"] tags = { environment = "hub-spoke" } } resource "azurerm_subnet" "hub-gateway-subnet" { name = "GatewaySubnet" resource_group_name = azurerm_resource_group.hub-vnet-rg.name virtual_network_name = azurerm_virtual_network.hub-vnet.name address_prefixes = ["10.0.255.224/27"] } resource "azurerm_subnet" "hub-mgmt" { name = "mgmt" resource_group_name = azurerm_resource_group.hub-vnet-rg.name virtual_network_name = azurerm_virtual_network.hub-vnet.name address_prefixes = ["10.0.0.64/27"] } resource "azurerm_subnet" "hub-dmz" { name = "dmz" resource_group_name = azurerm_resource_group.hub-vnet-rg.name virtual_network_name = azurerm_virtual_network.hub-vnet.name address_prefixes = ["10.0.0.32/27"] } resource "azurerm_network_interface" "hub-nic" { name = "${local.prefix-hub}-nic" location = azurerm_resource_group.hub-vnet-rg.location resource_group_name = azurerm_resource_group.hub-vnet-rg.name enable_ip_forwarding = true ip_configuration { name = local.prefix-hub subnet_id = azurerm_subnet.hub-mgmt.id private_ip_address_allocation = "Dynamic" } tags = { environment = local.prefix-hub } } #Virtual Machine resource "azurerm_virtual_machine" "hub-vm" { name = "${local.prefix-hub}-vm" location = azurerm_resource_group.hub-vnet-rg.location resource_group_name = azurerm_resource_group.hub-vnet-rg.name network_interface_ids = [azurerm_network_interface.hub-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-hub}-vm" admin_username = var.username admin_password = var.password } os_profile_linux_config { disable_password_authentication = false } tags = { environment = local.prefix-hub } } # Virtual Network Gateway resource "azurerm_public_ip" "hub-vpn-gateway1-pip" { name = "hub-vpn-gateway1-pip" location = azurerm_resource_group.hub-vnet-rg.location resource_group_name = azurerm_resource_group.hub-vnet-rg.name allocation_method = "Dynamic" } resource "azurerm_virtual_network_gateway" "hub-vnet-gateway" { name = "hub-vpn-gateway1" location = azurerm_resource_group.hub-vnet-rg.location resource_group_name = azurerm_resource_group.hub-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.hub-vpn-gateway1-pip.id private_ip_address_allocation = "Dynamic" subnet_id = azurerm_subnet.hub-gateway-subnet.id } depends_on = [azurerm_public_ip.hub-vpn-gateway1-pip] } resource "azurerm_virtual_network_gateway_connection" "hub-onprem-conn" { name = "hub-onprem-conn" location = azurerm_resource_group.hub-vnet-rg.location resource_group_name = azurerm_resource_group.hub-vnet-rg.name type = "Vnet2Vnet" routing_weight = 1 virtual_network_gateway_id = azurerm_virtual_network_gateway.hub-vnet-gateway.id peer_virtual_network_gateway_id = azurerm_virtual_network_gateway.onprem-vpn-gateway.id shared_key = local.shared-key } resource "azurerm_virtual_network_gateway_connection" "onprem-hub-conn" { name = "onprem-hub-conn" location = azurerm_resource_group.onprem-vnet-rg.location resource_group_name = azurerm_resource_group.onprem-vnet-rg.name type = "Vnet2Vnet" routing_weight = 1 virtual_network_gateway_id = azurerm_virtual_network_gateway.onprem-vpn-gateway.id peer_virtual_network_gateway_id = azurerm_virtual_network_gateway.hub-vnet-gateway.id shared_key = local.shared-key }
A Terraform hibaelhárítása az Azure-ban
A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása
További lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: