Skip to content

Commit 7292070

Browse files
committed
fix variables
1 parent 5d00f61 commit 7292070

File tree

8 files changed

+209
-142
lines changed

8 files changed

+209
-142
lines changed

docker_machine.tf

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,3 @@
1-
locals {
2-
template_runner_docker_machine = templatefile("${path.module}/template/runner-docker-machine-config.tftpl",
3-
{
4-
runners_idle_count = var.runner_worker_docker_machine_instance.idle_count
5-
runners_idle_time = var.runner_worker_docker_machine_instance.idle_time
6-
runners_max_builds = local.runners_max_builds_string
7-
docker_machine_name = format("%s-%s", local.runner_tags_merged["Name"], "%s") # %s is always needed
8-
runners_instance_types = var.runner_worker_docker_machine_instance.types
9-
aws_region = data.aws_region.current.name
10-
runners_aws_zone = data.aws_availability_zone.runners.name_suffix
11-
runners_userdata = var.runner_worker_docker_machine_instance.start_script
12-
13-
runners_vpc_id = var.vpc_id
14-
runners_subnet_id = var.subnet_id
15-
runners_subnet_ids = length(var.runner_worker_docker_machine_instance.subnet_ids) > 0 ? var.runner_worker_docker_machine_instance.subnet_ids : [var.subnet_id]
16-
runners_instance_profile = var.runner_worker.type == "docker+machine" ? aws_iam_instance_profile.docker_machine[0].name : ""
17-
18-
runners_use_private_address_only = var.runner_worker_docker_machine_instance.private_address_only
19-
runners_use_private_address = !var.runner_worker_docker_machine_instance.private_address_only
20-
runners_request_spot_instance = var.runner_worker_docker_machine_instance_spot.enable
21-
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
22-
runners_security_group_name = var.runner_worker.type == "docker+machine" ? aws_security_group.docker_machine[0].name : ""
23-
24-
runners_tags = replace(replace(local.runner_tags_string, ",,", ","), "/,$/", "")
25-
runners_ebs_optimized = var.runner_worker_docker_machine_instance.ebs_optimized
26-
runners_monitoring = var.runner_worker_docker_machine_instance.monitoring
27-
runners_iam_instance_profile_name = var.runner_worker_docker_machine_role.profile_name
28-
runners_root_size = var.runner_worker_docker_machine_instance.root_size
29-
runners_volume_type = var.runner_worker_docker_machine_instance.volume_type
30-
runners_ami = var.runner_worker.type == "docker+machine" ? (length(var.runner_worker_docker_machine_ami_id) > 0 ? var.runner_worker_docker_machine_ami_id : data.aws_ami.docker_machine_by_filter[0].id) : ""
31-
use_fleet = var.runner_worker_docker_machine_fleet.enable
32-
launch_template = var.runner_worker_docker_machine_fleet.enable == true ? aws_launch_template.fleet_gitlab_runner[0].name : ""
33-
docker_machine_options = length(local.docker_machine_options_string) == 1 ? "" : local.docker_machine_options_string
34-
runners_max_growth_rate = var.runner_worker_docker_machine_instance.max_growth_rate
35-
runners_volume_kms_key = local.kms_key_arn
36-
})
37-
}
38-
391
resource "aws_iam_instance_profile" "docker_machine" {
402
count = var.runner_worker.type == "docker+machine" ? 1 : 0
413
name = "${local.name_iam_objects}-docker-machine"

locals.tf

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,7 @@ locals {
4444
)
4545
aws_iam_role_instance_arn = "arn:${data.aws_partition.current.partition}:iam::${data.aws_caller_identity.current.account_id}:role/${local.aws_iam_role_instance_name}"
4646

47-
# Convert list to a string separated and prepend by a comma
48-
docker_machine_options_string = format(
49-
",\"amazonec2-metadata-token=${var.runner_worker_docker_machine_ec2_metadata_options.http_tokens}\", \"amazonec2-metadata-token-response-hop-limit=${var.runner_worker_docker_machine_ec2_metadata_options.http_put_response_hop_limit}\",%s",
50-
join(",", formatlist("%q", concat(var.runner_worker_docker_machine_ec2_options, local.runners_docker_registry_mirror_option))),
51-
)
52-
53-
runners_docker_registry_mirror_option = var.runner_worker_docker_machine_instance.docker_registry_mirror_url == "" ? [] : ["engine-registry-mirror=${var.runner_worker_docker_machine_instance.docker_registry_mirror_url}"]
54-
55-
runners_docker_options_toml = templatefile("${path.module}/template/runners_docker_options.tftpl", {
56-
options = merge({
57-
for key, value in var.runner_worker_docker_options : key => value if value != null && key != "volumes" && key != "pull_policies"
58-
}, {
59-
pull_policy = var.runner_worker_docker_options.pull_policies
60-
volumes = local.runners_volumes
61-
})
62-
}
63-
)
64-
65-
# Ensure max builds is optional
66-
runners_max_builds_string = var.runner_worker_docker_machine_instance.destroy_after_max_builds == 0 ? "" : format("MaxBuilds = %d", var.runner_worker_docker_machine_instance.destroy_after_max_builds)
67-
68-
# Define key for runner token for SSM
47+
# Define key for runner token for SSM
6948
secure_parameter_store_runner_token_key = "${var.environment}-${var.runner_gitlab_token_secure_parameter_store}"
7049
secure_parameter_store_runner_sentry_dsn = "${var.environment}-${var.runner_sentry_secure_parameter_store_name}"
7150

@@ -74,24 +53,6 @@ locals {
7453
name_sg = var.security_group_prefix == "" ? local.tags["Name"] : var.security_group_prefix
7554
name_iam_objects = var.iam_object_prefix == "" ? local.tags["Name"] : var.iam_object_prefix
7655

77-
runners_volumes = concat(var.runner_worker_docker_options.volumes, var.runner_worker_docker_add_dind_volumes ? ["/certs/client", "/builds", "/var/run/docker.sock:/var/run/docker.sock"] : [])
78-
79-
runners_docker_services = templatefile("${path.module}/template/runners_docker_services.tftpl", {
80-
runners_docker_services = var.runner_worker_docker_services
81-
}
82-
)
83-
84-
/* determines if the docker machine executable adds the Name tag automatically (versions >= 0.16.2) */
85-
# make sure to skip pre-release stuff in the semver by ignoring everything after "-"
86-
docker_machine_version_used = split(".", split("-", var.runner_install.docker_machine_version)[0])
87-
docker_machine_version_with_name_tag = split(".", "0.16.2")
88-
docker_machine_version_test = [
89-
for i, j in reverse(range(length(local.docker_machine_version_used)))
90-
: signum(local.docker_machine_version_with_name_tag[i] - local.docker_machine_version_used[i]) * pow(10, j)
91-
]
92-
93-
docker_machine_adds_name_tag = signum(sum(local.docker_machine_version_test)) <= 0
94-
9556
runner_worker_graceful_terminate_heartbeat_timeout = (var.runner_terminate_ec2_lifecycle_timeout_duration == null
9657
? min(7200, tonumber(coalesce(var.runner_gitlab_registration_config.maximum_timeout, 0)) + 300)
9758
: var.runner_terminate_ec2_lifecycle_timeout_duration)

main.tf

Lines changed: 16 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -85,74 +85,33 @@ locals {
8585
fleeting_plugin_version = var.runner_worker_docker_autoscaler.fleeting_plugin_version
8686
})
8787

88-
template_runner_docker_autoscaler = templatefile("${path.module}/template/runner-docker-autoscaler-config.tftpl",
89-
{
90-
docker_autoscaling_name = var.runner_worker.type == "docker-autoscaler" ? aws_autoscaling_group.autoscaler[0].name : ""
91-
connector_config_user = var.runner_worker_docker_autoscaler.connector_config_user
92-
runners_capacity_per_instance = var.runner_worker_docker_autoscaler.capacity_per_instance
93-
runners_max_use_count = var.runner_worker_docker_autoscaler.max_use_count
94-
runners_max_instances = var.runner_worker.max_jobs
95-
96-
runners_update_interval = var.runner_worker_docker_autoscaler.update_interval
97-
runners_update_interval_when_expecting = var.runner_worker_docker_autoscaler.update_interval_when_expecting
98-
99-
runners_instance_ready_command = var.runner_worker_docker_autoscaler.instance_ready_command
100-
101-
use_private_key = var.runner_worker.use_private_key && var.runner_worker.type == "docker-autoscaler"
102-
103-
runners_autoscaling = [for config in var.runner_worker_docker_autoscaler_autoscaling_options : {
104-
for key, value in config :
105-
# Convert key from snake_case to PascalCase which is the casing for this section.
106-
key => jsonencode(value) if value != null
107-
}]
108-
})
109-
110-
template_runner_worker_config = templatefile("${path.module}/template/runner-worker-config.tftpl",
111-
{
112-
aws_region = data.aws_region.current.name
113-
gitlab_url = var.runner_gitlab.url
114-
gitlab_clone_url = var.runner_gitlab.url_clone
115-
tls_ca_file = length(var.runner_gitlab.certificate) > 0 ? "tls-ca-file=\"/etc/gitlab-runner/certs/gitlab.crt\"" : ""
116-
runners_machine_autoscaling = [for config in var.runner_worker_docker_machine_autoscaling_options : {
117-
for key, value in config :
118-
# Convert key from snake_case to PascalCase which is the casing for this section.
119-
join("", [for subkey in split("_", key) : title(subkey)]) => jsonencode(value) if value != null
120-
}]
121-
122-
runners_name = var.runner_instance.name
123-
runners_token = var.runner_gitlab.registration_token
124-
runners_executor = var.runner_worker.type
125-
runners_limit = var.runner_worker.max_jobs
126-
runners_environment_vars = jsonencode(var.runner_worker.environment_variables)
127-
runners_pre_build_script = var.runner_worker_gitlab_pipeline.pre_build_script
128-
runners_post_build_script = var.runner_worker_gitlab_pipeline.post_build_script
129-
runners_pre_clone_script = var.runner_worker_gitlab_pipeline.pre_clone_script
130-
runners_request_concurrency = var.runner_worker.request_concurrency
131-
runners_output_limit = var.runner_worker.output_limit
132-
runners_volumes_tmpfs = join("\n", [for v in var.runner_worker_docker_volumes_tmpfs : format("\"%s\" = \"%s\"", v.volume, v.options)])
133-
runners_services_volumes_tmpfs = join("\n", [for v in var.runner_worker_docker_services_volumes_tmpfs : format("\"%s\" = \"%s\"", v.volume, v.options)])
134-
runners_docker_services = local.runners_docker_services
135-
runners_docker_options = local.runners_docker_options_toml
136-
bucket_name = local.bucket_name
137-
shared_cache = var.runner_worker_cache.shared
138-
auth_type = var.runner_worker_cache.authentication_type
139-
runners_docker_autoscaler = var.runner_worker.type == "docker-autoscaler" ? local.template_runner_docker_autoscaler : ""
140-
runners_docker_machine = var.runner_worker.type == "docker+machine" ? local.template_runner_docker_machine : ""
141-
}
142-
)
143-
14488
template_runner_config = templatefile("runner-agent.tftpl",
14589
{
14690
prometheus_listen_address = var.runner_manager.prometheus_listen_address
14791
runners_check_interval = var.runner_manager.gitlab_check_interval
14892
runners_concurrent = var.runner_manager.maximum_concurrent_jobs
14993
sentry_dsn = var.runner_manager.sentry_dsn
15094

151-
runners = [local.template_runner_worker_config]
95+
runners = [module.runner.runner_config]
15296
}
15397
)
15498
}
15599

