@@ -127,8 +127,8 @@ locals {
127
127
runners_capacity_per_instance = 1
128
128
runners_max_use_count = var.runner_worker_docker_autoscaler.max_use_count
129
129
runners_max_instances = var.runner_worker.max_jobs
130
- runners_idle_count = var.runner_worker_docker_machine_instance .idle_count
131
- runners_idle_time = format (" %dm%ds" , floor (var. runner_worker_docker_machine_instance . idle_time / 60 ), var. runner_worker_docker_machine_instance . idle_time % 60 )
130
+ runners_idle_count = var.runner_worker_docker_autoscaler_asg .idle_count
131
+ runners_idle_time = format (" %dm%ds" , floor (var. runner_worker_docker_autoscaler_asg . idle_time / 60 ), var. runner_worker_docker_machine_instance . idle_time % 60 )
132
132
})
133
133
134
134
template_runner_config = templatefile (" ${ path . module } /template/runner-config.tftpl" ,
@@ -141,37 +141,12 @@ locals {
141
141
for key , value in config :
142
142
# Convert key from snake_case to PascalCase which is the casing for this section.
143
143
join (" " , [for subkey in split (" _" , key) : title (subkey)]) => jsonencode (value) if value != null
144
- }]
145
- runners_vpc_id = var.vpc_id
146
- runners_subnet_id = var.subnet_id
147
- runners_subnet_ids = length (var. runner_worker_docker_machine_instance . subnet_ids ) > 0 ? var.runner_worker_docker_machine_instance.subnet_ids : [var.subnet_id]
148
- runners_aws_zone = data.aws_availability_zone.runners.name_suffix
149
- runners_instance_types = var.runner_worker_docker_machine_instance.types
150
- 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
151
- runners_ami = var.runner_worker.type == " docker+machine" ? data.aws_ami.docker- machine[0 ].id : " "
152
- runners_security_group_name = var.runner_worker.type == " docker+machine" ? aws_security_group.docker_machine[0 ].name : " "
153
- runners_max_growth_rate = var.runner_worker_docker_machine_instance.max_growth_rate
154
- runners_monitoring = var.runner_worker_docker_machine_instance.monitoring
155
- runners_ebs_optimized = var.runner_worker_docker_machine_instance.ebs_optimized
156
- runners_instance_profile = var.runner_worker.type == " docker+machine" ? aws_iam_instance_profile.docker_machine[0 ].name : " "
157
- docker_machine_options = length (local. docker_machine_options_string ) == 1 ? " " : local.docker_machine_options_string
158
- docker_machine_name = format (" %s-%s" , local. runner_tags_merged [" Name" ], " %s" ) # %s is always needed
144
+ }]
159
145
runners_name = var.runner_instance.name
160
- runners_tags = replace (replace (local. runner_tags_string , " ,," , " ," ), " /,$/" , " " )
161
146
runners_token = var.runner_gitlab.registration_token
162
- runners_userdata = var.runner_worker_docker_machine_instance.start_script
163
147
runners_executor = var.runner_worker.type
164
148
runners_limit = var.runner_worker.max_jobs
165
149
runners_concurrent = var.runner_manager.maximum_concurrent_jobs
166
- runners_idle_count = var.runner_worker_docker_machine_instance.idle_count
167
- runners_idle_time = var.runner_worker_docker_machine_instance.idle_time
168
- runners_max_builds = local.runners_max_builds_string
169
- runners_root_size = var.runner_worker_docker_machine_instance.root_size
170
- runners_volume_type = var.runner_worker_docker_machine_instance.volume_type
171
- runners_iam_instance_profile_name = var.runner_worker_docker_machine_role.profile_name
172
- runners_use_private_address_only = var.runner_worker_docker_machine_instance.private_address_only
173
- runners_use_private_address = ! var.runner_worker_docker_machine_instance.private_address_only
174
- runners_request_spot_instance = var.runner_worker_docker_machine_instance_spot.enable
175
150
runners_environment_vars = jsonencode (var. runner_worker . environment_variables )
176
151
runners_pre_build_script = var.runner_worker_gitlab_pipeline.pre_build_script
177
152
runners_post_build_script = var.runner_worker_gitlab_pipeline.post_build_script
@@ -188,8 +163,6 @@ locals {
188
163
sentry_dsn = var.runner_manager.sentry_dsn
189
164
prometheus_listen_address = var.runner_manager.prometheus_listen_address
190
165
auth_type = var.runner_worker_cache.authentication_type
191
- use_fleet = var.runner_worker_docker_machine_fleet.enable
192
- launch_template = var.runner_worker_docker_machine_fleet.enable == true ? aws_launch_template.fleet_gitlab_runner[0 ].name : " "
193
166
runners_docker_autoscaler = var.runner_worker.type == " docker-autoscaler" ? local.template_runner_docker_autoscaler : " "
194
167
runners_docker_machine = var.runner_worker.type == " docker+machine" ? local.template_runner_docker_machine : " "
195
168
}
@@ -623,23 +596,37 @@ resource "aws_iam_role_policy_attachment" "docker_machine_cache_instance" {
623
596
# ## docker machine instance policy
624
597
# ###############################################################################
625
598
resource "aws_iam_role" "docker_machine" {
626
- count = contains ([ " docker+machine " , " docker-autoscaler " ], var. runner_worker . type ) ? 1 : 0
599
+ count = var. runner_worker . type == " docker+machine " ? 1 : 0
627
600
name = " ${ local . name_iam_objects } -docker-machine"
628
601
assume_role_policy = length (var. runner_worker_docker_machine_role . assume_role_policy_json ) > 0 ? var. runner_worker_docker_machine_role . assume_role_policy_json : templatefile (" ${ path . module } /policies/instance-role-trust-policy.json" , {})
629
602
permissions_boundary = var. iam_permissions_boundary == " " ? null : " arn:${ data . aws_partition . current . partition } :iam::${ data . aws_caller_identity . current . account_id } :policy/${ var . iam_permissions_boundary } "
630
603
631
604
tags = local. tags
632
605
}
633
606
634
-
635
-
636
607
resource "aws_iam_instance_profile" "docker_machine" {
637
- count = contains ([ " docker+machine " , " docker-autoscaler " ], var. runner_worker . type ) ? 1 : 0
608
+ count = var. runner_worker . type == " docker+machine " ? 1 : 0
638
609
name = " ${ local . name_iam_objects } -docker-machine"
639
610
role = aws_iam_role. docker_machine [0 ]. name
640
611
tags = local. tags
641
612
}
642
613
614
+ resource "aws_iam_role" "docker_autoscaler" {
615
+ count = var. runner_worker . type == " docker-autoscaler" ? 1 : 0
616
+ name = " ${ local . name_iam_objects } -docker-autoscaler"
617
+ assume_role_policy = length (var. runner_worker_docker_autoscaler_role . assume_role_policy_json ) > 0 ? var. runner_worker_docker_autoscaler_role . assume_role_policy_json : templatefile (" ${ path . module } /policies/instance-role-trust-policy.json" , {})
618
+ permissions_boundary = var. iam_permissions_boundary == " " ? null : " arn:${ data . aws_partition . current . partition } :iam::${ data . aws_caller_identity . current . account_id } :policy/${ var . iam_permissions_boundary } "
619
+
620
+ tags = local. tags
621
+ }
622
+
623
+ resource "aws_iam_instance_profile" "docker_autoscaler" {
624
+ count = var. runner_worker . type == " docker-autoscaler" ? 1 : 0
625
+ name = " ${ local . name_iam_objects } -docker-autoscaler"
626
+ role = aws_iam_role. docker_autoscaler [0 ]. name
627
+ tags = local. tags
628
+ }
629
+
643
630
# ###############################################################################
644
631
# ## Add user defined policies
645
632
# ###############################################################################
@@ -650,6 +637,13 @@ resource "aws_iam_role_policy_attachment" "docker_machine_user_defined_policies"
650
637
policy_arn = var. runner_worker_docker_machine_role . policy_arns [count . index ]
651
638
}
652
639
640
+ resource "aws_iam_role_policy_attachment" "docker_autoscaler_user_defined_policies" {
641
+ count = var. runner_worker . type == " docker-autoscaler" ? length (var. runner_worker_docker_autoscaler_role . policy_arns ) : 0
642
+
643
+ role = aws_iam_role. docker_autoscaler [0 ]. name
644
+ policy_arn = var. runner_worker_docker_autoscaler_role . policy_arns [count . index ]
645
+ }
646
+
653
647
# ###############################################################################
654
648
resource "aws_iam_role_policy_attachment" "docker_machine_session_manager_aws_managed" {
655
649
count = (var. runner_worker . type == " docker+machine" && var. runner_worker . ssm_access ) ? 1 : 0
@@ -658,7 +652,12 @@ resource "aws_iam_role_policy_attachment" "docker_machine_session_manager_aws_ma
658
652
policy_arn = " arn:${ data . aws_partition . current . partition } :iam::aws:policy/AmazonSSMManagedInstanceCore"
659
653
}
660
654
655
+ resource "aws_iam_role_policy_attachment" "docker_autoscaler_session_manager_aws_managed" {
656
+ count = (var. runner_worker . type == " docker-autoscaler" && var. runner_worker . ssm_access ) ? 1 : 0
661
657
658
+ role = aws_iam_role. docker_autoscaler [0 ]. name
659
+ policy_arn = " arn:${ data . aws_partition . current . partition } :iam::aws:policy/AmazonSSMManagedInstanceCore"
660
+ }
662
661
663
662
# ###############################################################################
664
663
# ## Service linked policy, optional
0 commit comments