testing/infra/terraform/modules/benchmark_executor/apmbench.tf (60 lines of code) (raw):

locals { user = "ec2-user" } resource "null_resource" "apmbench" { count = var.apmbench_bin_path != "" ? 1 : 0 triggers = { apmbench = filesha1("${var.apmbench_bin_path}/apmbench") worker_ip = module.ec2_instance.public_ip } connection { host = module.ec2_instance.public_ip user = local.user private_key = file(var.private_key) } provisioner "remote-exec" { inline = ["mkdir -p bin"] } provisioner "file" { source = "${var.apmbench_bin_path}/apmbench" destination = "bin/apmbench" } provisioner "remote-exec" { inline = ["chmod +x ~/bin/apmbench"] } } resource "null_resource" "envrc" { depends_on = [local_file.envrc] triggers = { worker_ip = module.ec2_instance.public_ip envrc = local_file.envrc.id } connection { host = module.ec2_instance.public_ip user = local.user private_key = file(var.private_key) } provisioner "file" { source = ".envrc" destination = ".envrc" } provisioner "remote-exec" { inline = ["grep .envrc .bashrc || echo '. .envrc' >> .bashrc"] } } resource "local_file" "envrc" { content = <<EOT export ELASTIC_APM_SECRET_TOKEN="${var.apm_secret_token}" export ELASTIC_APM_SERVICE_NAME="apmbench" export ELASTIC_APM_SERVER_URL="${var.apm_server_url}" export ELASTIC_APM_VERIFY_SERVER_CERT="false" # Set the service environment export ELASTIC_APM_ENVIRONMENT="bench" export ELASTIC_APM_BREAKDOWN_METRICS="true" export ELASTIC_APM_CAPTURE_HEADERS="true" export ELASTIC_APM_CAPTURE_BODY="all" # OTEL credentials export OTEL_RESOURCE_ATTRIBUTES=service.name=apmbench,deployment.environment=bench export OTEL_EXPORTER_OTLP_ENDPOINT="${var.apm_server_url}" export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer $${ELASTIC_APM_SECRET_TOKEN}" EOT filename = ".envrc" }