Skip to content

Commit 1373250

Browse files
author
Liora Milbaum
committed
feat: shell is also a supported executor
1 parent d3e3b1f commit 1373250

File tree

3 files changed

+119
-121
lines changed

3 files changed

+119
-121
lines changed

locals.tf

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,122 @@ locals {
9292
]
9393

9494
docker_machine_adds_name_tag = signum(sum(local.docker_machine_version_test)) <= 0
95+
96+
template_user_data = templatefile("${path.module}/template/user-data.tftpl",
97+
{
98+
eip = var.runner_instance.use_eip ? local.template_eip : ""
99+
logging = var.runner_cloudwatch.enable ? local.logging_user_data : ""
100+
gitlab_runner = local.template_gitlab_runner
101+
user_data_trace_log = var.debug.trace_runner_user_data
102+
yum_update = var.runner_install.yum_update ? local.file_yum_update : ""
103+
extra_config = var.runner_install.start_script
104+
})
105+
106+
file_yum_update = file("${path.module}/template/yum_update.tftpl")
107+
108+
template_eip = templatefile("${path.module}/template/eip.tftpl", {
109+
eip = join(",", [for eip in aws_eip.gitlab_runner : eip.public_ip])
110+
})
111+
112+
template_gitlab_runner = templatefile("${path.module}/template/gitlab-runner.tftpl",
113+
{
114+
gitlab_runner_version = var.runner_gitlab.runner_version
115+
docker_machine_version = var.runner_install.docker_machine_version
116+
docker_machine_download_url = var.runner_install.docker_machine_download_url
117+
runners_config = local.template_runner_config
118+
runners_userdata = var.runner_worker_docker_machine_instance.start_script
119+
runners_executor = var.runner_worker.type
120+
runners_install_amazon_ecr_credential_helper = var.runner_install.amazon_ecr_credential_helper
121+
curl_cacert = length(var.runner_gitlab.certificate) > 0 ? "--cacert /etc/gitlab-runner/certs/gitlab.crt" : ""
122+
pre_install_certificates = local.pre_install_certificates
123+
pre_install = var.runner_install.pre_install_script
124+
post_install = var.runner_install.post_install_script
125+
runners_gitlab_url = var.runner_gitlab.url
126+
runners_token = var.runner_gitlab.registration_token
127+
secure_parameter_store_gitlab_runner_registration_token_name = var.runner_gitlab_registration_token_secure_parameter_store_name
128+
secure_parameter_store_runner_token_key = local.secure_parameter_store_runner_token_key
129+
secure_parameter_store_runner_sentry_dsn = local.secure_parameter_store_runner_sentry_dsn
130+
secure_parameter_store_gitlab_token_name = var.runner_gitlab.access_token_secure_parameter_store_name
131+
secure_parameter_store_region = data.aws_region.current.name
132+
gitlab_runner_registration_token = var.runner_gitlab_registration_config.registration_token
133+
gitlab_runner_description = var.runner_gitlab_registration_config["description"]
134+
gitlab_runner_tag_list = var.runner_gitlab_registration_config["tag_list"]
135+
gitlab_runner_locked_to_project = var.runner_gitlab_registration_config["locked_to_project"]
136+
gitlab_runner_run_untagged = var.runner_gitlab_registration_config["run_untagged"]
137+
gitlab_runner_maximum_timeout = var.runner_gitlab_registration_config["maximum_timeout"]
138+
gitlab_runner_type = var.runner_gitlab_registration_config["type"]
139+
gitlab_runner_group_id = var.runner_gitlab_registration_config["group_id"]
140+
gitlab_runner_project_id = var.runner_gitlab_registration_config["project_id"]
141+
gitlab_runner_access_level = var.runner_gitlab_registration_config.access_level
142+
sentry_dsn = var.runner_manager.sentry_dsn
143+
public_key = var.runner_worker_docker_machine_fleet.enable == true ? tls_private_key.fleet[0].public_key_openssh : ""
144+
use_fleet = var.runner_worker_docker_machine_fleet.enable
145+
private_key = var.runner_worker_docker_machine_fleet.enable == true ? tls_private_key.fleet[0].private_key_pem : ""
146+
use_new_runner_authentication_gitlab_16 = var.runner_gitlab_registration_config.type != ""
147+
})
148+
149+
template_runner_config = templatefile("${path.module}/template/runner-config.tftpl",
150+
{
151+
aws_region = data.aws_region.current.name
152+
gitlab_url = var.runner_gitlab.url
153+
gitlab_clone_url = var.runner_gitlab.url_clone
154+
tls_ca_file = length(var.runner_gitlab.certificate) > 0 ? "tls-ca-file=\"/etc/gitlab-runner/certs/gitlab.crt\"" : ""
155+
runners_machine_autoscaling = [for config in var.runner_worker_docker_machine_autoscaling_options : {
156+
for key, value in config :
157+
# Convert key from snake_case to PascalCase which is the casing for this section.
158+
join("", [for subkey in split("_", key) : title(subkey)]) => jsonencode(value) if value != null
159+
}]
160+
runners_vpc_id = var.vpc_id
161+
runners_subnet_id = var.subnet_id
162+
runners_subnet_ids = length(var.runner_worker_docker_machine_instance.subnet_ids) > 0 ? var.runner_worker_docker_machine_instance.subnet_ids : [var.subnet_id]
163+
runners_aws_zone = data.aws_availability_zone.runners.name_suffix
164+
runners_instance_types = var.runner_worker_docker_machine_instance.types
165+
runners_spot_price_bid = var.runner_worker_docker_machine_instance_spot.max_price == "on-demand-price" || var.runner_worker_docker_machine_instance_spot.max_price == null ? "" : var.runner_worker_docker_machine_instance_spot.max_price
166+
runners_ami = var.runner_worker.type == "docker+machine" ? data.aws_ami.docker-machine[0].id : ""
167+
runners_security_group_name = var.runner_worker.type == "docker+machine" ? aws_security_group.docker_machine[0].name : ""
168+
runners_max_growth_rate = var.runner_worker_docker_machine_instance.max_growth_rate
169+
runners_monitoring = var.runner_worker_docker_machine_instance.monitoring
170+
runners_ebs_optimized = var.runner_worker_docker_machine_instance.ebs_optimized
171+
runners_instance_profile = var.runner_worker.type == "docker+machine" ? aws_iam_instance_profile.docker_machine[0].name : ""
172+
docker_machine_options = length(local.docker_machine_options_string) == 1 ? "" : local.docker_machine_options_string
173+
docker_machine_name = format("%s-%s", local.runner_tags_merged["Name"], "%s") # %s is always needed
174+
runners_name = var.runner_instance.name
175+
runners_tags = replace(replace(local.runner_tags_string, ",,", ","), "/,$/", "")
176+
runners_token = var.runner_gitlab.registration_token
177+
runners_userdata = var.runner_worker_docker_machine_instance.start_script
178+
runners_executor = var.runner_worker.type
179+
runners_limit = var.runner_worker.max_jobs
180+
runners_concurrent = var.runner_manager.maximum_concurrent_jobs
181+
runners_pull_policies = local.runners_pull_policies
182+
runners_idle_count = var.runner_worker_docker_machine_instance.idle_count
183+
runners_idle_time = var.runner_worker_docker_machine_instance.idle_time
184+
runners_max_builds = local.runners_max_builds_string
185+
runners_root_size = var.runner_worker_docker_machine_instance.root_size
186+
runners_volume_type = var.runner_worker_docker_machine_instance.volume_type
187+
runners_iam_instance_profile_name = var.runner_worker_docker_machine_role.profile_name
188+
runners_use_private_address_only = var.runner_worker_docker_machine_instance.private_address_only
189+
runners_use_private_address = !var.runner_worker_docker_machine_instance.private_address_only
190+
runners_request_spot_instance = var.runner_worker_docker_machine_instance_spot.enable
191+
runners_environment_vars = jsonencode(var.runner_worker.environment_variables)
192+
runners_pre_build_script = var.runner_worker_gitlab_pipeline.pre_build_script
193+
runners_post_build_script = var.runner_worker_gitlab_pipeline.post_build_script
194+
runners_pre_clone_script = var.runner_worker_gitlab_pipeline.pre_clone_script
195+
runners_request_concurrency = var.runner_worker.request_concurrency
196+
runners_output_limit = var.runner_worker.output_limit
197+
runners_check_interval = var.runner_manager.gitlab_check_interval
198+
runners_volumes_tmpfs = join("\n", [for v in var.runner_worker_docker_volumes_tmpfs : format("\"%s\" = \"%s\"", v.volume, v.options)])
199+
runners_services_volumes_tmpfs = join("\n", [for v in var.runner_worker_docker_services_volumes_tmpfs : format("\"%s\" = \"%s\"", v.volume, v.options)])
200+
runners_docker_services = local.runners_docker_services
201+
runners_docker_options = local.runners_docker_options_toml
202+
bucket_name = local.bucket_name
203+
shared_cache = var.runner_worker_cache.shared
204+
sentry_dsn = var.runner_manager.sentry_dsn
205+
prometheus_listen_address = var.runner_manager.prometheus_listen_address
206+
auth_type = var.runner_worker_cache.authentication_type
207+
use_fleet = var.runner_worker_docker_machine_fleet.enable
208+
launch_template = var.runner_worker_docker_machine_fleet.enable == true ? aws_launch_template.fleet_gitlab_runner[0].name : ""
209+
}
210+
)
95211
}
96212

97213
resource "local_file" "config_toml" {

0 commit comments

Comments
 (0)