@@ -87,11 +87,11 @@ locals {
87
87
runners_aws_zone = data.aws_availability_zone.runners.name_suffix
88
88
runners_instance_type = var.docker_machine_instance_type
89
89
runners_spot_price_bid = var.docker_machine_spot_price_bid == " on-demand-price" ? " " : var.docker_machine_spot_price_bid
90
- runners_ami = data.aws_ami.docker_machine .id
91
- runners_security_group_name = aws_security_group.docker_machine.name
90
+ runners_ami = var.runners_executor == " docker+machine " ? data.aws_ami.docker - machine[ 0 ] .id : " "
91
+ runners_security_group_name = var.runners_executor == " docker+machine " ? aws_security_group.docker_machine[ 0 ] .name : " "
92
92
runners_monitoring = var.runners_monitoring
93
93
runners_ebs_optimized = var.runners_ebs_optimized
94
- runners_instance_profile = aws_iam_instance_profile.docker_machine.name
94
+ runners_instance_profile = var.runners_executor == " docker+machine " ? aws_iam_instance_profile.docker_machine[ 0 ] .name : " "
95
95
runners_additional_volumes = local.runners_additional_volumes
96
96
docker_machine_options = length (local. docker_machine_options_string ) == 1 ? " " : local.docker_machine_options_string
97
97
docker_machine_name = format (" %s-%s" , local. runner_tags_merged [" Name" ], " %s" ) # %s is always needed
@@ -137,7 +137,9 @@ locals {
137
137
)
138
138
}
139
139
140
- data "aws_ami" "docker_machine" {
140
+ data "aws_ami" "docker-machine" {
141
+ count = var. runners_executor == " docker+machine" ? 1 : 0
142
+
141
143
most_recent = " true"
142
144
143
145
dynamic "filter" {
@@ -343,7 +345,8 @@ resource "aws_iam_instance_profile" "instance" {
343
345
}
344
346
345
347
resource "aws_iam_role" "instance" {
346
- count = var. create_runner_iam_role ? 1 : 0
348
+ count = var. create_runner_iam_role ? 1 : 0
349
+
347
350
name = local. aws_iam_role_instance_name
348
351
assume_role_policy = length (var. instance_role_json ) > 0 ? var. instance_role_json : templatefile (" ${ path . module } /policies/instance-role-trust-policy.json" , {})
349
352
permissions_boundary = var. permissions_boundary == " " ? null : " arn:${ data . aws_partition . current . partition } :iam::${ data . aws_caller_identity . current . account_id } :policy/${ var . permissions_boundary } "
@@ -356,22 +359,23 @@ resource "aws_iam_role" "instance" {
356
359
# ## iam:PassRole To pass the role from the agent to the docker machine runners
357
360
# ###############################################################################
358
361
resource "aws_iam_policy" "instance_docker_machine_policy" {
359
- count = var. create_runner_iam_role ? 1 : 0
362
+ count = var. runners_executor == " docker+machine" && var. create_runner_iam_role ? 1 : 0
363
+
360
364
name = " ${ local . name_iam_objects } -docker-machine"
361
365
path = " /"
362
366
description = " Policy for docker machine."
363
367
policy = templatefile (" ${ path . module } /policies/instance-docker-machine-policy.json" ,
364
368
{
365
- docker_machine_role_arn = aws_iam_role.docker_machine.arn
369
+ docker_machine_role_arn = aws_iam_role.docker_machine[ 0 ] .arn
366
370
})
367
371
tags = local. tags
368
372
}
369
373
370
374
resource "aws_iam_role_policy_attachment" "instance_docker_machine_policy" {
371
- count = var. create_runner_iam_role ? 1 : 0
375
+ count = var. runners_executor == " docker+machine " && var . create_runner_iam_role ? 1 : 0
372
376
373
- role = local . aws_iam_role_instance_name
374
- policy_arn = aws_iam_policy. instance_docker_machine_policy [count . index ]. arn
377
+ role = aws_iam_role . instance [ 0 ] . name
378
+ policy_arn = aws_iam_policy. instance_docker_machine_policy [0 ]. arn
375
379
}
376
380
377
381
# ###############################################################################
@@ -418,7 +422,7 @@ resource "aws_iam_role_policy_attachment" "docker_machine_cache_instance" {
418
422
/* If the S3 cache adapter is configured to use an IAM instance profile, the
419
423
adapter uses the profile attached to the GitLab Runner machine. So do not
420
424
use aws_iam_role.docker_machine.name here! See https://docs.gitlab.com/runner/configuration/advanced-configuration.html */
421
- count = var. cache_bucket [" create" ] || length ( lookup (var. cache_bucket , " policy" , " " )) > 0 ? 1 : 0
425
+ count = var. runners_executor == " docker+machine " ? (var . cache_bucket [" create" ] || lookup (var. cache_bucket , " policy" , " " ) != " " ? 1 : 0 ) : 0
422
426
423
427
role = local. aws_iam_role_instance_name
424
428
policy_arn = local. bucket_policy
@@ -428,32 +432,35 @@ resource "aws_iam_role_policy_attachment" "docker_machine_cache_instance" {
428
432
# ## docker machine instance policy
429
433
# ###############################################################################
430
434
resource "aws_iam_role" "docker_machine" {
435
+ count = var. runners_executor == " docker+machine" ? 1 : 0
431
436
name = " ${ local . name_iam_objects } -docker-machine"
432
437
assume_role_policy = length (var. docker_machine_role_json ) > 0 ? var. docker_machine_role_json : templatefile (" ${ path . module } /policies/instance-role-trust-policy.json" , {})
433
438
permissions_boundary = var. permissions_boundary == " " ? null : " arn:${ data . aws_partition . current . partition } :iam::${ data . aws_caller_identity . current . account_id } :policy/${ var . permissions_boundary } "
434
439
tags = local. tags
435
440
}
436
441
437
442
resource "aws_iam_instance_profile" "docker_machine" {
438
- name = " ${ local . name_iam_objects } -docker-machine"
439
- role = aws_iam_role. docker_machine . name
440
- tags = local. tags
443
+ count = var. runners_executor == " docker+machine" ? 1 : 0
444
+ name = " ${ local . name_iam_objects } -docker-machine"
445
+ role = aws_iam_role. docker_machine [0 ]. name
446
+ tags = local. tags
441
447
}
442
448
443
449
# ###############################################################################
444
450
# ## Add user defined policies
445
451
# ###############################################################################
446
452
resource "aws_iam_role_policy_attachment" "docker_machine_user_defined_policies" {
447
- count = length (var. docker_machine_iam_policy_arns )
448
- role = aws_iam_role. docker_machine . name
453
+ count = var. runners_executor == " docker+machine" ? length (var. docker_machine_iam_policy_arns ) : 0
454
+
455
+ role = aws_iam_role. docker_machine [0 ]. name
449
456
policy_arn = var. docker_machine_iam_policy_arns [count . index ]
450
457
}
451
458
452
459
# ###############################################################################
453
460
resource "aws_iam_role_policy_attachment" "docker_machine_session_manager_aws_managed" {
454
- count = var. enable_docker_machine_ssm_access ? 1 : 0
461
+ count = ( var. runners_executor == " docker+machine " && var . enable_docker_machine_ssm_access ) ? 1 : 0
455
462
456
- role = aws_iam_role. docker_machine . name
463
+ role = aws_iam_role. docker_machine [ 0 ] . name
457
464
policy_arn = " arn:${ data . aws_partition . current . partition } :iam::aws:policy/AmazonSSMManagedInstanceCore"
458
465
}
459
466
0 commit comments