We provide the resources to carry out cloud implementation projects: remote desktops for employees, virtual servers for your operation, and PaaS or IaaS platforms that move you from wholly public infrastructure to a hybrid footprint, with the interconnection options available at Equinix IBX.
Data centres in interconnected regions give you the availability and the response times your applications need, without you having to own the floor space.
The three shapes
Private cloud For organisations moving their own data centres, where the control and the compliance boundary have to stay in your hands.
Public cloud For organisations that want to run on Microsoft, Amazon or Google and would rather buy the capacity than build it.
Hybrid cloud The usual answer: the elasticity of public capacity with the control of private infrastructure for what cannot leave. Infrastructure as Code The environments we deliver are written as Terraform code. Each change is versioned and reviewed before it is applied, the same code can rebuild the environment, and the code stays with you when the project ends.
main.tf resource "azurerm_resource_group" "app" { location = var.location } resource "azurerm_virtual_network" "app" { address_space = ["10.0.0.0/16" ] } locals { subnets = { fw = "AzureFirewallSubnet" web = "web" app = "app" data = "data" infra = "infra" } } resource "azurerm_subnet" "s" { for_each = local.subnets name = each.value } resource "azurerm_public_ip" "fw" { sku = "Standard" } resource "azurerm_firewall" "edge" { sku_tier = "Standard" } resource "azurerm_route_table" "core" { route { address_prefix = "0.0.0.0/0" # -> firewall } } resource "azurerm_subnet_route_table_association" "r" { for_each = toset(["web" , "app" , "data" , "infra" ]) } resource "azurerm_lb" "lb" { for_each = toset(["web" , "app" ]) # internal } resource "azurerm_firewall_nat_rule_collection" "web" { action = "Dnat" # 443 -> lb web } locals { servers = { iis1 = "web" , iis2 = "web" app = "app" , db = "data" dc = "infra" , file = "infra" } } resource "azurerm_windows_virtual_machine" "srv" { for_each = local.servers } Terminal $ terraform planPlan: 23 to add, 0 to change, 0 to destroy. $ terraform applyazurerm_resource_group.app: Creating... azurerm_resource_group.app: Creation complete azurerm_virtual_network.app: Creating... azurerm_virtual_network.app: Creation complete azurerm_subnet.s["fw"]: Creating... azurerm_subnet.s["fw"]: Creation complete azurerm_subnet.s["web"]: Creating... azurerm_subnet.s["web"]: Creation complete azurerm_subnet.s["app"]: Creating... azurerm_subnet.s["app"]: Creation complete azurerm_subnet.s["data"]: Creating... azurerm_subnet.s["data"]: Creation complete azurerm_subnet.s["infra"]: Creating... azurerm_subnet.s["infra"]: Creation complete azurerm_public_ip.fw: Creating... azurerm_public_ip.fw: Creation complete azurerm_firewall.edge: Creating... azurerm_firewall.edge: Creation complete azurerm_route_table.core: Creating... azurerm_route_table.core: Creation complete azurerm_subnet_route_table_association.r["web"]: Creating... azurerm_subnet_route_table_association.r["web"]: Creation complete azurerm_subnet_route_table_association.r["app"]: Creating... azurerm_subnet_route_table_association.r["app"]: Creation complete azurerm_subnet_route_table_association.r["data"]: Creating... azurerm_subnet_route_table_association.r["data"]: Creation complete azurerm_subnet_route_table_association.r["infra"]: Creating... azurerm_subnet_route_table_association.r["infra"]: Creation complete azurerm_lb.lb["web"]: Creating... azurerm_lb.lb["web"]: Creation complete azurerm_lb.lb["app"]: Creating... azurerm_lb.lb["app"]: Creation complete azurerm_firewall_nat_rule_collection.web: Creating... azurerm_firewall_nat_rule_collection.web: Creation complete azurerm_windows_virtual_machine.srv["iis1"]: Creating... azurerm_windows_virtual_machine.srv["iis1"]: Creation complete azurerm_windows_virtual_machine.srv["iis2"]: Creating... azurerm_windows_virtual_machine.srv["iis2"]: Creation complete azurerm_windows_virtual_machine.srv["app"]: Creating... azurerm_windows_virtual_machine.srv["app"]: Creation complete azurerm_windows_virtual_machine.srv["db"]: Creating... azurerm_windows_virtual_machine.srv["db"]: Creation complete azurerm_windows_virtual_machine.srv["dc"]: Creating... azurerm_windows_virtual_machine.srv["dc"]: Creation complete azurerm_windows_virtual_machine.srv["file"]: Creating... azurerm_windows_virtual_machine.srv["file"]: Creation complete Apply complete! Resources: 23 added, 0 changed, 0 destroyed. INTERNET RESOURCE GROUP VIRTUAL NETWORK 10.0.0.0/16 SW AzureFirewallSubnet SW subnet web SW subnet app SW subnet data SW subnet infra PUBLIC IP FW Azure Firewall ROUTER route table LB web · internal LB app · internal DNAT 443 IIS Web server 1 IIS Web server 2 APP Applications DB SQL Server DC Active Directory FILE File server main.tf resource "azurerm_resource_group" "app" { location = var.location } resource "azurerm_virtual_network" "app" { address_space = ["10.0.0.0/16" ] } locals { subnets = { fw = "AzureFirewallSubnet" web = "web" app = "app" data = "data" infra = "infra" } } resource "azurerm_subnet" "s" { for_each = local.subnets name = each.value } resource "azurerm_public_ip" "fw" { sku = "Standard" } resource "azurerm_firewall" "edge" { sku_tier = "Standard" } resource "azurerm_route_table" "core" { route { address_prefix = "0.0.0.0/0" # -> firewall } } resource "azurerm_subnet_route_table_associatio n" " r" { for_each = toset(["web" , "app" , "data" , "infra" ]) } resource "azurerm_lb" "lb" { for_each = toset(["web" , "app" ]) # internal } resource "azurerm_firewall_nat_rule_collection" "web" { action = "Dnat" # 443 -> lb web } locals { servers = { iis1 = "web" , iis2 = "web" app = "app" , db = "data" dc = "infra" , file = "infra" } } resource "azurerm_windows_virtual_machine" "srv" { for_each = local.servers } Terminal $ terraform planPlan: 23 to add, 0 to change, 0 to destroy. $ terraform applyazurerm_resource_group.app: Creating... azurerm_resource_group.app: Creation complete azurerm_virtual_network.app: Creating... azurerm_virtual_network.app: Creation complete azurerm_subnet.s["fw"]: Creating... azurerm_subnet.s["fw"]: Creation complete azurerm_subnet.s["web"]: Creating... azurerm_subnet.s["web"]: Creation complete azurerm_subnet.s["app"]: Creating... azurerm_subnet.s["app"]: Creation complete azurerm_subnet.s["data"]: Creating... azurerm_subnet.s["data"]: Creation complete azurerm_subnet.s["infra"]: Creating... azurerm_subnet.s["infra"]: Creation complete azurerm_public_ip.fw: Creating... azurerm_public_ip.fw: Creation complete azurerm_firewall.edge: Creating... azurerm_firewall.edge: Creation complete azurerm_route_table.core: Creating... azurerm_route_table.core: Creation complete azurerm_subnet_route_table_association.r[" web"]: Creating... azurerm_subnet_route_table_association.r[" web"]: Creation complete azurerm_subnet_route_table_association.r[" app"]: Creating... azurerm_subnet_route_table_association.r[" app"]: Creation complete azurerm_subnet_route_table_association.r[" data"]: Creating... azurerm_subnet_route_table_association.r[" data"]: Creation complete azurerm_subnet_route_table_association.r[" infra"]: Creating... azurerm_subnet_route_table_association.r[" infra"]: Creation complete azurerm_lb.lb["web"]: Creating... azurerm_lb.lb["web"]: Creation complete azurerm_lb.lb["app"]: Creating... azurerm_lb.lb["app"]: Creation complete azurerm_firewall_nat_rule_collection.web: Creating... azurerm_firewall_nat_rule_collection.web: Creation complete azurerm_windows_virtual_machine.srv["iis1" ]: Creating... azurerm_windows_virtual_machine.srv["iis1" ]: Creation complete azurerm_windows_virtual_machine.srv["iis2" ]: Creating... azurerm_windows_virtual_machine.srv["iis2" ]: Creation complete azurerm_windows_virtual_machine.srv["app"] : Creating... azurerm_windows_virtual_machine.srv["app"] : Creation complete azurerm_windows_virtual_machine.srv["db"]: Creating... azurerm_windows_virtual_machine.srv["db"]: Creation complete azurerm_windows_virtual_machine.srv["dc"]: Creating... azurerm_windows_virtual_machine.srv["dc"]: Creation complete azurerm_windows_virtual_machine.srv["file" ]: Creating... azurerm_windows_virtual_machine.srv["file" ]: Creation complete Apply complete! Resources: 23 added, 0 changed, 0 destroyed. INTERNET RESOURCE GROUP VIRTUAL NETWORK · 10.0.0.0/16 SW AzureFirewallSubnet SW subnet web SW subnet app SW subnet data SW subnet infra PUBLIC IP FW Azure Firewall ROUTER route table LB web · internal LB app · internal DNAT 443 IIS Web server 1 IIS Web server 2 APP Applications DB SQL Server DC Active Directory FILE File server Simplified example. A real configuration declares more resources, such as the network interfaces of the machines, the load balancers' back-end pools and the network security groups. Pause animation Replay
What you sign One contract with VirtualNet Cloud covering design, migration and steady-state operation. If you also take Operation or Support, it is the same contract and the same invoice.
What it costs
From $1,800 / month, billed monthly.
That is a starting point, not a quote: the final scope and the final figure come out of a short conversation and go to you in writing before any work begins.
Request a quote
Call +1 954 681 2566