diff --git a/examples/multi-runner/main.tf b/examples/multi-runner/main.tf index 9f887060..3c591e5c 100644 --- a/examples/multi-runner/main.tf +++ b/examples/multi-runner/main.tf @@ -120,6 +120,13 @@ module "multi-runner" { fifo = true delay_webhook_event = 0 runner_config = { + # Test retrieving tag information via AWS API (Cli) + runner_metadata_options = { + instance_metadata_tags = "disabled" + http_endpoint = "enabled" + http_tokens = "optional" + http_put_response_hop_limit = 1 + } runner_os = "linux" runner_architecture = "x64" create_service_linked_role_spot = true diff --git a/modules/runners/main.tf b/modules/runners/main.tf index c8b08f66..fe53a431 100644 --- a/modules/runners/main.tf +++ b/modules/runners/main.tf @@ -144,8 +144,10 @@ resource "aws_launch_template" "runner" { S3_LOCATION_RUNNER_DISTRIBUTION = local.s3_location_runner_distribution RUNNER_ARCHITECTURE = var.runner_architecture }) - post_install = var.userdata_post_install - start_runner = templatefile(local.userdata_start_runner[var.runner_os], {}) + post_install = var.userdata_post_install + start_runner = templatefile(local.userdata_start_runner[var.runner_os], { + metadata_tags = var.metadata_options != null ? var.metadata_options.instance_metadata_tags : "enabled" + }) ghes_url = var.ghes_url ghes_ssl_verify = var.ghes_ssl_verify diff --git a/modules/runners/templates/start-runner.sh b/modules/runners/templates/start-runner.sh index 3cd866d7..b93aadbc 100644 --- a/modules/runners/templates/start-runner.sh +++ b/modules/runners/templates/start-runner.sh @@ -13,12 +13,20 @@ echo "Retrieved REGION from AWS API ($region)" instance_id=$(curl -f -H "X-aws-ec2-metadata-token: $token" -v http://169.254.169.254/latest/meta-data/instance-id) echo "Retrieved INSTANCE_ID from AWS API ($instance_id)" +%{ if metadata_tags == "enabled" } environment=$(curl -f -H "X-aws-ec2-metadata-token: $token" -v http://169.254.169.254/latest/meta-data/tags/instance/ghr:environment) -echo "Retrieved ghr:environment tag - ($environment)" - ssm_config_path=$(curl -f -H "X-aws-ec2-metadata-token: $token" -v http://169.254.169.254/latest/meta-data/tags/instance/ghr:ssm_config_path) -echo "Retrieved ghr:ssm_config_path tag - ($ssm_config_path)" +%{ else } +tags=$(aws ec2 describe-tags --region "$region" --filters "Name=resource-id,Values=$instance_id") +echo "Retrieved tags from AWS API ($tags)" + +environment=$(echo "$tags" | jq -r '.Tags[] | select(.Key == "ghr:environment") | .Value') +ssm_config_path=$(echo "$tags" | jq -r '.Tags[] | select(.Key == "ghr:ssm_config_path") | .Value') +%{ endif } + +echo "Retrieved ghr:environment tag - ($environment)" +echo "Retrieved ghr:ssm_config_path tag - ($ssm_config_path)" parameters=$(aws ssm get-parameters-by-path --path "$ssm_config_path" --region "$region" --query "Parameters[*].{Name:Name,Value:Value}") echo "Retrieved parameters from AWS SSM ($parameters)"