Skip to content

Commit bf8407f

Browse files
committed
refactor!: create autoscaling group iam instance profile policy attachments dynamically from vars
1 parent 015a490 commit bf8407f

File tree

4 files changed

+16
-18
lines changed

4 files changed

+16
-18
lines changed

main.tf

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
locals {
2-
# IAM Instance Profile
3-
iam_role_ec2_container_service_role_arn = "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role"
4-
52
# ACM
63
acm_certificates_arns = var.create_acm ? merge(
74
try(module.acm[0].amazon_issued_acm_certificates_arns, {}),
@@ -303,13 +300,13 @@ module "asg" {
303300
launch_template = try(var.autoscaling_group.launch_template, {})
304301

305302
# IAM Instance Profile
306-
create_iam_role = try(var.autoscaling_group.create_iam_role, true)
307-
iam_role_name = try(var.autoscaling_group.iam_role_name, null)
308-
iam_role_tags = try(var.autoscaling_group.iam_role_tags, {})
309-
iam_role_ec2_container_service_role_arn = try(var.autoscaling_group.iam_role_ec2_container_service_role_arn, local.iam_role_ec2_container_service_role_arn)
310-
create_iam_instance_profile = try(var.autoscaling_group.create_iam_instance_profile, true)
311-
iam_instance_profile_name = try(var.autoscaling_group.iam_instance_profile_name, null)
312-
iam_instance_profile_tags = try(var.autoscaling_group.iam_instance_profile_tags, {})
303+
create_iam_role = try(var.autoscaling_group.create_iam_role, true)
304+
iam_role_name = try(var.autoscaling_group.iam_role_name, null)
305+
iam_role_policy_attachments = try(var.autoscaling_group.iam_role_policy_attachments, [])
306+
iam_role_tags = try(var.autoscaling_group.iam_role_tags, {})
307+
create_iam_instance_profile = try(var.autoscaling_group.create_iam_instance_profile, true)
308+
iam_instance_profile_name = try(var.autoscaling_group.iam_instance_profile_name, null)
309+
iam_instance_profile_tags = try(var.autoscaling_group.iam_instance_profile_tags, {})
313310

314311
instances_tags = try(var.autoscaling_group.instances_tags, {})
315312
tags = try(var.autoscaling_group.tags, {})

modules/asg/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ No modules.
3838
| <a name="input_desired_capacity"></a> [desired\_capacity](#input\_desired\_capacity) | Desired capacity for the Autoscaling group | `number` | n/a | yes |
3939
| <a name="input_iam_instance_profile_name"></a> [iam\_instance\_profile\_name](#input\_iam\_instance\_profile\_name) | Name of the IAM Instance Profile | `string` | `null` | no |
4040
| <a name="input_iam_instance_profile_tags"></a> [iam\_instance\_profile\_tags](#input\_iam\_instance\_profile\_tags) | Resource Tags for the IAM Instance Profile | `map(any)` | `{}` | no |
41-
| <a name="input_iam_role_ec2_container_service_role_arn"></a> [iam\_role\_ec2\_container\_service\_role\_arn](#input\_iam\_role\_ec2\_container\_service\_role\_arn) | ARN of the EC2 Container Service Role for EC2 | `string` | n/a | yes |
4241
| <a name="input_iam_role_name"></a> [iam\_role\_name](#input\_iam\_role\_name) | Name for the IAM Role | `string` | `null` | no |
42+
| <a name="input_iam_role_policy_attachments"></a> [iam\_role\_policy\_attachments](#input\_iam\_role\_policy\_attachments) | Policy ARNs to attach to the IAM Role | `list(string)` | `[]` | no |
4343
| <a name="input_iam_role_tags"></a> [iam\_role\_tags](#input\_iam\_role\_tags) | Resource Tags for IAM Role | `map(any)` | `{}` | no |
4444
| <a name="input_instances_tags"></a> [instances\_tags](#input\_instances\_tags) | Resources Tags to propagate to the Instances | `map(any)` | `{}` | no |
4545
| <a name="input_launch_template"></a> [launch\_template](#input\_launch\_template) | Launch Template to use with the Autoscaling group | <pre>object({<br> name = optional(string, "")<br> image_id = optional(string, "")<br> instance_type = optional(string, "")<br> vpc_security_group_ids = optional(list(string), [])<br> key_name = optional(string, "")<br> user_data = optional(string, "")<br> tags = optional(map(any), {})<br> })</pre> | `{}` | no |

modules/asg/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ resource "aws_iam_role" "this" {
8989
}
9090

9191
resource "aws_iam_role_policy_attachment" "this" {
92-
count = var.create_iam_role ? 1 : 0
92+
count = var.create_iam_role ? length(var.iam_role_policy_attachments) : 0
9393

9494
role = aws_iam_role.this[0].name
95-
policy_arn = var.iam_role_ec2_container_service_role_arn
95+
policy_arn = element(var.iam_role_policy_attachments, count.index)
9696
}
9797

9898
resource "aws_iam_instance_profile" "this" {

modules/asg/variables.tf

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,18 @@ variable "iam_role_name" {
112112
default = null
113113
}
114114

115+
variable "iam_role_policy_attachments" {
116+
description = "Policy ARNs to attach to the IAM Role"
117+
type = list(string)
118+
default = []
119+
}
120+
115121
variable "iam_role_tags" {
116122
description = "Resource Tags for IAM Role"
117123
type = map(any)
118124
default = {}
119125
}
120126

121-
variable "iam_role_ec2_container_service_role_arn" {
122-
description = "ARN of the EC2 Container Service Role for EC2"
123-
type = string
124-
}
125-
126127
################################################################################
127128
# IAM Instance Profile
128129
################################################################################

0 commit comments

Comments
 (0)