* [QTI-275] Add infrastructure integration testing On pull requests that originate from branches of the `hashicorp/boundary` repo, we now conditionally dispatch infrastructure integration tests using the Enos framework. The `integration` Enos scenario includes two `builder` variants which allow developers or CI to deploy a Boundary cluster in AWS using either a local `boundary` install bundle or that which is produced in the `build` workflow for CRT. The `test` variants determine which type of infrastructure integration test to run. At present those options are `cli_ui` (Bats CLI tests) or `smoke` (creates target instances and a target host catalog and verifies that `boundary` works). In addition to the new workflow and quality scenarios, we simplified the some `build` workflow steps and added Go module caching to speed up the build pipeline. See the [enos/README.md](https://github.com/hashicorp/boundary/blob/main/enos/README.md) for a detailed explanation on how to configure and execute Enos scenarios from your machine. Signed-off-by: Ryan Cragun <me@ryan.ec> Co-authored-by: Rebecca Willett <rwillett@hashicorp.com> Co-authored-by: Josh Branch <jbrand@hashicorp.com>
61 lines
1.3 KiB
Terraform
61 lines
1.3 KiB
Terraform
variable "vpc_id" {}
|
|
variable "ami_id" {}
|
|
variable "target_count" {}
|
|
variable "environment" {}
|
|
variable "project_name" {}
|
|
variable "instance_type" {}
|
|
variable "aws_ssh_keypair_name" {}
|
|
variable "enos_user" {}
|
|
|
|
data "aws_subnets" "infra" {
|
|
filter {
|
|
name = "vpc-id"
|
|
values = [var.vpc_id]
|
|
}
|
|
}
|
|
|
|
resource "aws_security_group" "boundary_target" {
|
|
name = "boundary-target-sg"
|
|
description = "SSH and boundary Traffic"
|
|
vpc_id = var.vpc_id
|
|
|
|
# SSH
|
|
ingress {
|
|
from_port = 22
|
|
to_port = 22
|
|
protocol = "tcp"
|
|
cidr_blocks = ["10.0.0.0/8"]
|
|
}
|
|
|
|
egress {
|
|
from_port = 0
|
|
to_port = 0
|
|
protocol = "-1"
|
|
cidr_blocks = ["0.0.0.0/0"]
|
|
}
|
|
|
|
tags = {
|
|
"Name" : "boundary-target-sg"
|
|
}
|
|
}
|
|
|
|
resource "aws_instance" "target" {
|
|
count = var.target_count
|
|
ami = var.ami_id
|
|
instance_type = var.instance_type
|
|
vpc_security_group_ids = [aws_security_group.boundary_target.id]
|
|
subnet_id = tolist(data.aws_subnets.infra.ids)[count.index % length(data.aws_subnets.infra.ids)]
|
|
key_name = var.aws_ssh_keypair_name
|
|
|
|
tags = {
|
|
"Name" : "boundary-target-${count.index}",
|
|
"Type" : "target",
|
|
"Environment" : var.environment
|
|
"Enos User" : var.enos_user,
|
|
}
|
|
}
|
|
|
|
output "target_ips" {
|
|
value = aws_instance.target.*.private_ip
|
|
}
|