Skip to content

Commit e5eeb10

Browse files
authored
fix: error IAM role attachement when applying the module the first ti… (#659)
Ensure policies attachment are done with module managed resources in case the role is managed via terraform objects. This to avoid attachments are created before the role is created. Depends on does not support dynamics, sot not an option.
1 parent cf91ffb commit e5eeb10

File tree

3 files changed

+22
-21
lines changed

3 files changed

+22
-21
lines changed

examples/runner-default/.terraform.lock.hcl

+14-13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

logging.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
resource "aws_iam_role_policy" "instance" {
22
count = var.enable_cloudwatch_logging && var.create_runner_iam_role ? 1 : 0
33
name = "${local.name_iam_objects}-logging"
4-
role = local.aws_iam_role_instance_name
4+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
55
policy = templatefile("${path.module}/policies/instance-logging-policy.json", { partition = data.aws_partition.current.partition })
66
}
77

main.tf

+7-7
Original file line numberDiff line numberDiff line change
@@ -399,14 +399,14 @@ resource "aws_iam_policy" "instance_session_manager_policy" {
399399
resource "aws_iam_role_policy_attachment" "instance_session_manager_policy" {
400400
count = var.enable_runner_ssm_access ? 1 : 0
401401

402-
role = local.aws_iam_role_instance_name
402+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
403403
policy_arn = aws_iam_policy.instance_session_manager_policy[0].arn
404404
}
405405

406406
resource "aws_iam_role_policy_attachment" "instance_session_manager_aws_managed" {
407407
count = var.enable_runner_ssm_access ? 1 : 0
408408

409-
role = local.aws_iam_role_instance_name
409+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
410410
policy_arn = "arn:${data.aws_partition.current.partition}:iam::aws:policy/AmazonSSMManagedInstanceCore"
411411
}
412412

@@ -416,7 +416,7 @@ resource "aws_iam_role_policy_attachment" "instance_session_manager_aws_managed"
416416
resource "aws_iam_role_policy_attachment" "user_defined_policies" {
417417
count = length(var.runner_iam_policy_arns)
418418

419-
role = local.aws_iam_role_instance_name
419+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
420420
policy_arn = var.runner_iam_policy_arns[count.index]
421421
}
422422

@@ -429,7 +429,7 @@ resource "aws_iam_role_policy_attachment" "docker_machine_cache_instance" {
429429
use aws_iam_role.docker_machine.name here! See https://docs.gitlab.com/runner/configuration/advanced-configuration.html */
430430
count = var.runners_executor == "docker+machine" ? (var.cache_bucket["create"] || lookup(var.cache_bucket, "policy", "") != "" ? 1 : 0) : 0
431431

432-
role = local.aws_iam_role_instance_name
432+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
433433
policy_arn = local.bucket_policy
434434
}
435435

@@ -485,7 +485,7 @@ resource "aws_iam_policy" "service_linked_role" {
485485
resource "aws_iam_role_policy_attachment" "service_linked_role" {
486486
count = var.allow_iam_service_linked_role_creation ? 1 : 0
487487

488-
role = local.aws_iam_role_instance_name
488+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
489489
policy_arn = aws_iam_policy.service_linked_role[0].arn
490490
}
491491

@@ -509,7 +509,7 @@ resource "aws_iam_policy" "ssm" {
509509
resource "aws_iam_role_policy_attachment" "ssm" {
510510
count = var.enable_manage_gitlab_token ? 1 : 0
511511

512-
role = local.aws_iam_role_instance_name
512+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
513513
policy_arn = aws_iam_policy.ssm[0].arn
514514
}
515515

@@ -529,7 +529,7 @@ resource "aws_iam_policy" "eip" {
529529
resource "aws_iam_role_policy_attachment" "eip" {
530530
count = var.enable_eip ? 1 : 0
531531

532-
role = local.aws_iam_role_instance_name
532+
role = var.create_runner_iam_role ? aws_iam_role.instance[0].name : local.aws_iam_role_instance_name
533533
policy_arn = aws_iam_policy.eip[0].arn
534534
}
535535

0 commit comments

Comments
 (0)