feat(terraform): Remove ansible dependency 93/40093/2
authorpmikus <peter.mikus@protonmail.ch>
Tue, 12 Dec 2023 12:10:00 +0000 (12:10 +0000)
committerpmikus <peter.mikus@protonmail.ch>
Tue, 12 Dec 2023 13:09:06 +0000 (13:09 +0000)
- terraform ansible is not supported on aarch

Signed-off-by: Peter Mikus <peter.mikus@protonmail.ch>
Change-Id: I3d1a592b4ed97fe635813dccbf78dc42d14e0fa9

23 files changed:
fdio.infra.terraform/terraform-aws-1n-aws-c5n/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-1n-aws-c5n/topology-1n-aws-c5n.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-1n-c6in/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-1n-c6in/topology-1n-c6in.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-aws-c5n/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-aws-c5n/topology-2n-aws-c5n.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-c6gn/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-c6gn/topology-2n-c6gn.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-c6in/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-c6in/topology-2n-c6in.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-c7gn/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-2n-c7gn/main.tf
fdio.infra.terraform/terraform-aws-2n-c7gn/topology-2n-c7gn.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-aws-c5n/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-aws-c5n/topology-3n-aws-c5n.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-c6gn/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-c6gn/topology-3n-c6gn.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-c6in/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-c6in/topology-3n-c6in.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-c7gn/hosts.tftpl [new file with mode: 0644]
fdio.infra.terraform/terraform-aws-3n-c7gn/main.tf
fdio.infra.terraform/terraform-aws-3n-c7gn/topology-3n-c7gn.tftpl [new file with mode: 0644]
resources/libraries/bash/function/terraform.sh

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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..649d7e7
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..7d3f4e5
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..de43291
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..e693f6c
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..ef7b464
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -0,0 +1,9 @@
+all:
+  children:
+    tg:
+      hosts:
+        {{ tg_public_ip }}
+    sut:
+      hosts:
+        {{ dut1_public_ip | default() }}
+        {{ dut2_public_ip | default() }}
index 3fd3012..5711d73 100644 (file)
@@ -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 (file)
index 0000000..e693f6c
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..b353aa5
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..295d457
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -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 (file)
index 0000000..c280f4e
--- /dev/null
@@ -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 (file)
index 0000000..f02586c
--- /dev/null
@@ -0,0 +1,9 @@
+all:
+  children:
+    tg:
+      hosts:
+        {{ tg_public_ip }}
+    sut:
+      hosts:
+        {{ dut1_public_ip | default() }}
+        {{ dut2_public_ip | default() }}
index 1c12442..fe443bc 100644 (file)
@@ -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 (file)
index 0000000..295d457
--- /dev/null
@@ -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
+
index 9d13a55..2a0e0ed 100644 (file)
@@ -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