From 76b132e25f228918b78812aea0a8d4fe5bf79501 Mon Sep 17 00:00:00 2001 From: pmikus Date: Tue, 12 Dec 2023 12:10:00 +0000 Subject: [PATCH] feat(terraform): Remove ansible dependency - terraform ansible is not supported on aarch Signed-off-by: Peter Mikus Change-Id: I3d1a592b4ed97fe635813dccbf78dc42d14e0fa9 --- .../terraform-aws-1n-aws-c5n/hosts.tftpl | 9 +++ .../topology-1n-aws-c5n.tftpl | 30 +++++++++ .../terraform-aws-1n-c6in/hosts.tftpl | 9 +++ .../terraform-aws-1n-c6in/topology-1n-c6in.tftpl | 30 +++++++++ .../terraform-aws-2n-aws-c5n/hosts.tftpl | 9 +++ .../topology-2n-aws-c5n.tftpl | 51 +++++++++++++++ .../terraform-aws-2n-c6gn/hosts.tftpl | 9 +++ .../terraform-aws-2n-c6gn/topology-2n-c6gn.tftpl | 51 +++++++++++++++ .../terraform-aws-2n-c6in/hosts.tftpl | 9 +++ .../terraform-aws-2n-c6in/topology-2n-c6in.tftpl | 51 +++++++++++++++ .../terraform-aws-2n-c7gn/hosts.tftpl | 9 +++ fdio.infra.terraform/terraform-aws-2n-c7gn/main.tf | 48 ++++++++------ .../terraform-aws-2n-c7gn/topology-2n-c7gn.tftpl | 51 +++++++++++++++ .../terraform-aws-3n-aws-c5n/hosts.tftpl | 9 +++ .../topology-3n-aws-c5n.tftpl | 73 ++++++++++++++++++++++ .../terraform-aws-3n-c6gn/hosts.tftpl | 9 +++ .../terraform-aws-3n-c6gn/topology-3n-c6gn.tftpl | 73 ++++++++++++++++++++++ .../terraform-aws-3n-c6in/hosts.tftpl | 9 +++ .../terraform-aws-3n-c6in/topology-3n-c6in.tftpl | 73 ++++++++++++++++++++++ .../terraform-aws-3n-c7gn/hosts.tftpl | 9 +++ fdio.infra.terraform/terraform-aws-3n-c7gn/main.tf | 56 ++++++++++------- .../terraform-aws-3n-c7gn/topology-3n-c7gn.tftpl | 73 ++++++++++++++++++++++ resources/libraries/bash/function/terraform.sh | 18 +++--- 23 files changed, 716 insertions(+), 52 deletions(-) create mode 100644 fdio.infra.terraform/terraform-aws-1n-aws-c5n/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-1n-aws-c5n/topology-1n-aws-c5n.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-1n-c6in/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-1n-c6in/topology-1n-c6in.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-aws-c5n/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-aws-c5n/topology-2n-aws-c5n.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-c6gn/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-c6gn/topology-2n-c6gn.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-c6in/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-c6in/topology-2n-c6in.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-c7gn/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-2n-c7gn/topology-2n-c7gn.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-aws-c5n/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-aws-c5n/topology-3n-aws-c5n.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-c6gn/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-c6gn/topology-3n-c6gn.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-c6in/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-c6in/topology-3n-c6in.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-c7gn/hosts.tftpl create mode 100644 fdio.infra.terraform/terraform-aws-3n-c7gn/topology-3n-c7gn.tftpl diff --git a/fdio.infra.terraform/terraform-aws-1n-aws-c5n/hosts.tftpl b/fdio.infra.terraform/terraform-aws-1n-aws-c5n/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-1n-aws-c5n/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-1n-aws-c5n/topology-1n-aws-c5n.tftpl b/fdio.infra.terraform/terraform-aws-1n-aws-c5n/topology-1n-aws-c5n.tftpl new file mode 100644 index 0000000000..649d7e746c --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-1n-aws-c5n/topology-1n-aws-c5n.tftpl @@ -0,0 +1,30 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/1_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 1-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-50G + port2: + # tg_instance/p2 - 50GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link1 + model: Amazon-Nitro-50G diff --git a/fdio.infra.terraform/terraform-aws-1n-c6in/hosts.tftpl b/fdio.infra.terraform/terraform-aws-1n-c6in/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-1n-c6in/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-1n-c6in/topology-1n-c6in.tftpl b/fdio.infra.terraform/terraform-aws-1n-c6in/topology-1n-c6in.tftpl new file mode 100644 index 0000000000..7d3f4e5318 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-1n-c6in/topology-1n-c6in.tftpl @@ -0,0 +1,30 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/1_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 1-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 200GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-200G + port2: + # tg_instance/p2 - 200GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link1 + model: Amazon-Nitro-200G diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c5n/hosts.tftpl b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c5n/topology-2n-aws-c5n.tftpl b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/topology-2n-aws-c5n.tftpl new file mode 100644 index 0000000000..de43291cc6 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/topology-2n-aws-c5n.tftpl @@ -0,0 +1,51 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/2_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 2-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-50G + port2: + # tg_instance/p2 - 50GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-50G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-50G + port2: + # dut1_instance/p2 - 50GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-50G diff --git a/fdio.infra.terraform/terraform-aws-2n-c6gn/hosts.tftpl b/fdio.infra.terraform/terraform-aws-2n-c6gn/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-c6gn/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-2n-c6gn/topology-2n-c6gn.tftpl b/fdio.infra.terraform/terraform-aws-2n-c6gn/topology-2n-c6gn.tftpl new file mode 100644 index 0000000000..e693f6c42c --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-c6gn/topology-2n-c6gn.tftpl @@ -0,0 +1,51 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/2_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 2-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # tg_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # dut1_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G diff --git a/fdio.infra.terraform/terraform-aws-2n-c6in/hosts.tftpl b/fdio.infra.terraform/terraform-aws-2n-c6in/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-c6in/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-2n-c6in/topology-2n-c6in.tftpl b/fdio.infra.terraform/terraform-aws-2n-c6in/topology-2n-c6in.tftpl new file mode 100644 index 0000000000..ef7b464967 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-c6in/topology-2n-c6in.tftpl @@ -0,0 +1,51 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/2_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 2-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 200GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-200G + port2: + # tg_instance/p2 - 200GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-200G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 200GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-200G + port2: + # dut1_instance/p2 - 200GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-200G diff --git a/fdio.infra.terraform/terraform-aws-2n-c7gn/hosts.tftpl b/fdio.infra.terraform/terraform-aws-2n-c7gn/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-c7gn/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-2n-c7gn/main.tf b/fdio.infra.terraform/terraform-aws-2n-c7gn/main.tf index 3fd3012192..5711d7389e 100644 --- a/fdio.infra.terraform/terraform-aws-2n-c7gn/main.tf +++ b/fdio.infra.terraform/terraform-aws-2n-c7gn/main.tf @@ -298,30 +298,38 @@ resource "null_resource" "deploy_sut1" { } } -resource "null_resource" "deploy_topology" { +resource "local_file" "topology_file" { depends_on = [ aws_instance.tg, aws_instance.sut1 ] - provisioner "ansible" { - plays { - playbook { - file_path = var.ansible_topology_path - } - hosts = ["local"] - extra_vars = { - ansible_python_interpreter = local.ansible_python_executable - testbed_name = local.testbed_name - cloud_topology = local.topology_name - tg_if1_mac = data.aws_network_interface.tg_if1.mac_address - tg_if2_mac = data.aws_network_interface.tg_if2.mac_address - dut1_if1_mac = data.aws_network_interface.sut1_if1.mac_address - dut1_if2_mac = data.aws_network_interface.sut1_if2.mac_address - tg_public_ip = aws_instance.tg.public_ip - dut1_public_ip = aws_instance.sut1.public_ip - public_ip_list = "${aws_instance.tg.public_ip},${aws_instance.sut1.public_ip}" - } + content = templatefile( + "${path.module}/topology-${local.topology_name}.tftpl", + { + tg_if1_mac = data.aws_network_interface.tg_if1.mac_address + tg_if2_mac = data.aws_network_interface.tg_if2.mac_address + dut1_if1_mac = data.aws_network_interface.sut1_if1.mac_address + dut1_if2_mac = data.aws_network_interface.sut1_if2.mac_address + tg_public_ip = aws_instance.tg.public_ip + dut1_public_ip = aws_instance.sut1.public_ip } - } + ) + filename = "${path.module}/../../topologies/available/${local.topology_name}-${local.testbed_name}.yaml" } + +resource "local_file" "hosts" { + depends_on = [ + aws_instance.tg, + aws_instance.sut1 + ] + + content = templatefile( + "${path.module}/hosts.tftpl", + { + tg_public_ip = aws_instance.tg.public_ip + dut1_public_ip = aws_instance.sut1.public_ip + } + ) + filename = "${path.module}/../../fdio.infra.ansible/inventories/cloud_inventory/hosts.yaml" +} \ No newline at end of file diff --git a/fdio.infra.terraform/terraform-aws-2n-c7gn/topology-2n-c7gn.tftpl b/fdio.infra.terraform/terraform-aws-2n-c7gn/topology-2n-c7gn.tftpl new file mode 100644 index 0000000000..e693f6c42c --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-c7gn/topology-2n-c7gn.tftpl @@ -0,0 +1,51 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/2_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 2-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # tg_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # dut1_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G diff --git a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/hosts.tftpl b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/topology-3n-aws-c5n.tftpl b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/topology-3n-aws-c5n.tftpl new file mode 100644 index 0000000000..b353aa5ad1 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/topology-3n-aws-c5n.tftpl @@ -0,0 +1,73 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/3_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 3-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-50G + port2: + # tg_instance/p2 - 50GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-50G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-50G + port2: + # dut1_instance/p2 - 50GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link21 + model: Amazon-Nitro-50G + DUT2: + type: DUT + host: "{{ dut2_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut2_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ dut2_if1_mac }} + pci_address: "0000:00:06.0" + link: link21 + model: Amazon-Nitro-50G + port2: + # dut2_instance/p2 - 50GE port1 on ENA NIC. + mac_address: {{ dut2_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-50G + diff --git a/fdio.infra.terraform/terraform-aws-3n-c6gn/hosts.tftpl b/fdio.infra.terraform/terraform-aws-3n-c6gn/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-c6gn/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-3n-c6gn/topology-3n-c6gn.tftpl b/fdio.infra.terraform/terraform-aws-3n-c6gn/topology-3n-c6gn.tftpl new file mode 100644 index 0000000000..295d457f49 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-c6gn/topology-3n-c6gn.tftpl @@ -0,0 +1,73 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/3_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 3-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # tg_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # dut1_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link21 + model: Amazon-Nitro-100G + DUT2: + type: DUT + host: "{{ dut2_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut2_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ dut2_if1_mac }} + pci_address: "0000:00:06.0" + link: link21 + model: Amazon-Nitro-100G + port2: + # dut2_instance/p2 - 100GE port1 on ENA NIC. + mac_address: {{ dut2_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G + diff --git a/fdio.infra.terraform/terraform-aws-3n-c6in/hosts.tftpl b/fdio.infra.terraform/terraform-aws-3n-c6in/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-c6in/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-3n-c6in/topology-3n-c6in.tftpl b/fdio.infra.terraform/terraform-aws-3n-c6in/topology-3n-c6in.tftpl new file mode 100644 index 0000000000..c280f4e7e1 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-c6in/topology-3n-c6in.tftpl @@ -0,0 +1,73 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/3_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 3-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 200GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-200G + port2: + # tg_instance/p2 - 200GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-200G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 200GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-200G + port2: + # dut1_instance/p2 - 200GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link21 + model: Amazon-Nitro-200G + DUT2: + type: DUT + host: "{{ dut2_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut2_instance/p1 - 200GE port1 on ENA NIC. + mac_address: {{ dut2_if1_mac }} + pci_address: "0000:00:06.0" + link: link21 + model: Amazon-Nitro-200G + port2: + # dut2_instance/p2 - 200GE port1 on ENA NIC. + mac_address: {{ dut2_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-200G + diff --git a/fdio.infra.terraform/terraform-aws-3n-c7gn/hosts.tftpl b/fdio.infra.terraform/terraform-aws-3n-c7gn/hosts.tftpl new file mode 100644 index 0000000000..f02586cc99 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-c7gn/hosts.tftpl @@ -0,0 +1,9 @@ +all: + children: + tg: + hosts: + {{ tg_public_ip }} + sut: + hosts: + {{ dut1_public_ip | default() }} + {{ dut2_public_ip | default() }} diff --git a/fdio.infra.terraform/terraform-aws-3n-c7gn/main.tf b/fdio.infra.terraform/terraform-aws-3n-c7gn/main.tf index 1c12442dbc..fe443bc96c 100644 --- a/fdio.infra.terraform/terraform-aws-3n-c7gn/main.tf +++ b/fdio.infra.terraform/terraform-aws-3n-c7gn/main.tf @@ -414,34 +414,44 @@ resource "null_resource" "deploy_sut2" { } } -resource "null_resource" "deploy_topology" { +resource "local_file" "topology_file" { depends_on = [ aws_instance.tg, aws_instance.sut1, aws_instance.sut2 ] - provisioner "ansible" { - plays { - playbook { - file_path = var.ansible_topology_path - } - hosts = ["local"] - extra_vars = { - ansible_python_interpreter = local.ansible_python_executable - testbed_name = local.testbed_name - cloud_topology = local.topology_name - tg_if1_mac = data.aws_network_interface.tg_if1.mac_address - tg_if2_mac = data.aws_network_interface.tg_if2.mac_address - dut1_if1_mac = data.aws_network_interface.sut1_if1.mac_address - dut1_if2_mac = data.aws_network_interface.sut1_if2.mac_address - dut2_if1_mac = data.aws_network_interface.sut2_if1.mac_address - dut2_if2_mac = data.aws_network_interface.sut2_if2.mac_address - tg_public_ip = aws_instance.tg.public_ip - dut1_public_ip = aws_instance.sut1.public_ip - dut2_public_ip = aws_instance.sut2.public_ip - public_ip_list = "${aws_instance.tg.public_ip},${aws_instance.sut1.public_ip},${aws_instance.sut2.public_ip}" - } + content = templatefile( + "${path.module}/topology-${local.topology_name}.tftpl", + { + tg_if1_mac = data.aws_network_interface.tg_if1.mac_address + tg_if2_mac = data.aws_network_interface.tg_if2.mac_address + dut1_if1_mac = data.aws_network_interface.sut1_if1.mac_address + dut1_if2_mac = data.aws_network_interface.sut1_if2.mac_address + dut2_if1_mac = data.aws_network_interface.sut2_if1.mac_address + dut2_if2_mac = data.aws_network_interface.sut2_if2.mac_address + tg_public_ip = aws_instance.tg.public_ip + dut1_public_ip = aws_instance.sut1.public_ip + dut2_public_ip = aws_instance.sut2.public_ip } - } + ) + filename = "${path.module}/../../topologies/available/${local.topology_name}-${local.testbed_name}.yaml" +} + +resource "local_file" "hosts" { + depends_on = [ + aws_instance.tg, + aws_instance.sut1, + aws_instance.sut2 + ] + + content = templatefile( + "${path.module}/hosts.tftpl", + { + tg_public_ip = aws_instance.tg.public_ip + dut1_public_ip = aws_instance.sut1.public_ip + dut2_public_ip = aws_instance.sut2.public_ip + } + ) + filename = "${path.module}/../../fdio.infra.ansible/inventories/cloud_inventory/hosts.yaml" } \ No newline at end of file diff --git a/fdio.infra.terraform/terraform-aws-3n-c7gn/topology-3n-c7gn.tftpl b/fdio.infra.terraform/terraform-aws-3n-c7gn/topology-3n-c7gn.tftpl new file mode 100644 index 0000000000..295d457f49 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-3n-c7gn/topology-3n-c7gn.tftpl @@ -0,0 +1,73 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/3_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 3-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # tg_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut1_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-100G + port2: + # dut1_instance/p2 - 100GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link21 + model: Amazon-Nitro-100G + DUT2: + type: DUT + host: "{{ dut2_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + interfaces: + port1: + # dut2_instance/p1 - 100GE port1 on ENA NIC. + mac_address: {{ dut2_if1_mac }} + pci_address: "0000:00:06.0" + link: link21 + model: Amazon-Nitro-100G + port2: + # dut2_instance/p2 - 100GE port1 on ENA NIC. + mac_address: {{ dut2_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-100G + diff --git a/resources/libraries/bash/function/terraform.sh b/resources/libraries/bash/function/terraform.sh index 9d13a55990..2a0e0ed2be 100644 --- a/resources/libraries/bash/function/terraform.sh +++ b/resources/libraries/bash/function/terraform.sh @@ -79,15 +79,15 @@ function terraform_init () { pushd "${CSIT_DIR}"/fdio.infra.terraform || die "Pushd failed!" pushd "${TERRAFORM_MODULE_DIR}" || die "Pushd failed!" - plugin_url="https://github.com/radekg/terraform-provisioner-ansible/" - plugin_url+="releases/download/v2.5.0/" - plugin_url+="terraform-provisioner-ansible-linux-amd64_v2.5.0" - plugin_dir="${HOME}/.terraform.d/plugins/" - plugin_path+="${plugin_dir}terraform-provisioner-ansible_v2.5.0" - - mkdir -p "${plugin_dir}" || die "Failed to create dir!" - wget -O "${plugin_path}" "${plugin_url}" || die "Failed to download plugin!" - chmod +x "${plugin_path}" || die "Failed to add execute rights!" + #plugin_url="https://github.com/radekg/terraform-provisioner-ansible/" + #plugin_url+="releases/download/v2.5.0/" + #plugin_url+="terraform-provisioner-ansible-linux-amd64_v2.5.0" + #plugin_dir="${HOME}/.terraform.d/plugins/" + #plugin_path+="${plugin_dir}terraform-provisioner-ansible_v2.5.0" + + #mkdir -p "${plugin_dir}" || die "Failed to create dir!" + #wget -O "${plugin_path}" "${plugin_url}" || die "Failed to download plugin!" + #chmod +x "${plugin_path}" || die "Failed to add execute rights!" rm -f terraform.tfstate || die "Failed to clear terraform state!" export TF_LOG=INFO -- 2.16.6