2 image_name = "Ubuntu 22.04.2 LTS"
3 image_source_url = "http://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
4 resource_prefix = "csit-2n"
9 # Create Cloud-Init config for TG.
10 data "template_cloudinit_config" "cloudinit_config_tg1" {
15 content_type = "text/cloud-config"
16 content = templatefile(
17 "${path.module}/user-data-tg1", {}
22 # Create Cloud-Init config for SUT1.
23 data "template_cloudinit_config" "cloudinit_config_sut1" {
28 content_type = "text/cloud-config"
29 content = templatefile(
30 "${path.module}/user-data-sut1", {}
35 # Create OpenStack Image.
36 module "openstack_images_image_v2" {
37 source = "pmikus/images-image-v2/openstack"
40 image_source_url = local.image_source_url
41 name = local.image_name
44 # Create OpenStack Keypair.
45 module "openstack_compute_keypair_v2" {
46 source = "pmikus/compute-keypair-v2/openstack"
49 name = "${local.resource_prefix}-keypair"
53 # Create management port in dedicated subnet.
54 resource "openstack_networking_port_v2" "port_tg1_mgmt" {
57 ip_address = "10.21.152.2"
58 subnet_id = "b1f9573d-4c2e-45da-bbac-cb3f191ab0f5"
60 name = "${local.resource_prefix}-tg1-mgmt-port"
61 network_id = var.network_id_mgmt
62 port_security_enabled = false
69 # Create data port in dedicated subnet.
70 resource "openstack_networking_port_v2" "port_tg1_data1" {
71 admin_state_up = false
72 name = "${local.resource_prefix}-tg1-data1-port"
73 network_id = var.network_id_data
74 port_security_enabled = false
81 # Create data port in dedicated subnet.
82 resource "openstack_networking_port_v2" "port_tg1_data2" {
83 admin_state_up = false
84 name = "${local.resource_prefix}-tg1-data2-port"
85 network_id = var.network_id_data
86 port_security_enabled = false
96 module.openstack_compute_keypair_v2,
97 module.openstack_images_image_v2
100 source = "pmikus/compute-instance-v2/openstack"
103 flavour_name = var.flavour_name
104 image_id = module.openstack_images_image_v2.id
105 key_pair = module.openstack_compute_keypair_v2.name
106 name = "${local.resource_prefix}-tg1"
108 "platform-shared-port" = openstack_networking_port_v2.port_tg1_mgmt.id
109 "data-playground-port1" = openstack_networking_port_v2.port_tg1_data1.id
110 "data-playground-port2" = openstack_networking_port_v2.port_tg1_data2.id
112 user_data = data.template_cloudinit_config.cloudinit_config_tg1.rendered
115 # Create management port in dedicated subnet.
116 resource "openstack_networking_port_v2" "port_sut1_mgmt" {
117 admin_state_up = true
119 ip_address = "10.21.152.3"
120 subnet_id = "b1f9573d-4c2e-45da-bbac-cb3f191ab0f5"
122 name = "${local.resource_prefix}-sut1-mgmt-port"
123 network_id = var.network_id_mgmt
124 port_security_enabled = false
131 # Create data port in dedicated subnet.
132 resource "openstack_networking_port_v2" "port_sut1_data1" {
133 admin_state_up = false
134 name = "${local.resource_prefix}-sut1-data1-port"
135 network_id = var.network_id_data
136 port_security_enabled = false
143 # Create data port in dedicated subnet.
144 resource "openstack_networking_port_v2" "port_sut1_data2" {
145 admin_state_up = false
146 name = "${local.resource_prefix}-sut1-data2-port"
147 network_id = var.network_id_data
148 port_security_enabled = false
155 # Create SUT instance.
158 module.openstack_compute_keypair_v2,
159 module.openstack_images_image_v2
162 source = "pmikus/compute-instance-v2/openstack"
165 flavour_name = var.flavour_name
166 image_id = module.openstack_images_image_v2.id
167 key_pair = module.openstack_compute_keypair_v2.name
168 name = "${local.resource_prefix}-sut1"
170 "platform-shared-port" = openstack_networking_port_v2.port_sut1_mgmt.id
171 "data-playground-port1" = openstack_networking_port_v2.port_sut1_data1.id
172 "data-playground-port2" = openstack_networking_port_v2.port_sut1_data2.id
174 user_data = data.template_cloudinit_config.cloudinit_config_sut1.rendered
177 resource "local_file" "topology_file" {
183 content = templatefile(
184 "${path.module}/topology-${local.topology_name}.tftpl",
186 tg_if1_mac = openstack_networking_port_v2.port_tg1_data1.mac_address
187 tg_if2_mac = openstack_networking_port_v2.port_tg1_data2.mac_address
188 dut1_if1_mac = openstack_networking_port_v2.port_sut1_data1.mac_address
189 dut1_if2_mac = openstack_networking_port_v2.port_sut1_data2.mac_address
190 tg_public_ip = openstack_networking_port_v2.port_tg1_mgmt.fixed_ip[0].ip_address
191 dut1_public_ip = openstack_networking_port_v2.port_sut1_mgmt.fixed_ip[0].ip_address
194 filename = "${path.module}/${local.topology_name}-x-${local.testbed_name}.yaml"
197 resource "local_file" "hosts" {
203 content = templatefile(
204 "${path.module}/hosts.tftpl",
206 tg_public_ip = openstack_networking_port_v2.port_tg1_mgmt.fixed_ip[0].ip_address
207 dut1_public_ip = openstack_networking_port_v2.port_sut1_mgmt.fixed_ip[0].ip_address
210 filename = "${path.module}/hosts.yaml"