Skip to content

Commit 70fa785

Browse files
Merge pull request #1 from Sensedia/task/PLATS-996
Task/plats 996
2 parents c9ff571 + 4eb2b04 commit 70fa785

File tree

4 files changed

+35
-16
lines changed

4 files changed

+35
-16
lines changed

README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,22 @@ A module to create AWS IAM policies and a role to connect to CAST.AI
2121
Requires `castai/castai` and `hashicorp/aws` providers to be configured.
2222

2323
```hcl
24-
module "castai-eks-role-iam" {
25-
source = "castai/eks-role-iam/castai"
24+
module "castai_eks_role_iam" {
25+
source = "git::https://github.com/Sensedia/terraform-castai-eks-role-iam.git//?ref=1.0.0"
2626
27+
# Required
2728
aws_account_id = var.aws_account_id
28-
aws_cluster_vpc_id = var.aws_vpc_id
2929
aws_cluster_region = var.aws_cluster_region
3030
aws_cluster_name = var.aws_cluster_name
31+
aws_cluster_vpc_id = var.aws_vpc_id
3132
castai_user_arn = var.castai_user_arn
33+
34+
# Optional
35+
create_iam_resources_per_cluster = var.create_iam_resources_per_cluster
36+
attach_ssm_managed_instance_core = var.attach_ssm_managed_instance_core
37+
attach_ebs_csi_driver_policy = var.attach_ebs_csi_driver_policy
38+
attach_custom_instance_policy = var.attach_custom_instance_policy
39+
custom_instance_policy_arn = var.custom_instance_policy_arn # Used if attach_custom_instance_policy = true
3240
}
3341
```
3442

main.tf

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@ locals {
55
iam_policy_name = var.create_iam_resources_per_cluster ? "CastEKSPolicy-${local.resource_name_postfix}" : "CastEKSPolicy-tf"
66
iam_role_policy_name = "castai-user-policy-${substr(local.resource_name_postfix, 0, 45)}"
77
instance_profile_role_name = "castai-eks-instance-${substr(local.resource_name_postfix, 0, 44)}"
8-
iam_policy_prefix = "arn:${data.aws_partition.current.partition}:iam::aws:policy"
8+
iam_policy_prefix = "arn:aws:iam::aws:policy"
99
ipv6_policy_name = "CastEC2AssignIPv6Policy-${local.resource_name_postfix}"
1010

11-
castai_instance_profile_policy_list = flatten([
11+
castai_instance_profile_policy_list = compact(flatten([
1212
"${local.iam_policy_prefix}/AmazonEKSWorkerNodePolicy",
1313
"${local.iam_policy_prefix}/AmazonEC2ContainerRegistryReadOnly",
1414
var.attach_worker_cni_policy ? ["${local.iam_policy_prefix}/AmazonEKS_CNI_Policy"] : [],
1515
var.attach_ebs_csi_driver_policy ? ["${local.iam_policy_prefix}/service-role/AmazonEBSCSIDriverPolicy"] : [],
16-
var.attach_ssm_managed_instance_core ? ["${local.iam_policy_prefix}/AmazonSSMManagedInstanceCore"] : []
17-
])
16+
var.attach_ssm_managed_instance_core ? ["${local.iam_policy_prefix}/AmazonSSMManagedInstanceCore"] : [],
17+
var.attach_custom_instance_policy ? [var.custom_instance_policy_arn] : []
18+
]))
1819
}
1920

20-
data "aws_partition" "current" {}
21-
2221
# castai eks settings (provides required iam policies)
2322

2423
data "castai_eks_settings" "eks" {
@@ -60,8 +59,8 @@ resource "aws_iam_role_policy" "castai_role_iam_policy" {
6059
# iam - instance profile role
6160

6261
resource "aws_iam_role" "instance_profile_role" {
63-
name = local.instance_profile_role_name
64-
max_session_duration = var.max_session_duration
62+
name = local.instance_profile_role_name
63+
max_session_duration = var.max_session_duration
6564
assume_role_policy = jsonencode({
6665
Version : "2012-10-17"
6766
Statement : [
@@ -71,9 +70,9 @@ resource "aws_iam_role" "instance_profile_role" {
7170
Principal = {
7271
Service = "ec2.amazonaws.com"
7372
}
74-
"Action": [
75-
"sts:AssumeRole",
76-
"sts:TagSession"
73+
"Action" : [
74+
"sts:AssumeRole",
75+
"sts:TagSession"
7776
]
7877
}
7978
]
@@ -127,7 +126,7 @@ data "aws_iam_policy_document" "cast_assume_role_policy" {
127126
}
128127

129128
dynamic "condition" {
130-
for_each = var.castai_user_external_id!= null ? [1] : []
129+
for_each = var.castai_user_external_id != null ? [1] : []
131130
content {
132131
test = "StringEquals"
133132
variable = "sts:ExternalId"

variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ variable "attach_ssm_managed_instance_core" {
4747
default = true
4848
}
4949

50+
variable "attach_custom_instance_policy" {
51+
description = "If true, attaches the policy ARN defined in custom_instance_policy_arn to the Instance Profile Role."
52+
type = bool
53+
default = false
54+
}
55+
56+
variable "custom_instance_policy_arn" {
57+
description = "Custom IAM Policy ARN to be attached to the Instance Profile Role."
58+
type = string
59+
default = null
60+
}
61+
5062
variable "enable_ipv6" {
5163
type = bool
5264
description = "Whether to enable IPv6 CNI policy for the cluster."

versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ terraform {
88
}
99
castai = {
1010
source = "castai/castai"
11-
version = "~> 7.13"
11+
version = "~> 8.1"
1212
}
1313
}
1414
}

0 commit comments

Comments
 (0)