Skip to content

Commit 2a07466

Browse files
radimsuckrnpalm
andauthored
feat: support for settings Sentry DSN (#352)
Co-authored-by: Niek Palm <[email protected]>
1 parent 845e018 commit 2a07466

File tree

5 files changed

+40
-1
lines changed

5 files changed

+40
-1
lines changed

locals.tf

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ locals {
99
runners_max_builds_string = var.runners_max_builds == 0 ? "" : format("MaxBuilds = %d", var.runners_max_builds)
1010

1111
// Define key for runner token for SSM
12-
secure_parameter_store_runner_token_key = "${var.environment}-${var.secure_parameter_store_runner_token_key}"
12+
secure_parameter_store_runner_token_key = "${var.environment}-${var.secure_parameter_store_runner_token_key}"
13+
secure_parameter_store_runner_sentry_dsn = "${var.environment}-${var.secure_parameter_store_runner_sentry_dsn}"
1314

1415
// custom names for instances and security groups
1516
name_runner_agent_instance = var.overrides["name_runner_agent_instance"] == "" ? local.tags["Name"] : var.overrides["name_runner_agent_instance"]

main.tf

+15
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ resource "null_resource" "remove_runner" {
3737
}
3838
}
3939

40+
resource "aws_ssm_parameter" "runner_sentry_dsn" {
41+
name = local.secure_parameter_store_runner_sentry_dsn
42+
type = "SecureString"
43+
value = "null"
44+
45+
tags = local.tags
46+
47+
lifecycle {
48+
ignore_changes = [value]
49+
}
50+
}
51+
4052
locals {
4153
enable_asg_recreation = var.enable_forced_updates != null ? ! var.enable_forced_updates : var.enable_asg_recreation
4254

@@ -65,6 +77,7 @@ locals {
6577
runners_gitlab_url = var.runners_gitlab_url
6678
runners_token = var.runners_token
6779
secure_parameter_store_runner_token_key = local.secure_parameter_store_runner_token_key
80+
secure_parameter_store_runner_sentry_dsn = local.secure_parameter_store_runner_sentry_dsn
6881
secure_parameter_store_region = var.aws_region
6982
gitlab_runner_registration_token = var.gitlab_runner_registration_config["registration_token"]
7083
giltab_runner_description = var.gitlab_runner_registration_config["description"]
@@ -73,6 +86,7 @@ locals {
7386
gitlab_runner_run_untagged = var.gitlab_runner_registration_config["run_untagged"]
7487
gitlab_runner_maximum_timeout = var.gitlab_runner_registration_config["maximum_timeout"]
7588
gitlab_runner_access_level = lookup(var.gitlab_runner_registration_config, "access_level", "not_protected")
89+
sentry_dsn = var.sentry_dsn
7690
})
7791

7892
template_runner_config = templatefile("${path.module}/template/runner-config.tpl",
@@ -137,6 +151,7 @@ locals {
137151
runners_services_volumes_tmpfs = join(",", [for v in var.runners_services_volumes_tmpfs : format("\"%s\" = \"%s\"", v.volume, v.options)])
138152
bucket_name = local.bucket_name
139153
shared_cache = var.cache_shared
154+
sentry_dsn = var.sentry_dsn
140155
}
141156
)
142157
}

template/gitlab-runner.tpl

+10
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,16 @@ fi
7575

7676
sed -i.bak s/__REPLACED_BY_USER_DATA__/`echo $token`/g /etc/gitlab-runner/config.toml
7777

78+
ssm_sentry_dsn=$(aws ssm get-parameters --names "${secure_parameter_store_runner_sentry_dsn}" --with-decryption --region "${secure_parameter_store_region}" | jq -r ".Parameters | .[0] | .Value")
79+
if [[ `echo ${sentry_dsn}` == "__SENTRY_DSN_REPLACED_BY_USER_DATA__" && `echo $ssm_sentry_dsn` == "null" ]]
80+
then
81+
ssm_sentry_dsn=""
82+
fi
83+
84+
# For those of you wondering why commas are used in the sed below instead of forward slashes, see https://stackoverflow.com/a/16778711/13169919
85+
# It is because the Sentry DSN contains forward slashes as it is an URL so it would break out of the sed command with forward slashes as delimiters :)
86+
sed -i.bak s,__SENTRY_DSN_REPLACED_BY_USER_DATA__,`echo $ssm_sentry_dsn`,g /etc/gitlab-runner/config.toml
87+
7888
# A small script to remove this runner from being registered with Gitlab.
7989
cat <<REM > /etc/rc.d/init.d/remove_gitlab_registration
8090
#!/bin/bash

template/runner-config.tpl

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
concurrent = ${runners_concurrent}
22
check_interval = 0
3+
sentry_dsn = "${sentry_dsn}"
34

45
[[runners]]
56
name = "${runners_name}"

variables.tf

+12
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,12 @@ variable "secure_parameter_store_runner_token_key" {
549549
default = "runner-token"
550550
}
551551

552+
variable "secure_parameter_store_runner_sentry_dsn" {
553+
description = "The Sentry DSN name used to store the Sentry DSN in Secure Parameter Store"
554+
type = string
555+
default = "sentry-dsn"
556+
}
557+
552558
variable "enable_manage_gitlab_token" {
553559
description = "Boolean to enable the management of the GitLab token in SSM. If `true` the token will be stored in SSM, which means the SSM property is a terraform managed resource. If `false` the Gitlab token will be stored in the SSM by the user-data script during creation of the the instance. However the SSM parameter is not managed by terraform and will remain in SSM after a `terraform destroy`."
554560
type = bool
@@ -706,6 +712,12 @@ variable "docker_machine_iam_policy_arns" {
706712
default = []
707713
}
708714

715+
variable "sentry_dsn" {
716+
default = "__SENTRY_DSN_REPLACED_BY_USER_DATA__"
717+
description = "Sentry DSN of the project for the runner to use (uses legacy DSN format)"
718+
type = string
719+
}
720+
709721
variable "docker_machine_egress_rules" {
710722
description = "List of egress rules for the docker-machine instance(s)."
711723
type = list(object({

0 commit comments

Comments
 (0)