100+
module "runner" {
101+
source = "./modules/runner-config"
102+
103+
kms_key_arn = local.kms_key_arn
104+
cache_bucket_name = local.bucket_name
105+
docker_autoscaler_asg_name = var.runner_worker.type == "docker-autoscaler" ? aws_autoscaling_group.autoscaler[0].name : ""
106+
docker_machine_runner_name = local.runner_tags_merged["Name"]
107+
docker_machine_availability_zone_name = data.aws_availability_zone.runners.name_suffix
108+
docker_machine_instance_profile_name = var.runner_worker.type == "docker+machine" ? aws_iam_instance_profile.docker_machine[0].name : ""
109+
docker_machine_security_group_name = var.runner_worker.type == "docker+machine" ? aws_security_group.docker_machine[0].name : ""
110+
docker_machine_ami_id = data.aws_ami.docker_machine_by_filter[0].id
111+
docker_machine_fleet_launch_template_name = var.runner_worker_docker_machine_fleet.enable == true ? aws_launch_template.fleet_gitlab_runner[0].name : ""
112+
docker_machine_tags = local.runner_tags_merged
113+
}
114+
156115
# ignores: Autoscaling Groups Supply Tags --> we use a "dynamic" block to create the tags
157116
# ignores: Auto Scaling Group With No Associated ELB --> that's simply not true, as the EC2 instance contacts GitLab. So no ELB needed here.
158117
# kics-scan ignore-line

0 commit comments

Comments
 (0)