diff options
Diffstat (limited to 'fdio.infra.terraform/terraform-aws-3n-aws-c5n')
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 |