# Variables
+variable "vpc_addr_space_a" {
+ type = string
+ default = "172.16.0.0/16"
+}
+
variable "vpc_cidr_a" {
type = string
default = "172.16.0.0/24"
variable "vpc_cidr_b" {
type = string
- default = "192.168.10.0/24"
+ default = "172.16.10.0/24"
}
variable "vpc_cidr_c" {
type = string
- default = "200.0.0.0/24"
+ default = "172.16.200.0/24"
}
variable "vpc_cidr_d" {
type = string
- default = "192.168.20.0/24"
+ default = "172.16.20.0/24"
}
variable "trex_dummy_cidr_port_0" {
type = string
- default = "10.0.0.0/24"
+ default = "172.16.11.0/24"
}
variable "trex_dummy_cidr_port_1" {
type = string
- default = "20.0.0.0/24"
+ default = "172.16.21.0/24"
}
# Create resource group and resources
resource "azurerm_resource_group" "CSIT" {
- name = "CSIT_pm"
- location = "North Europe"
+ name = "CSIT"
+ #location = "East US"
+ location = "UK South"
}
resource "azurerm_virtual_network" "CSIT" {
name = "CSIT-network"
resource_group_name = azurerm_resource_group.CSIT.name
location = azurerm_resource_group.CSIT.location
- address_space = [ var.vpc_cidr_a,
- var.vpc_cidr_b,
- var.vpc_cidr_c,
- var.vpc_cidr_d ]
+ address_space = [ var.vpc_addr_space_a ]
depends_on = [ azurerm_resource_group.CSIT ]
}
disable_bgp_route_propagation = false
route {
name = "route-10"
- address_prefix = "10.0.0.0/24"
+ address_prefix = var.trex_dummy_cidr_port_0
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "192.168.10.254"
+ next_hop_in_ip_address = data.azurerm_network_interface.tg_if1.private_ip_address
}
route {
name = "route-20"
- address_prefix = "20.0.0.0/24"
+ address_prefix = var.trex_dummy_cidr_port_1
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "192.168.10.11"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut1_if1.private_ip_address
}
route {
name = "tg2"
- address_prefix = "192.168.20.0/24"
+ address_prefix = var.vpc_cidr_d
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "192.168.10.11"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut1_if1.private_ip_address
}
}
disable_bgp_route_propagation = false
route {
name = "route-10"
- address_prefix = "10.0.0.0/24"
+ address_prefix = var.trex_dummy_cidr_port_0
+ next_hop_type = "VirtualAppliance"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut1_if2.private_ip_address
+ }
+ route {
+ name = "route-100"
+ address_prefix = "100.0.0.0/8"
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "200.0.0.101"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut1_if2.private_ip_address
}
route {
name = "route-20"
- address_prefix = "20.0.0.0/24"
+ address_prefix = var.trex_dummy_cidr_port_1
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "200.0.0.102"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut2_if1.private_ip_address
}
route {
name = "tg1"
- address_prefix = "192.168.10.0/24"
+ address_prefix = var.vpc_cidr_b
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "200.0.0.101"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut1_if2.private_ip_address
}
route {
name = "tg2"
- address_prefix = "192.168.20.0/24"
+ address_prefix = var.vpc_cidr_d
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "200.0.0.102"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut2_if1.private_ip_address
}
}
disable_bgp_route_propagation = false
route {
name = "route-10"
- address_prefix = "10.0.0.0/24"
+ address_prefix = var.trex_dummy_cidr_port_0
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "192.168.20.11"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut2_if2.private_ip_address
}
route {
name = "route-20"
- address_prefix = "20.0.0.0/24"
+ address_prefix = var.trex_dummy_cidr_port_1
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "192.168.20.254"
+ next_hop_in_ip_address = data.azurerm_network_interface.tg_if2.private_ip_address
}
route {
name = "tg1"
- address_prefix = "192.168.10.0/24"
+ address_prefix = var.vpc_cidr_b
next_hop_type = "VirtualAppliance"
- next_hop_in_ip_address = "192.168.20.11"
+ next_hop_in_ip_address = data.azurerm_network_interface.dut2_if2.private_ip_address
}
}
}
os_profile {
computer_name = "tg"
- admin_username = "testuser"
- admin_password = "Csit1234"
+ admin_username = "ubuntu"
}
os_profile_linux_config {
- disable_password_authentication = false
+ disable_password_authentication = true
ssh_keys {
- path = "/home/testuser/.ssh/authorized_keys"
+ path = "/home/ubuntu/.ssh/authorized_keys"
key_data = file("~/.ssh/id_rsa.pub")
}
}
}
os_profile {
computer_name = "dut1"
- admin_username = "testuser"
- admin_password = "Csit1234"
+ admin_username = "ubuntu"
}
os_profile_linux_config {
- disable_password_authentication = false
+ disable_password_authentication = true
ssh_keys {
- path = "/home/testuser/.ssh/authorized_keys"
+ path = "/home/ubuntu/.ssh/authorized_keys"
key_data = file("~/.ssh/id_rsa.pub")
}
}
}
os_profile {
computer_name = "dut2"
- admin_username = "testuser"
- admin_password = "Csit1234"
+ admin_username = "ubuntu"
}
os_profile_linux_config {
- disable_password_authentication = false
+ disable_password_authentication = true
ssh_keys {
- path = "/home/testuser/.ssh/authorized_keys"
+ path = "/home/ubuntu/.ssh/authorized_keys"
key_data = file("~/.ssh/id_rsa.pub")
}
}
azurerm_network_interface.tg_if1,
azurerm_network_interface.tg_if2 ]
connection {
- user = "testuser"
+ user = "ubuntu"
host = data.azurerm_public_ip.tg_public_ip.ip_address
+ private_key = file("~/.ssh/id_rsa")
}
provisioner "ansible" {
plays {
}
hosts = ["tg"]
extra_vars = {
- ansible_python_interpreter = "python3"
+ ansible_python_interpreter = "/usr/bin/python3"
azure = true
- remote_net = var.vpc_cidr_d
- tg_if1_mac = azurerm_network_interface.tg_if1.mac_address
- tg_if2_mac = azurerm_network_interface.tg_if2.mac_address
- dut1_if1_mac = azurerm_network_interface.dut1_if1.mac_address
- dut1_if2_mac = azurerm_network_interface.dut1_if2.mac_address
- dut2_if1_mac = azurerm_network_interface.dut2_if1.mac_address
- dut2_if2_mac = azurerm_network_interface.dut2_if2.mac_address
- dut1_if1_ip = azurerm_network_interface.dut1_if1.private_ip_address
- dut2_if2_ip = azurerm_network_interface.dut2_if2.private_ip_address
}
}
}
azurerm_network_interface.dut1_if1,
azurerm_network_interface.dut1_if2 ]
connection {
- user = "testuser"
+ user = "ubuntu"
host = data.azurerm_public_ip.dut1_public_ip.ip_address
+ private_key = file("~/.ssh/id_rsa")
}
provisioner "ansible" {
plays {
}
hosts = ["sut"]
extra_vars = {
- ansible_python_interpreter = "python3"
+ ansible_python_interpreter = "/usr/bin/python3"
azure = true
- dut1_if1_ip = azurerm_network_interface.dut1_if1.private_ip_address
- dut1_if1_mac = azurerm_network_interface.dut1_if1.mac_address
- dut1_if2_ip = azurerm_network_interface.dut1_if2.private_ip_address
- dut1_if2_mac = azurerm_network_interface.dut1_if2.mac_address
- dut2_if2_ip = azurerm_network_interface.dut2_if1.private_ip_address
- dut2_if1_gateway = azurerm_network_interface.dut2_if1.private_ip_address
- traffic_if1 = var.trex_dummy_cidr_port_0
- traffic_if2 = var.trex_dummy_cidr_port_1
}
}
}
azurerm_network_interface.dut2_if1,
azurerm_network_interface.dut2_if2 ]
connection {
- user = "testuser"
+ user = "ubuntu"
host = data.azurerm_public_ip.dut2_public_ip.ip_address
+ private_key = file("~/.ssh/id_rsa")
}
provisioner "ansible" {
plays {
}
hosts = ["sut"]
extra_vars = {
- ansible_python_interpreter = "python3"
+ ansible_python_interpreter = "/usr/bin/python3"
azure = true
- dut2_if1_ip = azurerm_network_interface.dut2_if1.private_ip_address
- dut2_if1_mac = azurerm_network_interface.dut2_if1.mac_address
- dut2_if2_ip = azurerm_network_interface.dut2_if2.private_ip_address
- dut2_if2_mac = azurerm_network_interface.dut2_if2.mac_address
- dut1_if2_ip = azurerm_network_interface.dut1_if2.private_ip_address
- dut1_if2_gateway = azurerm_network_interface.dut1_if2.private_ip_address
- traffic_if1 = var.trex_dummy_cidr_port_0
- traffic_if2 = var.trex_dummy_cidr_port_1
+ }
+ }
+ }
+}
+
+resource "null_resource" "deploy_topology" {
+ depends_on = [ azurerm_virtual_machine.tg,
+ azurerm_network_interface.tg_if1,
+ azurerm_network_interface.tg_if2,
+ azurerm_virtual_machine.dut1,
+ azurerm_network_interface.dut1_if1,
+ azurerm_network_interface.dut1_if2,
+ azurerm_virtual_machine.dut2,
+ azurerm_network_interface.dut2_if1,
+ azurerm_network_interface.dut2_if2 ]
+ provisioner "ansible" {
+ plays {
+ playbook {
+ file_path = "../../testbed-setup/ansible/cloud_topology.yaml"
+ }
+ hosts = ["local"]
+ extra_vars = {
+ ansible_python_interpreter = "/usr/bin/python3"
+ cloud_topology = "azure"
+ tg_if1_mac = data.azurerm_network_interface.tg_if1.mac_address
+ tg_if2_mac = data.azurerm_network_interface.tg_if2.mac_address
+ dut1_if1_mac = data.azurerm_network_interface.dut1_if1.mac_address
+ dut1_if2_mac = data.azurerm_network_interface.dut1_if2.mac_address
+ dut2_if1_mac = data.azurerm_network_interface.dut2_if1.mac_address
+ dut2_if2_mac = data.azurerm_network_interface.dut2_if2.mac_address
+ tg_public_ip = data.azurerm_public_ip.tg_public_ip.ip_address
+ dut1_public_ip = data.azurerm_public_ip.dut1_public_ip.ip_address
+ dut2_public_ip = data.azurerm_public_ip.dut2_public_ip.ip_address
}
}
}