From ff6c8c898b1ad28d9154448304a916c693cbbce3 Mon Sep 17 00:00:00 2001 From: Niek Palm Date: Thu, 9 Mar 2023 11:19:47 +0100 Subject: [PATCH] refactor names and manage fixed tags via terraform --- README.md | 2 +- modules/runners/README.md | 2 +- modules/runners/lambdas/runners/src/aws/runners.test.ts | 9 ++++----- modules/runners/lambdas/runners/src/aws/runners.ts | 4 +--- modules/runners/main.tf | 3 +++ modules/runners/templates/start-runner.ps1 | 4 ++-- modules/runners/templates/start-runner.sh | 4 ++-- modules/runners/variables.tf | 2 +- variables.tf | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index b3fbe93445..7096c07fe9 100644 --- a/README.md +++ b/README.md @@ -524,7 +524,7 @@ We welcome any improvement to the standard module to make the default as secure | [runner\_iam\_role\_managed\_policy\_arns](#input\_runner\_iam\_role\_managed\_policy\_arns) | Attach AWS or customer-managed IAM policies (by ARN) to the runner IAM role | `list(string)` | `[]` | no | | [runner\_log\_files](#input\_runner\_log\_files) | (optional) Replaces the module default cloudwatch log config. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html for details. |
list(object({
log_group_name = string
prefix_log_group = bool
file_path = string
log_stream_name = string
}))
| `null` | no | | [runner\_metadata\_options](#input\_runner\_metadata\_options) | Metadata options for the ec2 runner instances. By default, the module uses metadata tags for bootstrapping the runner, only disable `instance_metadata_tags` when using custom scripts for starting the runner. | `map(any)` |
{
"http_endpoint": "enabled",
"http_put_response_hop_limit": 1,
"http_tokens": "optional",
"instance_metadata_tags": "enabled"
}
| no | -| [runner\_name\_prefix](#input\_runner\_name\_prefix) | The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:RunnerNamePrefix'. | `string` | `""` | no | +| [runner\_name\_prefix](#input\_runner\_name\_prefix) | The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:runner\_name\_prefix'. | `string` | `""` | no | | [runner\_os](#input\_runner\_os) | The EC2 Operating System type to use for action runner instances (linux,windows). | `string` | `"linux"` | no | | [runner\_run\_as](#input\_runner\_run\_as) | Run the GitHub actions agent as user. | `string` | `"ec2-user"` | no | | [runners\_lambda\_s3\_key](#input\_runners\_lambda\_s3\_key) | S3 key for runners lambda function. Required if using S3 bucket to specify lambdas. | `string` | `null` | no | diff --git a/modules/runners/README.md b/modules/runners/README.md index 5db863cd92..5f972c0406 100644 --- a/modules/runners/README.md +++ b/modules/runners/README.md @@ -184,7 +184,7 @@ yarn run dist | [runner\_group\_name](#input\_runner\_group\_name) | Name of the runner group. | `string` | `"Default"` | no | | [runner\_iam\_role\_managed\_policy\_arns](#input\_runner\_iam\_role\_managed\_policy\_arns) | Attach AWS or customer-managed IAM policies (by ARN) to the runner IAM role | `list(string)` | `[]` | no | | [runner\_log\_files](#input\_runner\_log\_files) | (optional) List of logfiles to send to CloudWatch, will only be used if `enable_cloudwatch_agent` is set to true. Object description: `log_group_name`: Name of the log group, `prefix_log_group`: If true, the log group name will be prefixed with `/github-self-hosted-runners/`, `file_path`: path to the log file, `log_stream_name`: name of the log stream. |
list(object({
log_group_name = string
prefix_log_group = bool
file_path = string
log_stream_name = string
}))
| `null` | no | -| [runner\_name\_prefix](#input\_runner\_name\_prefix) | The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:RunnerNamePrefix'. | `string` | `""` | no | +| [runner\_name\_prefix](#input\_runner\_name\_prefix) | The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:runner\_name\_prefix'. | `string` | `""` | no | | [runner\_os](#input\_runner\_os) | The EC2 Operating System type to use for action runner instances (linux,windows). | `string` | `"linux"` | no | | [runner\_run\_as](#input\_runner\_run\_as) | Run the GitHub actions agent as user. | `string` | `"ec2-user"` | no | | [runners\_lambda\_s3\_key](#input\_runners\_lambda\_s3\_key) | S3 key for runners lambda function. Required if using S3 bucket to specify lambdas. | `string` | `null` | no | diff --git a/modules/runners/lambdas/runners/src/aws/runners.test.ts b/modules/runners/lambdas/runners/src/aws/runners.test.ts index f77fdf025a..895ac24bff 100644 --- a/modules/runners/lambdas/runners/src/aws/runners.test.ts +++ b/modules/runners/lambdas/runners/src/aws/runners.test.ts @@ -16,7 +16,7 @@ const ORG_NAME = 'SomeAwesomeCoder'; const REPO_NAME = `${ORG_NAME}/some-amazing-library`; const ENVIRONMENT = 'unit-test-environment'; const SSM_TOKEN_PATH = '/github-action-runners/default/runners/tokens'; -const RUNNER_NAME_PREFIX = 'unit-test'; +const RUNNER_NAME_PREFIX = ''; const mockDescribeInstances = { promise: jest.fn() }; mockEC2.describeInstances.mockImplementation(() => mockDescribeInstances); @@ -29,8 +29,8 @@ const mockRunningInstances: AWS.EC2.DescribeInstancesResult = { InstanceId: 'i-1234', Tags: [ { Key: 'ghr:Application', Value: 'github-action-runner' }, - { Key: 'ghr:RunnerNamePrefix', Value: RUNNER_NAME_PREFIX }, - { Key: 'ghr:CreatedBy', Value: 'scale-up-lambda' }, + { Key: 'ghr:runner_name_prefix', Value: RUNNER_NAME_PREFIX }, + { Key: 'ghr:created_by', Value: 'scale-up-lambda' }, { Key: 'Type', Value: 'Org' }, { Key: 'Owner', Value: 'CoderToCat' }, ], @@ -527,8 +527,7 @@ function expectedCreateFleetRequest(expectedValues: ExpectedFleetRequestValues): ResourceType: 'instance', Tags: [ { Key: 'ghr:Application', Value: 'github-action-runner' }, - { Key: 'ghr:RunnerNamePrefix', Value: RUNNER_NAME_PREFIX }, - { Key: 'ghr:CreatedBy', Value: expectedValues.totalTargetCapacity > 1 ? 'pool-lambda' : 'scale-up-lambda' }, + { Key: 'ghr:created_by', Value: expectedValues.totalTargetCapacity > 1 ? 'pool-lambda' : 'scale-up-lambda' }, { Key: 'Type', Value: expectedValues.type }, { Key: 'Owner', Value: REPO_NAME }, ], diff --git a/modules/runners/lambdas/runners/src/aws/runners.ts b/modules/runners/lambdas/runners/src/aws/runners.ts index 607485fd39..bb6240aa6b 100644 --- a/modules/runners/lambdas/runners/src/aws/runners.ts +++ b/modules/runners/lambdas/runners/src/aws/runners.ts @@ -215,9 +215,7 @@ export async function createRunner(runnerParameters: RunnerInputParameters): Pro ResourceType: 'instance', Tags: [ { Key: 'ghr:Application', Value: 'github-action-runner' }, - // eslint-disable-next-line max-len - { Key: 'ghr:RunnerNamePrefix', Value: runnerParameters.runnerNamePrefix }, - { Key: 'ghr:CreatedBy', Value: numberOfRunners === 1 ? 'scale-up-lambda' : 'pool-lambda' }, + { Key: 'ghr:created_by', Value: numberOfRunners === 1 ? 'scale-up-lambda' : 'pool-lambda' }, { Key: 'Type', Value: runnerParameters.runnerType }, { Key: 'Owner', Value: runnerParameters.runnerOwner }, ], diff --git a/modules/runners/main.tf b/modules/runners/main.tf index c8b08f66ae..d94fc4329b 100644 --- a/modules/runners/main.tf +++ b/modules/runners/main.tf @@ -6,6 +6,9 @@ locals { { "ghr:ssm_config_path" = "${var.ssm_paths.root}/${var.ssm_paths.config}" }, + { + "ghr:runner_name_prefix" = var.runner_name_prefix + }, var.tags, ) diff --git a/modules/runners/templates/start-runner.ps1 b/modules/runners/templates/start-runner.ps1 index 8e15e37b4a..85e9957fef 100644 --- a/modules/runners/templates/start-runner.ps1 +++ b/modules/runners/templates/start-runner.ps1 @@ -20,8 +20,8 @@ Write-Host "Retrieved tags from AWS API" $environment=$tags.Tags.where( {$_.Key -eq 'ghr:environment'}).value Write-Host "Reteieved ghr:environment tag - ($environment)" -$runner_name_prefix=$tags.Tags.where( {$_.Key -eq 'ghr:RunnerNamePrefix'}).value -Write-Host "Reteieved ghr:RunnerNamePrefix tag - ($runner_name_prefix)" +$runner_name_prefix=$tags.Tags.where( {$_.Key -eq 'ghr:runner_name_prefix'}).value +Write-Host "Reteieved ghr:runner_name_prefix tag - ($runner_name_prefix)" $ssm_config_path=$tags.Tags.where( {$_.Key -eq 'ghr:ssm_config_path'}).value Write-Host "Retrieved ghr:ssm_config_path tag - ($ssm_config_path)" diff --git a/modules/runners/templates/start-runner.sh b/modules/runners/templates/start-runner.sh index 52bb69daa2..be4f9e2305 100644 --- a/modules/runners/templates/start-runner.sh +++ b/modules/runners/templates/start-runner.sh @@ -19,8 +19,8 @@ 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)" -runner_name_prefix=$(curl -f -H "X-aws-ec2-metadata-token: $token" -v http://169.254.169.254/latest/meta-data/tags/instance/ghr:RunnerNamePrefix) || true -echo "Retrieved ghr:RunnerNamePrefix tag - ($runner_name_prefix)" +runner_name_prefix=$(curl -f -H "X-aws-ec2-metadata-token: $token" -v http://169.254.169.254/latest/meta-data/tags/instance/ghr:runner_name_prefix) || true +echo "Retrieved ghr:runner_name_prefix tag - ($runner_name_prefix)" 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)" diff --git a/modules/runners/variables.tf b/modules/runners/variables.tf index fbdf839f27..9a30ba6290 100644 --- a/modules/runners/variables.tf +++ b/modules/runners/variables.tf @@ -584,7 +584,7 @@ variable "ssm_paths" { } variable "runner_name_prefix" { - description = "The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:RunnerNamePrefix'." + description = "The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:runner_name_prefix'." type = string default = "" validation { diff --git a/variables.tf b/variables.tf index df5a4704af..8b876d712e 100644 --- a/variables.tf +++ b/variables.tf @@ -755,7 +755,7 @@ variable "ssm_paths" { } variable "runner_name_prefix" { - description = "The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:RunnerNamePrefix'." + description = "The prefix used for the GitHub runner name. The prefix will be used in the default start script to prefix the instance name when register the runner in GitHub. The value is availabe via an EC2 tag 'ghr:runner_name_prefix'." type = string default = "" validation {