Skip to content

Commit 1a2633e

Browse files
committed
fix variables
1 parent 7292070 commit 1a2633e

File tree

3 files changed

+78
-17
lines changed

3 files changed

+78
-17
lines changed

main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ module "runner" {
110110
docker_machine_ami_id = data.aws_ami.docker_machine_by_filter[0].id
111111
docker_machine_fleet_launch_template_name = var.runner_worker_docker_machine_fleet.enable == true ? aws_launch_template.fleet_gitlab_runner[0].name : ""
112112
docker_machine_tags = local.runner_tags_merged
113+
docker_machine_instance = var.runner_worker_docker_machine_instance
113114
}
114115

115116
# ignores: Autoscaling Groups Supply Tags --> we use a "dynamic" block to create the tags

modules/runner-config/locals.tf

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
locals {
1+
locals {
22
template_runner_worker_config = templatefile("${path.module}/template/runner-worker-config.tftpl",
33
{
44
aws_region = data.aws_region.current.name
@@ -57,37 +57,37 @@ locals {
5757

5858
template_runner_docker_machine = templatefile("${path.module}/template/runner-docker-machine-config.tftpl",
5959
{
60-
runners_idle_count = var.runner_worker_docker_machine_instance.idle_count
61-
runners_idle_time = var.runner_worker_docker_machine_instance.idle_time
60+
runners_idle_count = var.docker_machine_instance.idle_count
61+
runners_idle_time = var.docker_machine_instance.idle_time
6262
runners_max_builds = local.runners_max_builds_string
6363
docker_machine_name = format("%s-%s", var.docker_machine_runner_name, "%s") # the last %s is always needed
64-
runners_instance_types = var.runner_worker_docker_machine_instance.types
64+
runners_instance_types = var.docker_machine_instance.types
6565
aws_region = data.aws_region.current.name
6666
runners_aws_zone = var.docker_machine_availability_zone_name
67-
runners_userdata = var.runner_worker_docker_machine_instance.start_script
67+
runners_userdata = var.docker_machine_instance.start_script
6868

6969
runners_vpc_id = var.vpc_id
7070
runners_subnet_id = var.subnet_id
71-
runners_subnet_ids = length(var.runner_worker_docker_machine_instance.subnet_ids) > 0 ? var.runner_worker_docker_machine_instance.subnet_ids : [var.subnet_id]
71+
runners_subnet_ids = length(var.docker_machine_instance.subnet_ids) > 0 ? var.runner_worker_docker_machine_instance.subnet_ids : [var.subnet_id]
7272
runners_instance_profile = var.docker_machine_availability_zone_name
7373

74-
runners_use_private_address_only = var.runner_worker_docker_machine_instance.private_address_only
75-
runners_use_private_address = !var.runner_worker_docker_machine_instance.private_address_only
76-
runners_request_spot_instance = var.runner_worker_docker_machine_instance_spot.enable
77-
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
74+
runners_use_private_address_only = var.docker_machine_instance.private_address_only
75+
runners_use_private_address = !var.docker_machine_instance.private_address_only
76+
runners_request_spot_instance = var.docker_machine_instance_spot.enable
77+
runners_spot_price_bid = var.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
7878
runners_security_group_name = var.docker_machine_security_group_name
7979

8080
runners_tags = replace(replace(local.runner_tags_string, ",,", ","), "/,$/", "")
81-
runners_ebs_optimized = var.runner_worker_docker_machine_instance.ebs_optimized
82-
runners_monitoring = var.runner_worker_docker_machine_instance.monitoring
83-
runners_iam_instance_profile_name = var.runner_worker_docker_machine_role.profile_name
84-
runners_root_size = var.runner_worker_docker_machine_instance.root_size
85-
runners_volume_type = var.runner_worker_docker_machine_instance.volume_type
81+
runners_ebs_optimized = var.docker_machine_instance.ebs_optimized
82+
runners_monitoring = var.docker_machine_instance.monitoring
83+
runners_iam_instance_profile_name = var.docker_machine_role.profile_name
84+
runners_root_size = var.docker_machine_instance.root_size
85+
runners_volume_type = var.docker_machine_instance.volume_type
8686
runners_ami = var.runner_worker.type == "docker+machine" ? (length(var.runner_worker_docker_machine_ami_id) > 0 ? var.runner_worker_docker_machine_ami_id : var.docker_machine_ami_id) : ""
87-
use_fleet = var.runner_worker_docker_machine_fleet.enable
87+
use_fleet = var.docker_machine_fleet.enable
8888
launch_template = var.docker_machine_fleet_launch_template_name
8989
docker_machine_options = length(local.docker_machine_options_string) == 1 ? "" : local.docker_machine_options_string
90-
runners_max_growth_rate = var.runner_worker_docker_machine_instance.max_growth_rate
90+
runners_max_growth_rate = var.docker_machine_instance.max_growth_rate
9191
runners_volume_kms_key = var.kms_key_arn
9292
})
9393

modules/runner-config/variables.tf

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,63 @@ variable "kms_key_arn" {
4747
description = "The ARN of the KMS key to use for encrypting everything."
4848
type = string
4949
}
50+
51+
variable "docker_machine_instance" {
52+
description = <<-EOT
53+
For detailed documentation check https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnersmachine-section
54+
55+
docker_registry_mirror_url = The URL of the Docker registry mirror to use for the Runner Worker.
56+
destroy_after_max_builds = Destroy the instance after the maximum number of builds has been reached.
57+
ebs_optimized = Enable EBS optimization for the Runner Worker.
58+
idle_count = Number of idle Runner Worker instances (not working for the Docker Runner Worker) (IdleCount).
59+
idle_time = Idle time of the Runner Worker before they are destroyed (not working for the Docker Runner Worker) (IdleTime).
60+
max_growth_rate = The maximum number of machines that can be added to the runner in parallel.
61+
monitoring = Enable detailed monitoring for the Runner Worker.
62+
name_prefix = Set the name prefix and override the `Name` tag for the Runner Worker.
63+
private_address_only = Restrict Runner Worker to the use of a private IP address. If `runner_instance.use_private_address_only` is set to `true` (default), `runner_worker_docker_machine_instance.private_address_only` will also apply for the Runner.
64+
root_device_name = The name of the root volume for the Runner Worker.
65+
root_size = The size of the root volume for the Runner Worker.
66+
start_script = Cloud-init user data that will be passed to the Runner Worker. Should not be base64 encrypted.
67+
subnet_ids = The list of subnet IDs to use for the Runner Worker when the fleet mode is enabled.
68+
types = The type of instance to use for the Runner Worker. In case of fleet mode, multiple instance types are supported.
69+
volume_type = The type of volume to use for the Runner Worker. `gp2`, `gp3`, `io1` or `io2` are supported.
70+
volume_throughput = Throughput in MB/s for the volume. Only supported when using `gp3` as `volume_type`.
71+
volume_iops = Guaranteed IOPS for the volume. Only supported when using `gp3`, `io1` or `io2` as `volume_type`. Works for fleeting only. See `runner_worker_docker_machine_fleet`.
72+
EOT
73+
type = object({
74+
destroy_after_max_builds = optional(number, 0)
75+
docker_registry_mirror_url = optional(string, "")
76+
ebs_optimized = optional(bool, true)
77+
idle_count = optional(number, 0)
78+
idle_time = optional(number, 600)
79+
max_growth_rate = optional(number, 0)
80+
monitoring = optional(bool, false)
81+
name_prefix = optional(string, "")
82+
private_address_only = optional(bool, true)
83+
root_device_name = optional(string, "/dev/sda1")
84+
root_size = optional(number, 8)
85+
start_script = optional(string, "")
86+
subnet_ids = optional(list(string), [])
87+
types = optional(list(string), ["m5.large"])
88+
volume_type = optional(string, "gp2")
89+
volume_throughput = optional(number, 125)
90+
volume_iops = optional(number, 3000)
91+
})
92+
default = {
93+
}
94+
95+
validation {
96+
condition = length(var.docker_machine_instance.name_prefix) <= 28
97+
error_message = "Maximum length for docker+machine executor name is 28 characters!"
98+
}
99+
100+
validation {
101+
condition = var.docker_machine_instance.name_prefix == "" || can(regex("^[a-zA-Z0-9\\.-]+$", var.docker_machine_instance.name_prefix))
102+
error_message = "Valid characters for the docker+machine executor name are: [a-zA-Z0-9\\.-]."
103+
}
104+
105+
validation {
106+
condition = contains(["gp2", "gp3", "io1", "io2"], var.docker_machine_instance.volume_type)
107+
error_message = "Supported volume types: gp2, gp3, io1 and io2"
108+
}
109+
}

0 commit comments

Comments
 (0)