From efddc84171ee1335d193bac15644a0419ef8c166 Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Thu, 7 Apr 2022 14:24:26 +0200 Subject: feat(terraform): c6gn Signed-off-by: Peter Mikus Change-Id: Ieea41e7bbdb6f185c349736a4d0bc0d27fdfa42a --- .../topology/templates/topology-2n-aws-c5n.j2 | 5 - .../topology/templates/topology-2n-aws-c6gn.j2 | 51 ++++ .../topology/templates/topology-3n-aws-c5n.j2 | 10 - fdio.infra.packer/aws_c6gn/ubuntu_focal.pkr.hcl | 119 ++++++++ .../terraform-aws-2n-aws-c5n/variables.tf | 4 +- .../terraform-aws-2n-aws-c6gn/main.tf | 322 +++++++++++++++++++++ .../terraform-aws-2n-aws-c6gn/output.tf | 0 .../terraform-aws-2n-aws-c6gn/providers.tf | 11 + .../terraform-aws-2n-aws-c6gn/variables.tf | 180 ++++++++++++ .../terraform-aws-2n-aws-c6gn/versions.tf | 20 ++ .../terraform-aws-3n-aws-c5n/variables.tf | 4 +- 11 files changed, 707 insertions(+), 19 deletions(-) create mode 100644 fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c6gn.j2 create mode 100644 fdio.infra.packer/aws_c6gn/ubuntu_focal.pkr.hcl create mode 100644 fdio.infra.terraform/terraform-aws-2n-aws-c6gn/main.tf create mode 100644 fdio.infra.terraform/terraform-aws-2n-aws-c6gn/output.tf create mode 100644 fdio.infra.terraform/terraform-aws-2n-aws-c6gn/providers.tf create mode 100644 fdio.infra.terraform/terraform-aws-2n-aws-c6gn/variables.tf create mode 100644 fdio.infra.terraform/terraform-aws-2n-aws-c6gn/versions.tf diff --git a/fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c5n.j2 b/fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c5n.j2 index 1d99a34994..de43291cc6 100644 --- a/fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c5n.j2 +++ b/fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c5n.j2 @@ -36,11 +36,6 @@ nodes: username: testuser password: Csit1234 uio_driver: vfio-pci - honeycomb: - user: admin - passwd: admin - port: 8183 - netconf_port: 2831 interfaces: port1: # dut1_instance/p1 - 50GE port1 on ENA NIC. diff --git a/fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c6gn.j2 b/fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c6gn.j2 new file mode 100644 index 0000000000..de43291cc6 --- /dev/null +++ b/fdio.infra.ansible/roles/topology/templates/topology-2n-aws-c6gn.j2 @@ -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.ansible/roles/topology/templates/topology-3n-aws-c5n.j2 b/fdio.infra.ansible/roles/topology/templates/topology-3n-aws-c5n.j2 index 631b0be63b..b353aa5ad1 100644 --- a/fdio.infra.ansible/roles/topology/templates/topology-3n-aws-c5n.j2 +++ b/fdio.infra.ansible/roles/topology/templates/topology-3n-aws-c5n.j2 @@ -36,11 +36,6 @@ nodes: username: testuser password: Csit1234 uio_driver: vfio-pci - honeycomb: - user: admin - passwd: admin - port: 8183 - netconf_port: 2831 interfaces: port1: # dut1_instance/p1 - 50GE port1 on ENA NIC. @@ -62,11 +57,6 @@ nodes: username: testuser password: Csit1234 uio_driver: vfio-pci - honeycomb: - user: admin - passwd: admin - port: 8183 - netconf_port: 2831 interfaces: port1: # dut2_instance/p1 - 50GE port1 on ENA NIC. diff --git a/fdio.infra.packer/aws_c6gn/ubuntu_focal.pkr.hcl b/fdio.infra.packer/aws_c6gn/ubuntu_focal.pkr.hcl new file mode 100644 index 0000000000..42cbb39443 --- /dev/null +++ b/fdio.infra.packer/aws_c6gn/ubuntu_focal.pkr.hcl @@ -0,0 +1,119 @@ + +packer { + required_plugins { + amazon = { + version = ">= 1.0.1" + source = "github.com/hashicorp/amazon" + } + } +} +variable "first_run_commands" { + description = "Commands to run before deployment via remote-exec" + type = list(string) + default = [ + "" + ] +} +variable "last_run_commands" { + description = "Commands to run after deployment via remote-exec" + type = list(string) + default = [ + "sudo sed -i 's/Unattended-Upgrade \"1\"/Unattended-Upgrade \"0\"/g' /etc/apt/apt.conf.d/20auto-upgrades" + ] +} +variable "ansible_file_path" { + description = "Path to Ansible playbook" + type = string + default = "../../fdio.infra.ansible/site.yaml" +} +variable "ansible_python_executable" { + description = "Path to Python interpreter" + type = string + default = "/usr/bin/python3" +} +variable "ansible_topology_path" { + description = "Path to Ansible playbook which creates a topology file" + type = string + default = "../../fdio.infra.ansible/cloud_topology.yaml" +} +variable "ansible_provision_pwd" { + description = "Password used for ansible provisioning (ansible_ssh_pass)" + type = string + default = "Csit1234" +} +source "amazon-ebs" "csit_c6gn_ubuntu_focal_sut" { + ami_name = "csit_c6gn_ubuntu_focal_sut" + ami_description = "CSIT SUT image based on Ubuntu Focal" + ena_support = true + instance_type = "c6gn.4xlarge" + launch_block_device_mappings { + device_name = "/dev/sda1" + volume_size = 40 + volume_type = "gp2" + } + force_deregister = true + region = "eu-central-1" + skip_create_ami = false + source_ami = "ami-0a875db8a031a9efb" + ssh_username = "ubuntu" +} +source "amazon-ebs" "csit_c6gn_ubuntu_focal_tg" { + ami_name = "csit_c6gn_ubuntu_focal_tg" + ami_description = "CSIT TG image based on Ubuntu Focal" + ena_support = true + instance_type = "c6gn.4xlarge" + launch_block_device_mappings { + device_name = "/dev/sda1" + volume_size = 40 + volume_type = "gp2" + } + force_deregister = true + region = "eu-central-1" + skip_create_ami = false + source_ami = "ami-0a875db8a031a9efb" + ssh_username = "ubuntu" +} +build { + name = "csit_c6gn_ubuntu_focal_sut-packer" + sources = [ + "source.amazon-ebs.csit_c6gn_ubuntu_focal_sut" + ] + provisioner "shell" { + inline = var.first_run_commands + } + provisioner "ansible" { + playbook_file = var.ansible_file_path + user = "ubuntu" + groups = ["sut_aws"] + extra_arguments = [ + "--extra-vars", "ansible_ssh_pass=${var.ansible_provision_pwd}", + "--extra-vars", "ansible_python_interpreter=${var.ansible_python_executable}", + "--extra-vars", "aws=true" + ] + } + provisioner "shell" { + inline = var.last_run_commands + } +} +build { + name = "csit_c6gn_ubuntu_focal_tg-packer" + sources = [ + "source.amazon-ebs.csit_c6gn_ubuntu_focal_tg" + ] + provisioner "shell" { + inline = var.first_run_commands + } + provisioner "ansible" { + playbook_file = var.ansible_file_path + user = "ubuntu" + groups = ["tg_aws"] + extra_arguments = [ + "--extra-vars", "ansible_ssh_pass=${var.ansible_provision_pwd}", + "--extra-vars", "ansible_python_interpreter=${var.ansible_python_executable}", + "--extra-vars", "aws=true" + ] + } + provisioner "shell" { + inline = var.last_run_commands + } +} diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf index 1a752d71ba..1cc434ea8e 100644 --- a/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf @@ -135,13 +135,13 @@ variable "tg_if2_private_ip" { variable "destination_cidr_block_tg_if1" { description = "The destination CIDR block." type = string - default = "10.0.0.0/16" + default = "10.0.0.0/24" } variable "destination_cidr_block_tg_if2" { description = "The destination CIDR block." type = string - default = "20.0.0.0/16" + default = "20.0.0.0/24" } variable "sut1_if1_private_ip" { diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/main.tf b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/main.tf new file mode 100644 index 0000000000..1f190426ad --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/main.tf @@ -0,0 +1,322 @@ +data "vault_aws_access_credentials" "creds" { + backend = "${var.vault-name}-path" + role = "${var.vault-name}-role" +} + +locals { + ansible_python_executable = "/usr/bin/python3" + availability_zone = "eu-central-1a" + name = "csit-vpc" + environment = "csit-vpc-environment" + key_pair_key_name = "${var.resource_prefix}-${var.testbed_name}-pk" + placement_group_name = "${var.resource_prefix}-${var.testbed_name}-pg" + security_group_name = "${var.resource_prefix}-${var.testbed_name}-sg" + testbed_name = "testbed1" + topology_name = "2n-aws-c6gn" + tg_name = "${var.resource_prefix}-${var.testbed_name}-tg" + sut1_name = "${var.resource_prefix}-${var.testbed_name}-sut1" +} + +# Create VPC +module "vpc" { + source = "../terraform-aws-vpc" + security_group_name = local.security_group_name + subnet_availability_zone = local.availability_zone + tags_name = local.name + tags_environment = local.environment + vpc_enable_dns_hostnames = false +} + +# Create Subnet +module "subnet_b" { + source = "../terraform-aws-subnet" + subnet_cidr_block = "192.168.10.0/24" + subnet_ipv6_cidr_block = cidrsubnet(module.vpc.vpc_ipv6_cidr_block, 8, 2) + subnet_availability_zone = local.availability_zone + tags_name = local.name + tags_environment = local.environment + subnet_vpc_id = module.vpc.vpc_id +} + +module "subnet_d" { + source = "../terraform-aws-subnet" + subnet_cidr_block = "192.168.20.0/24" + subnet_ipv6_cidr_block = cidrsubnet(module.vpc.vpc_ipv6_cidr_block, 8, 4) + subnet_availability_zone = local.availability_zone + tags_name = local.name + tags_environment = local.environment + subnet_vpc_id = module.vpc.vpc_id +} + +# 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 +} + +# 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 +} + +# Create Placement Group +resource "aws_placement_group" "placement_group" { + name = local.placement_group_name + strategy = var.placement_group_strategy +} + +# Create Instance +resource "aws_instance" "tg" { + depends_on = [ + module.vpc, + aws_placement_group.placement_group + ] + ami = var.tg_ami + availability_zone = local.availability_zone + 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 + placement_group = aws_placement_group.placement_group.id + private_ip = var.tg_private_ip + source_dest_check = var.tg_source_dest_check + subnet_id = module.vpc.vpc_subnet_id + vpc_security_group_ids = [module.vpc.vpc_security_group_id] + # host_id = "1" + + root_block_device { + delete_on_termination = true + volume_size = 50 + } + + tags = { + "Name" = local.tg_name + "Environment" = local.environment + } +} + +resource "aws_network_interface" "tg_if1" { + depends_on = [ + module.subnet_b, + aws_instance.tg + ] + private_ip = var.tg_if1_private_ip + private_ips = [var.tg_if1_private_ip] + security_groups = [module.vpc.vpc_security_group_id] + source_dest_check = var.tg_source_dest_check + subnet_id = module.subnet_b.subnet_id + + attachment { + instance = aws_instance.tg.id + device_index = 1 + } + + tags = { + "Name" = local.tg_name + "Environment" = local.environment + } +} + +resource "aws_network_interface" "tg_if2" { + depends_on = [ + module.subnet_d, + aws_instance.tg + ] + private_ip = var.tg_if2_private_ip + private_ips = [var.tg_if2_private_ip] + security_groups = [module.vpc.vpc_security_group_id] + source_dest_check = var.tg_source_dest_check + subnet_id = module.subnet_d.subnet_id + + attachment { + instance = aws_instance.tg.id + device_index = 2 + } + + tags = { + "Name" = local.tg_name + "Environment" = local.environment + } +} + +data "aws_network_interface" "tg_if1" { + id = aws_network_interface.tg_if1.id +} + +data "aws_network_interface" "tg_if2" { + id = aws_network_interface.tg_if2.id +} + +resource "aws_route" "route_tg_if1" { + depends_on = [ + aws_instance.tg + ] + destination_cidr_block = var.destination_cidr_block_tg_if1 + network_interface_id = aws_instance.tg.primary_network_interface_id + route_table_id = module.vpc.vpc_main_route_table_id +} + +resource "aws_route" "route_tg_if2" { + depends_on = [ + aws_instance.tg + ] + destination_cidr_block = var.destination_cidr_block_tg_if2 + network_interface_id = aws_instance.tg.primary_network_interface_id + route_table_id = module.vpc.vpc_main_route_table_id +} + +resource "aws_instance" "sut1" { + depends_on = [ + module.vpc, + aws_placement_group.placement_group + ] + ami = var.sut1_ami + availability_zone = local.availability_zone + 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 + placement_group = aws_placement_group.placement_group.id + private_ip = var.sut1_private_ip + source_dest_check = var.sut1_source_dest_check + subnet_id = module.vpc.vpc_subnet_id + vpc_security_group_ids = [module.vpc.vpc_security_group_id] + # host_id = "2" + + root_block_device { + delete_on_termination = true + volume_size = 50 + } + + tags = { + "Name" = local.sut1_name + "Environment" = local.environment + } +} + +resource "aws_network_interface" "sut1_if1" { + depends_on = [ + module.subnet_b, + aws_instance.sut1 + ] + private_ip = var.sut1_if1_private_ip + private_ips = [var.sut1_if1_private_ip] + security_groups = [module.vpc.vpc_security_group_id] + source_dest_check = var.sut1_source_dest_check + subnet_id = module.subnet_b.subnet_id + + attachment { + instance = aws_instance.sut1.id + device_index = 1 + } + + tags = { + "Name" = local.sut1_name + "Environment" = local.environment + } +} + +resource "aws_network_interface" "sut1_if2" { + depends_on = [ + module.subnet_d, + aws_instance.sut1 + ] + private_ip = var.sut1_if2_private_ip + private_ips = [var.sut1_if2_private_ip] + security_groups = [module.vpc.vpc_security_group_id] + source_dest_check = var.sut1_source_dest_check + subnet_id = module.subnet_d.subnet_id + + attachment { + instance = aws_instance.sut1.id + device_index = 2 + } + + tags = { + "Name" = local.sut1_name + "Environment" = local.environment + } +} + +data "aws_network_interface" "sut1_if1" { + id = aws_network_interface.sut1_if1.id +} + +data "aws_network_interface" "sut1_if2" { + id = aws_network_interface.sut1_if2.id +} + +resource "null_resource" "deploy_tg" { + depends_on = [ + aws_instance.tg, + aws_network_interface.tg_if1, + aws_network_interface.tg_if2, + aws_instance.sut1, + aws_network_interface.sut1_if1, + aws_network_interface.sut1_if2 + ] + + connection { + user = "ubuntu" + host = aws_instance.tg.public_ip + private_key = tls_private_key.private_key.private_key_pem + } + + provisioner "remote-exec" { + inline = var.first_run_commands + } +} + +resource "null_resource" "deploy_sut1" { + depends_on = [ + aws_instance.tg, + aws_network_interface.tg_if1, + aws_network_interface.tg_if2, + aws_instance.sut1, + aws_network_interface.sut1_if1, + aws_network_interface.sut1_if2 + ] + + connection { + user = "ubuntu" + host = aws_instance.sut1.public_ip + private_key = tls_private_key.private_key.private_key_pem + } + + provisioner "remote-exec" { + inline = var.first_run_commands + } +} + +resource "null_resource" "deploy_topology" { + 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}" + } + } + } +} \ No newline at end of file diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/output.tf b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/output.tf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/providers.tf b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/providers.tf new file mode 100644 index 0000000000..38244af0bd --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/providers.tf @@ -0,0 +1,11 @@ +provider "aws" { + region = var.region + access_key = data.vault_aws_access_credentials.creds.access_key + secret_key = data.vault_aws_access_credentials.creds.secret_key +} + +provider "vault" { + address = "http://10.30.51.28:8200" + skip_tls_verify = true + token = "s.4z5PsufFwV3sHbCzK9Y2Cojd" +} \ No newline at end of file diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/variables.tf b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/variables.tf new file mode 100644 index 0000000000..7bddbd5674 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/variables.tf @@ -0,0 +1,180 @@ +variable "vault-name" { + default = "dynamic-aws-creds-vault-fdio" +} + +variable "region" { + description = "AWS Region." + type = string + default = "eu-central-1" +} + +variable "resource_prefix" { + description = "Resources name prefix." + type = string + default = "csit-2n-aws-c6gn" +} + +variable "testbed_name" { + description = "Testbed name." + type = string + default = "testbed1" +} + +# Variables for Private Key +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 +} + +# Variables for Placement Group +variable "placement_group_strategy" { + description = "The placement strategy. Can be cluster, partition or spread." + type = string + default = "cluster" +} + +# Variables for Instance +variable "tg_ami" { + description = "AMI to use for the instance." + type = string + default = "ami-0c2d02d48236a23dd" +} + +variable "tg_associate_public_ip_address" { + description = "Whether to associate a public IP address with an instance in a VPC." + type = bool + default = true +} + +variable "tg_instance_initiated_shutdown_behavior" { + description = "Shutdown behavior for the instance." + type = string + default = "terminate" +} + +variable "tg_instance_type" { + description = "The instance type to use for the instance." + type = string + default = "c6gn.4xlarge" +} + +variable "tg_private_ip" { + description = "Private IP address to associate with the instance in a VPC." + type = string + default = "192.168.0.10" +} + +variable "tg_source_dest_check" { + description = "Controls if traffic is routed to the instance when the destination address does not match the instance." + type = bool + default = false +} + +variable "sut1_ami" { + description = "AMI to use for the instance." + type = string + default = "ami-05ea90e57d2df4368" +} + +variable "sut1_associate_public_ip_address" { + description = "Whether to associate a public IP address with an instance in a VPC." + type = bool + default = true +} + +variable "sut1_instance_initiated_shutdown_behavior" { + description = "Shutdown behavior for the instance." + type = string + default = "terminate" +} + +variable "sut1_instance_type" { + description = "The instance type to use for the instance." + type = string + default = "c6gn.4xlarge" +} + +variable "sut1_private_ip" { + description = "Private IP address to associate with the instance in a VPC." + type = string + default = "192.168.0.11" +} + +variable "sut1_source_dest_check" { + description = "Controls if traffic is routed to the instance when the destination address does not match the instance." + type = bool + default = false +} + +# Variables for Network Interface +variable "tg_if1_private_ip" { + description = "List of private IPs to assign to the ENI without regard to order." + type = string + default = "192.168.10.254" +} + +variable "tg_if2_private_ip" { + description = "List of private IPs to assign to the ENI without regard to order." + type = string + default = "192.168.20.254" +} + +variable "destination_cidr_block_tg_if1" { + description = "The destination CIDR block." + type = string + default = "10.0.0.0/24" +} + +variable "destination_cidr_block_tg_if2" { + description = "The destination CIDR block." + type = string + default = "20.0.0.0/24" +} + +variable "sut1_if1_private_ip" { + description = "List of private IPs to assign to the ENI without regard to order." + type = string + default = "192.168.10.11" +} + +variable "sut1_if2_private_ip" { + description = "List of private IPs to assign to the ENI without regard to order." + type = string + default = "192.168.20.11" +} + +# Variables for Null Resource +variable "first_run_commands" { + description = "List of private IPs to assign to the ENI without regard to order." + type = list(string) + default = [ + "sudo sed -i 's/^PasswordAuthentication/#PasswordAuthentication/' /etc/ssh/sshd_config", + "sudo systemctl restart sshd", + "sudo useradd --create-home -s /bin/bash provisionuser", + "echo 'provisionuser:Csit1234' | sudo chpasswd", + "echo 'provisionuser ALL = (ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers", + "sudo useradd --create-home -s /bin/bash testuser", + "echo 'testuser:Csit1234' | sudo chpasswd", + "echo 'testuser ALL = (ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers" + ] +} + +# Variables for Null Resource +variable "ansible_topology_path" { + description = "Ansible topology path." + type = string + default = "../../fdio.infra.ansible/cloud_topology.yaml" +} diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/versions.tf b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/versions.tf new file mode 100644 index 0000000000..0eead1fc01 --- /dev/null +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c6gn/versions.tf @@ -0,0 +1,20 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = ">= 4.3.0" + } + null = { + source = "hashicorp/null" + version = "~> 3.1.0" + } + tls = { + source = "hashicorp/tls" + version = "~> 3.1.0" + } + vault = { + version = ">=2.22.1" + } + } + required_version = ">= 1.0.4" +} 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 689280f681..4d7ddbef4d 100644 --- a/fdio.infra.terraform/terraform-aws-3n-aws-c5n/variables.tf +++ b/fdio.infra.terraform/terraform-aws-3n-aws-c5n/variables.tf @@ -171,13 +171,13 @@ variable "tg_if2_private_ip" { variable "destination_cidr_block_tg_if1" { description = "The destination CIDR block." type = string - default = "10.0.0.0/16" + default = "10.0.0.0/24" } variable "destination_cidr_block_tg_if2" { description = "The destination CIDR block." type = string - default = "20.0.0.0/16" + default = "20.0.0.0/24" } variable "sut1_if1_private_ip" { -- cgit 1.2.3-korg