--- /dev/null
+packer {
+ required_plugins {
+ amazon = {
+ version = ">= 1.0.1"
+ source = "github.com/hashicorp/amazon"
+ }
+ }
+}
+
+variable "first_run_commands" {
+ description = "Commands to run after deployment via remote-exec"
+ type = list(string)
+ default = [
+ ""
+ ]
+}
+
+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_c5n_ubuntu_focal_sut" {
+ ami_name = "csit_c5n_ubuntu_focal_sut"
+ ami_description = "CSIT SUT image based on Ubuntu Focal"
+ ena_support = true
+ instance_type = "c5n.9xlarge"
+ 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_c5n_ubuntu_focal_tg" {
+ ami_name = "csit_c5n_ubuntu_focal_tg"
+ ami_description = "CSIT TG image based on Ubuntu Focal"
+ ena_support = true
+ instance_type = "c5n.9xlarge"
+ 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_c5n_ubuntu_focal_sut-packer"
+ sources = [
+ "source.amazon-ebs.csit_c5n_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"
+ ]
+ }
+}
+
+build {
+ name = "csit_c5n_ubuntu_focal_tg-packer"
+ sources = [
+ "source.amazon-ebs.csit_c5n_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"
+ ]
+ }
+}
--- /dev/null
+packer {
+ required_plugins {
+ amazon = {
+ version = ">= 1.0.1"
+ source = "github.com/hashicorp/amazon"
+ }
+ }
+}
+
+variable "first_run_commands" {
+ description = "Commands to run after deployment via remote-exec"
+ type = list(string)
+ default = [
+ ""
+ ]
+}
+
+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_c5n_ubuntu_focal_sut" {
+ ami_name = "csit_c5n_ubuntu_focal_sut"
+ ami_description = "CSIT SUT image based on Ubuntu Focal"
+ ena_support = true
+ instance_type = "c5n.9xlarge"
+ 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_c5n_ubuntu_focal_tg" {
+ ami_name = "csit_c5n_ubuntu_focal_tg"
+ ami_description = "CSIT TG image based on Ubuntu Focal"
+ ena_support = true
+ instance_type = "c5n.9xlarge"
+ 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_c5n_ubuntu_focal_sut-packer"
+ sources = [
+ "source.amazon-ebs.csit_c5n_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"
+ ]
+ }
+}
+
+build {
+ name = "csit_c5n_ubuntu_focal_tg-packer"
+ sources = [
+ "source.amazon-ebs.csit_c5n_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"
+ ]
+ }
+}
# Instances
resource "aws_instance" "tg" {
depends_on = [aws_vpc.CSITVPC, aws_placement_group.CSITPG]
- ami = var.ami_image
+ ami = var.ami_image_tg
availability_zone = var.avail_zone
instance_initiated_shutdown_behavior = var.instance_initiated_shutdown_behavior
instance_type = var.instance_type
resource "aws_instance" "dut1" {
depends_on = [aws_vpc.CSITVPC, aws_placement_group.CSITPG, aws_instance.tg]
- ami = var.ami_image
+ ami = var.ami_image_sut
availability_zone = var.avail_zone
instance_initiated_shutdown_behavior = var.instance_initiated_shutdown_behavior
instance_type = var.instance_type
private_key = tls_private_key.CSITTLS.private_key_pem
}
- provisioner "remote-exec" {
- inline = var.first_run_commands
- }
-
- provisioner "ansible" {
- plays {
- playbook {
- file_path = var.ansible_file_path
- force_handlers = true
- }
- hosts = ["tg_aws"]
- extra_vars = {
- ansible_ssh_pass = var.ansible_provision_pwd
- ansible_python_interpreter = var.ansible_python_executable
- aws = true
- }
- }
- }
-
- provisioner "remote-exec" {
- on_failure = continue
- inline = ["sudo reboot"]
- }
+# provisioner "remote-exec" {
+# inline = var.first_run_commands
+# }
+#
+# provisioner "ansible" {
+# plays {
+# playbook {
+# file_path = var.ansible_file_path
+# force_handlers = true
+# }
+# hosts = ["tg_aws"]
+# extra_vars = {
+# ansible_ssh_pass = var.ansible_provision_pwd
+# ansible_python_interpreter = var.ansible_python_executable
+# aws = true
+# }
+# }
+# }
+#
+# provisioner "remote-exec" {
+# on_failure = continue
+# inline = ["sudo reboot"]
+# }
}
resource "null_resource" "deploy_dut1" {
private_key = tls_private_key.CSITTLS.private_key_pem
}
- provisioner "remote-exec" {
- inline = var.first_run_commands
- }
-
- provisioner "ansible" {
- plays {
- playbook {
- file_path = var.ansible_file_path
- force_handlers = true
- }
- hosts = ["sut_aws"]
- extra_vars = {
- ansible_ssh_pass = var.ansible_provision_pwd
- ansible_python_interpreter = var.ansible_python_executable
- aws = true
- }
- }
- }
-
- provisioner "remote-exec" {
- on_failure = continue
- inline = ["sudo reboot"]
- }
+# provisioner "remote-exec" {
+# inline = var.first_run_commands
+# }
+#
+# provisioner "ansible" {
+# plays {
+# playbook {
+# file_path = var.ansible_file_path
+# force_handlers = true
+# }
+# hosts = ["sut_aws"]
+# extra_vars = {
+# ansible_ssh_pass = var.ansible_provision_pwd
+# ansible_python_interpreter = var.ansible_python_executable
+# aws = true
+# }
+# }
+# }
+#
+# provisioner "remote-exec" {
+# on_failure = continue
+# inline = ["sudo reboot"]
+# }
}
resource "null_resource" "deploy_topology" {
default = "dynamic-aws-creds-vault-admin"
}
-variable "ami_image" {
- description = "AWS AMI image name"
+variable "ami_image_tg" {
+ description = "AWS AMI image name for TG"
+ type = string
+}
+
+variable "ami_image_sut" {
+ description = "AWS AMI image name for SUT"
type = string
}
region = var.region
avail_zone = var.avail_zone
instance_type = var.instance_type
- ami_image = var.ami_image
+ ami_image_tg = var.ami_image_tg
+ ami_image_sut = var.ami_image_sut
# AWS Network
vpc_cidr_mgmt = "192.168.0.0/24"
default = "eu-central-1a"
}
-variable "ami_image" {
+variable "ami_image_tg" {
# eu-central-1/focal-20.04-amd64-hvm-ssd-20210119.1
# kernel 5.4.0-1035-aws (~5.4.0-65)
description = "AWS AMI image ID"
type = string
- default = "ami-0a875db8a031a9efb"
+ default = "ami-0d6bc0344dc036b9d"
+}
+
+variable "ami_image_sut" {
+ # eu-central-1/focal-20.04-amd64-hvm-ssd-20210119.1
+ # kernel 5.4.0-1035-aws (~5.4.0-65)
+ description = "AWS AMI image ID"
+ type = string
+ default = "ami-012c9c631964367be"
+}
+
+variable "instance_initiated_shutdown_behavior" {
+ description = "Shutdown behavior for the instance"
+ type = string
+ default = "terminate"
}
variable "instance_type" {
# Instances
resource "aws_instance" "tg" {
- ami = var.ami_image
+ ami = var.ami_image_tg
availability_zone = var.avail_zone
instance_initiated_shutdown_behavior = var.instance_initiated_shutdown_behavior
instance_type = var.instance_type
}
resource "aws_instance" "dut1" {
- ami = var.ami_image
+ ami = var.ami_image_sut
availability_zone = var.avail_zone
instance_initiated_shutdown_behavior = var.instance_initiated_shutdown_behavior
instance_type = var.instance_type
}
resource "aws_instance" "dut2" {
- ami = var.ami_image
- availability_zone = var.avail_zone
- instance_type = var.instance_type
- key_name = aws_key_pair.CSITKP.key_name
- associate_public_ip_address = true
- subnet_id = aws_subnet.mgmt.id
- private_ip = var.dut2_mgmt_ip
- vpc_security_group_ids = [aws_security_group.CSITSG.id]
- placement_group = aws_placement_group.CSITPG.id
- source_dest_check = false
- # host_id = "3"
+ ami = var.ami_image_sut
+ availability_zone = var.avail_zone
+ instance_initiated_shutdown_behavior = var.instance_initiated_shutdown_behavior
+ instance_type = var.instance_type
+ key_name = aws_key_pair.CSITKP.key_name
+ associate_public_ip_address = true
+ subnet_id = aws_subnet.mgmt.id
+ private_ip = var.dut2_mgmt_ip
+ vpc_security_group_ids = [aws_security_group.CSITSG.id]
+ placement_group = aws_placement_group.CSITPG.id
+ source_dest_check = false
+ # host_id = "3"
depends_on = [
aws_vpc.CSITVPC,
private_key = tls_private_key.CSITTLS.private_key_pem
}
- provisioner "remote-exec" {
- inline = var.first_run_commands
- }
-
- provisioner "ansible" {
- plays {
- playbook {
- file_path = var.ansible_file_path
- force_handlers = true
- }
- hosts = ["sut_aws"]
- extra_vars = {
- ansible_ssh_pass = var.ansible_provision_pwd
- ansible_python_interpreter = var.ansible_python_executable
- aws = true
- }
- }
- }
-
- provisioner "remote-exec" {
- on_failure = continue
- inline = ["sudo reboot"]
- }
+# provisioner "remote-exec" {
+# inline = var.first_run_commands
+# }
+#
+# provisioner "ansible" {
+# plays {
+# playbook {
+# file_path = var.ansible_file_path
+# force_handlers = true
+# }
+# hosts = ["sut_aws"]
+# extra_vars = {
+# ansible_ssh_pass = var.ansible_provision_pwd
+# ansible_python_interpreter = var.ansible_python_executable
+# aws = true
+# }
+# }
+# }
+#
+# provisioner "remote-exec" {
+# on_failure = continue
+# inline = ["sudo reboot"]
+# }
}
resource "null_resource" "deploy_dut2" {
private_key = tls_private_key.CSITTLS.private_key_pem
}
- provisioner "remote-exec" {
- inline = var.first_run_commands
- }
-
- provisioner "ansible" {
- plays {
- playbook {
- file_path = var.ansible_file_path
- force_handlers = true
- }
- hosts = ["sut_aws"]
- extra_vars = {
- ansible_ssh_pass = var.ansible_provision_pwd
- ansible_python_interpreter = var.ansible_python_executable
- aws = true
- }
- }
- }
-
- provisioner "remote-exec" {
- on_failure = continue
- inline = ["sudo reboot"]
- }
+# provisioner "remote-exec" {
+# inline = var.first_run_commands
+# }
+#
+# provisioner "ansible" {
+# plays {
+# playbook {
+# file_path = var.ansible_file_path
+# force_handlers = true
+# }
+# hosts = ["sut_aws"]
+# extra_vars = {
+# ansible_ssh_pass = var.ansible_provision_pwd
+# ansible_python_interpreter = var.ansible_python_executable
+# aws = true
+# }
+# }
+# }
+#
+# provisioner "remote-exec" {
+# on_failure = continue
+# inline = ["sudo reboot"]
+# }
}
resource "null_resource" "deploy_topology" {
default = "dynamic-aws-creds-vault-admin"
}
-variable "ami_image" {
- description = "AWS AMI image name"
+variable "ami_image_tg" {
+ description = "AWS AMI image name for TG"
+ type = string
+}
+
+variable "ami_image_sut" {
+ description = "AWS AMI image name for SUT"
type = string
}
region = var.region
avail_zone = var.avail_zone
instance_type = var.instance_type
- ami_image = var.ami_image
+ ami_image_tg = var.ami_image_tg
+ ami_image_sut = var.ami_image_sut
# AWS Network
vpc_cidr_mgmt = "192.168.0.0/24"
default = "eu-central-1"
}
+variable "vault-name" {
+ default = "dynamic-aws-creds-vault-admin"
+}
+
variable "avail_zone" {
description = "AWS availability zone"
type = string
default = "eu-central-1a"
}
-variable "ami_image" {
+variable "ami_image_tg" {
+ # eu-central-1/focal-20.04-amd64-hvm-ssd-20210119.1
+ # kernel 5.4.0-1035-aws (~5.4.0-65)
+ description = "AWS AMI image ID"
+ type = string
+ default = "ami-0d6bc0344dc036b9d"
+}
+
+variable "ami_image_sut" {
# eu-central-1/focal-20.04-amd64-hvm-ssd-20210119.1
# kernel 5.4.0-1035-aws (~5.4.0-65)
description = "AWS AMI image ID"
type = string
- default = "ami-0a875db8a031a9efb"
+ default = "ami-012c9c631964367be"
}
variable "instance_initiated_shutdown_behavior" {