aboutsummaryrefslogtreecommitdiffstats
path: root/fdio.infra.terraform/terraform-aws-3n-aws-c5n
diff options
context:
space:
mode:
Diffstat (limited to 'fdio.infra.terraform/terraform-aws-3n-aws-c5n')
-rw-r--r--fdio.infra.terraform/terraform-aws-3n-aws-c5n/hosts.tftpl9
-rw-r--r--fdio.infra.terraform/terraform-aws-3n-aws-c5n/main.tf93
-rw-r--r--fdio.infra.terraform/terraform-aws-3n-aws-c5n/providers.tf2
-rw-r--r--fdio.infra.terraform/terraform-aws-3n-aws-c5n/topology-3n-aws-c5n.tftpl72
-rw-r--r--fdio.infra.terraform/terraform-aws-3n-aws-c5n/variables.tf22
-rw-r--r--fdio.infra.terraform/terraform-aws-3n-aws-c5n/versions.tf12
6 files changed, 147 insertions, 63 deletions
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..e88c8ba510
--- /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}
+ ${dut2_public_ip} \ No newline at end of file
diff --git a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/main.tf b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/main.tf
index bb8efffc96..c95c8a6588 100644
--- a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/main.tf
+++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/main.tf
@@ -59,19 +59,24 @@ module "subnet_d" {
}
# Create Private Key
-resource "tls_private_key" "private_key" {
- algorithm = var.private_key_algorithm
- ecdsa_curve = var.private_key_ecdsa_curve
- rsa_bits = var.private_key_rsa_bits
+module "private_key" {
+ source = "pmikus/private-key/tls"
+ version = "4.0.4"
+
+ private_key_algorithm = var.private_key_algorithm
}
# Create Key Pair
-resource "aws_key_pair" "key_pair" {
- depends_on = [
- tls_private_key.private_key
- ]
- key_name = local.key_pair_key_name
- public_key = tls_private_key.private_key.public_key_openssh
+module "key_pair" {
+ source = "pmikus/key-pair/aws"
+ version = "5.7.0"
+
+ key_pair_key_name = local.key_pair_key_name
+ key_pair_public_key = module.private_key.public_key_openssh
+
+ key_pair_tags = {
+ "Environment" = local.environment
+ }
}
# Create Placement Group
@@ -91,7 +96,7 @@ resource "aws_instance" "tg" {
associate_public_ip_address = var.tg_associate_public_ip_address
instance_initiated_shutdown_behavior = var.tg_instance_initiated_shutdown_behavior
instance_type = var.tg_instance_type
- key_name = aws_key_pair.key_pair.key_name
+ key_name = module.key_pair.key_pair_key_name
placement_group = aws_placement_group.placement_group.id
private_ip = var.tg_private_ip
source_dest_check = var.tg_source_dest_check
@@ -189,7 +194,7 @@ resource "aws_instance" "sut1" {
associate_public_ip_address = var.sut1_associate_public_ip_address
instance_initiated_shutdown_behavior = var.sut1_instance_initiated_shutdown_behavior
instance_type = var.sut1_instance_type
- key_name = aws_key_pair.key_pair.key_name
+ key_name = module.key_pair.key_pair_key_name
placement_group = aws_placement_group.placement_group.id
private_ip = var.sut1_private_ip
source_dest_check = var.sut1_source_dest_check
@@ -268,7 +273,7 @@ resource "aws_instance" "sut2" {
associate_public_ip_address = var.sut2_associate_public_ip_address
instance_initiated_shutdown_behavior = var.sut2_instance_initiated_shutdown_behavior
instance_type = var.sut2_instance_type
- key_name = aws_key_pair.key_pair.key_name
+ key_name = module.key_pair.key_pair_key_name
placement_group = aws_placement_group.placement_group.id
private_ip = var.sut2_private_ip
source_dest_check = var.sut2_source_dest_check
@@ -353,7 +358,7 @@ resource "null_resource" "deploy_tg" {
connection {
user = "ubuntu"
host = aws_instance.tg.public_ip
- private_key = tls_private_key.private_key.private_key_pem
+ private_key = module.private_key.private_key_pem
}
provisioner "remote-exec" {
@@ -377,7 +382,7 @@ resource "null_resource" "deploy_sut1" {
connection {
user = "ubuntu"
host = aws_instance.sut1.public_ip
- private_key = tls_private_key.private_key.private_key_pem
+ private_key = module.private_key.private_key_pem
}
provisioner "remote-exec" {
@@ -401,7 +406,7 @@ resource "null_resource" "deploy_sut2" {
connection {
user = "ubuntu"
host = aws_instance.sut2.public_ip
- private_key = tls_private_key.private_key.private_key_pem
+ private_key = module.private_key.private_key_pem
}
provisioner "remote-exec" {
@@ -409,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-aws-c5n/providers.tf b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/providers.tf
index d0e7490d38..2482ca2839 100644
--- a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/providers.tf
+++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/providers.tf
@@ -5,7 +5,7 @@ provider "aws" {
}
provider "vault" {
- address = "http://vault.service.consul:8200"
+ address = "http://10.30.51.24:8200"
skip_tls_verify = true
token = "s.4z5PsufFwV3sHbCzK9Y2Cojd"
} \ No newline at end of file
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..9886b56a8d
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/topology-3n-aws-c5n.tftpl
@@ -0,0 +1,72 @@
+---
+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 \ No newline at end of file
diff --git a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/variables.tf b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/variables.tf
index 3f6a96d66f..d64dd5b241 100644
--- a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/variables.tf
+++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/variables.tf
@@ -11,7 +11,7 @@ variable "region" {
variable "resource_prefix" {
description = "Resources name prefix."
type = string
- default = "csit-2n-aws-c5n"
+ default = "csit-3n-aws-c5n"
}
variable "testbed_name" {
@@ -24,19 +24,7 @@ variable "testbed_name" {
variable "private_key_algorithm" {
description = "The name of the algorithm to use for the key."
type = string
- default = "RSA"
-}
-
-variable "private_key_ecdsa_curve" {
- description = "When algorithm is ECDSA, the name of the elliptic curve to use."
- type = string
- default = "P521"
-}
-
-variable "private_key_rsa_bits" {
- description = "When algorithm is RSA, the size of the generated RSA key in bits."
- type = number
- default = 4096
+ default = "ED25519"
}
# Variables for Placement Group
@@ -50,7 +38,7 @@ variable "placement_group_strategy" {
variable "tg_ami" {
description = "AMI to use for the instance."
type = string
- default = "ami-01d1d62914ef00b25"
+ default = "ami-07430bfa17fd4e597"
}
variable "tg_associate_public_ip_address" {
@@ -86,7 +74,7 @@ variable "tg_source_dest_check" {
variable "sut1_ami" {
description = "AMI to use for the instance."
type = string
- default = "ami-0bfdf32a014984d8a"
+ default = "ami-0a890555652963ec2"
}
variable "sut1_associate_public_ip_address" {
@@ -122,7 +110,7 @@ variable "sut1_source_dest_check" {
variable "sut2_ami" {
description = "AMI to use for the instance."
type = string
- default = "ami-05ea90e57d2df4368"
+ default = "ami-07898402cb1fd6561"
}
variable "sut2_associate_public_ip_address" {
diff --git a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/versions.tf b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/versions.tf
index 0eead1fc01..589699691e 100644
--- a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/versions.tf
+++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/versions.tf
@@ -2,19 +2,19 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
- version = ">= 4.3.0"
+ version = ">= 5.7.0"
}
null = {
source = "hashicorp/null"
- version = "~> 3.1.0"
+ version = ">= 3.2.1"
}
tls = {
source = "hashicorp/tls"
- version = "~> 3.1.0"
+ version = ">= 4.0.4"
}
vault = {
- version = ">=2.22.1"
+ version = ">= 3.15.2"
}
}
- required_version = ">= 1.0.4"
-}
+ required_version = ">= 1.4.2"
+} \ No newline at end of file