Skip to content

Commit a7b2500

Browse files
authored
Merge pull request #25 from truefoundry/variable-refactor
Variable refactor
2 parents faa4ff0 + 338a163 commit a7b2500

7 files changed

+29
-42
lines changed

README.md

+9-13
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ Truefoundry AWS Control Plane Module
5454

5555
| Name | Description | Type | Default | Required |
5656
|------|-------------|------|---------|:--------:|
57-
| <a name="input_account_name"></a> [account\_name](#input\_account\_name) | AWS Account Name | `string` | n/a | yes |
5857
| <a name="input_aws_account_id"></a> [aws\_account\_id](#input\_aws\_account\_id) | AWS Account ID | `string` | n/a | yes |
5958
| <a name="input_aws_region"></a> [aws\_region](#input\_aws\_region) | EKS Cluster region | `string` | n/a | yes |
6059
| <a name="input_cluster_name"></a> [cluster\_name](#input\_cluster\_name) | Cluster name | `string` | n/a | yes |
@@ -65,16 +64,13 @@ Truefoundry AWS Control Plane Module
6564
| <a name="input_master_user_password_rotate_immediately"></a> [master\_user\_password\_rotate\_immediately](#input\_master\_user\_password\_rotate\_immediately) | Rotate master user password immediately | `bool` | `false` | no |
6665
| <a name="input_master_user_password_rotation_automatically_after_days"></a> [master\_user\_password\_rotation\_automatically\_after\_days](#input\_master\_user\_password\_rotation\_automatically\_after\_days) | Rotate master user password automatically after days | `number` | `90` | no |
6766
| <a name="input_master_user_password_rotation_duration"></a> [master\_user\_password\_rotation\_duration](#input\_master\_user\_password\_rotation\_duration) | Master user password rotation duration | `string` | `"3h"` | no |
68-
| <a name="input_mlfoundry_k8s_namespace"></a> [mlfoundry\_k8s\_namespace](#input\_mlfoundry\_k8s\_namespace) | The k8s mlfoundry namespace | `string` | n/a | yes |
69-
| <a name="input_mlfoundry_k8s_service_account"></a> [mlfoundry\_k8s\_service\_account](#input\_mlfoundry\_k8s\_service\_account) | The k8s mlfoundry service account name | `string` | n/a | yes |
70-
| <a name="input_mlfoundry_name"></a> [mlfoundry\_name](#input\_mlfoundry\_name) | Name of mlfoundry deployment | `string` | n/a | yes |
71-
| <a name="input_svcfoundry_k8s_namespace"></a> [svcfoundry\_k8s\_namespace](#input\_svcfoundry\_k8s\_namespace) | The k8s svcfoundry namespace | `string` | n/a | yes |
72-
| <a name="input_svcfoundry_k8s_service_account"></a> [svcfoundry\_k8s\_service\_account](#input\_svcfoundry\_k8s\_service\_account) | The k8s svcfoundry service account name | `string` | n/a | yes |
73-
| <a name="input_svcfoundry_name"></a> [svcfoundry\_name](#input\_svcfoundry\_name) | Name of svcfoundry deployment | `string` | n/a | yes |
67+
| <a name="input_mlfoundry_k8s_namespace"></a> [mlfoundry\_k8s\_namespace](#input\_mlfoundry\_k8s\_namespace) | The k8s mlfoundry namespace | `string` | `"truefoundry"` | no |
68+
| <a name="input_mlfoundry_k8s_service_account"></a> [mlfoundry\_k8s\_service\_account](#input\_mlfoundry\_k8s\_service\_account) | The k8s mlfoundry service account name | `string` | `"mlfoundry-server"` | no |
69+
| <a name="input_svcfoundry_k8s_namespace"></a> [svcfoundry\_k8s\_namespace](#input\_svcfoundry\_k8s\_namespace) | The k8s svcfoundry namespace | `string` | `"truefoundry"` | no |
70+
| <a name="input_svcfoundry_k8s_service_account"></a> [svcfoundry\_k8s\_service\_account](#input\_svcfoundry\_k8s\_service\_account) | The k8s svcfoundry service account name | `string` | `"servicefoundry-server"` | no |
7471
| <a name="input_tags"></a> [tags](#input\_tags) | AWS Tags common to all the resources created | `map(string)` | `{}` | no |
75-
| <a name="input_tfy_workflow_admin_k8s_namespace"></a> [tfy\_workflow\_admin\_k8s\_namespace](#input\_tfy\_workflow\_admin\_k8s\_namespace) | The k8s tfy workflow admin namespace | `string` | n/a | yes |
76-
| <a name="input_tfy_workflow_admin_k8s_service_account"></a> [tfy\_workflow\_admin\_k8s\_service\_account](#input\_tfy\_workflow\_admin\_k8s\_service\_account) | The k8s tfy workflow admin service account name | `string` | n/a | yes |
77-
| <a name="input_tfy_workflow_admin_name"></a> [tfy\_workflow\_admin\_name](#input\_tfy\_workflow\_admin\_name) | Name of tfy workflow admin deployment | `string` | n/a | yes |
72+
| <a name="input_tfy_workflow_admin_k8s_namespace"></a> [tfy\_workflow\_admin\_k8s\_namespace](#input\_tfy\_workflow\_admin\_k8s\_namespace) | The k8s tfy workflow admin namespace | `string` | `"truefoundry"` | no |
73+
| <a name="input_tfy_workflow_admin_k8s_service_account"></a> [tfy\_workflow\_admin\_k8s\_service\_account](#input\_tfy\_workflow\_admin\_k8s\_service\_account) | The k8s tfy workflow admin service account name | `string` | `"tfy-workflow-admin"` | no |
7874
| <a name="input_truefoundry_artifact_buckets_will_read"></a> [truefoundry\_artifact\_buckets\_will\_read](#input\_truefoundry\_artifact\_buckets\_will\_read) | A list of bucket IDs mlfoundry will need read access to, in order to show the stored artifacts. It accepts any valid IAM resource, including ARNs with wildcards, so you can do something like arn:aws:s3:::bucket-prefix-* | `list(string)` | `[]` | no |
7975
| <a name="input_truefoundry_cloudwatch_log_exports"></a> [truefoundry\_cloudwatch\_log\_exports](#input\_truefoundry\_cloudwatch\_log\_exports) | Set of log types to enable for exporting to CloudWatch logs. If omitted, no logs will be exported | `list(string)` | <pre>[<br/> "postgresql",<br/> "upgrade"<br/>]</pre> | no |
8076
| <a name="input_truefoundry_db_allocated_storage"></a> [truefoundry\_db\_allocated\_storage](#input\_truefoundry\_db\_allocated\_storage) | Storage for RDS. Minimum storage allowed for gp3 volumes is 20GB | `string` | `"20"` | no |
@@ -87,14 +83,14 @@ Truefoundry AWS Control Plane Module
8783
| <a name="input_truefoundry_db_engine_version"></a> [truefoundry\_db\_engine\_version](#input\_truefoundry\_db\_engine\_version) | Truefoundry DB Postgres version | `string` | `"13.14"` | no |
8884
| <a name="input_truefoundry_db_ingress_cidr_blocks"></a> [truefoundry\_db\_ingress\_cidr\_blocks](#input\_truefoundry\_db\_ingress\_cidr\_blocks) | CIDR blocks allowed to connect to the database | `list(string)` | `[]` | no |
8985
| <a name="input_truefoundry_db_ingress_security_group"></a> [truefoundry\_db\_ingress\_security\_group](#input\_truefoundry\_db\_ingress\_security\_group) | SG allowed to connect to the database | `string` | n/a | yes |
90-
| <a name="input_truefoundry_db_instance_class"></a> [truefoundry\_db\_instance\_class](#input\_truefoundry\_db\_instance\_class) | Instance class for RDS | `string` | n/a | yes |
91-
| <a name="input_truefoundry_db_max_allocated_storage"></a> [truefoundry\_db\_max\_allocated\_storage](#input\_truefoundry\_db\_max\_allocated\_storage) | Max allowed storage for RDS when autoscaling is enabled | `string` | n/a | yes |
86+
| <a name="input_truefoundry_db_instance_class"></a> [truefoundry\_db\_instance\_class](#input\_truefoundry\_db\_instance\_class) | Instance class for RDS | `string` | `"db.t3.medium"` | no |
87+
| <a name="input_truefoundry_db_max_allocated_storage"></a> [truefoundry\_db\_max\_allocated\_storage](#input\_truefoundry\_db\_max\_allocated\_storage) | Max allowed storage for RDS when autoscaling is enabled | `string` | `"30"` | no |
9288
| <a name="input_truefoundry_db_multiple_az"></a> [truefoundry\_db\_multiple\_az](#input\_truefoundry\_db\_multiple\_az) | Enable Multi-az (standby) instances for RDS instances | `bool` | `false` | no |
9389
| <a name="input_truefoundry_db_override_name"></a> [truefoundry\_db\_override\_name](#input\_truefoundry\_db\_override\_name) | Override name for truefoundry db.This is the name of the RDS resources in AWS . truefoundry\_db\_enable\_override must be set true | `string` | `""` | no |
9490
| <a name="input_truefoundry_db_publicly_accessible"></a> [truefoundry\_db\_publicly\_accessible](#input\_truefoundry\_db\_publicly\_accessible) | Make database publicly accessible. Subnets and SG must match | `string` | `false` | no |
9591
| <a name="input_truefoundry_db_skip_final_snapshot"></a> [truefoundry\_db\_skip\_final\_snapshot](#input\_truefoundry\_db\_skip\_final\_snapshot) | n/a | `bool` | `false` | no |
9692
| <a name="input_truefoundry_db_storage_encrypted"></a> [truefoundry\_db\_storage\_encrypted](#input\_truefoundry\_db\_storage\_encrypted) | n/a | `bool` | `true` | no |
97-
| <a name="input_truefoundry_db_storage_iops"></a> [truefoundry\_db\_storage\_iops](#input\_truefoundry\_db\_storage\_iops) | Provisioned IOPS for the db | `number` | n/a | yes |
93+
| <a name="input_truefoundry_db_storage_iops"></a> [truefoundry\_db\_storage\_iops](#input\_truefoundry\_db\_storage\_iops) | Provisioned IOPS for the db | `number` | `0` | no |
9894
| <a name="input_truefoundry_db_storage_type"></a> [truefoundry\_db\_storage\_type](#input\_truefoundry\_db\_storage\_type) | Storage type for truefoundry db | `string` | `"gp3"` | no |
9995
| <a name="input_truefoundry_db_subnet_ids"></a> [truefoundry\_db\_subnet\_ids](#input\_truefoundry\_db\_subnet\_ids) | List of subnets where the RDS database will be deployed | `list(string)` | n/a | yes |
10096
| <a name="input_truefoundry_iam_role_enabled"></a> [truefoundry\_iam\_role\_enabled](#input\_truefoundry\_iam\_role\_enabled) | variable to enable/disable truefoundry iam role creation | `bool` | `true` | no |

iam-ecr.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ data "aws_iam_policy_document" "svcfoundry_access_to_ecr" {
4343
resource "aws_iam_policy" "svcfoundry_access_to_ecr" {
4444
count = var.truefoundry_iam_role_enabled ? 1 : 0
4545
name_prefix = "${local.svcfoundry_unique_name}-access-to-ecr"
46-
description = "ECR access for ${var.svcfoundry_name} on ${var.cluster_name}"
46+
description = "ECR access for ${var.svcfoundry_k8s_service_account} on ${var.cluster_name}"
4747
policy = data.aws_iam_policy_document.svcfoundry_access_to_ecr.json
4848
tags = local.tags
4949
}

iam-rds.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ data "aws_iam_policy_document" "truefoundry_db_iam_auth_policy_document" {
1515
resource "aws_iam_policy" "truefoundry_db_iam_auth_policy" {
1616
count = var.truefoundry_iam_role_enabled ? 1 : 0
1717
name_prefix = "${local.svcfoundry_unique_name}-db-iam-auth-policy"
18-
description = "IAM based authentication policy for ${var.svcfoundry_name} and ${var.mlfoundry_name} in cluster ${var.cluster_name}"
18+
description = "IAM based authentication policy for ${var.svcfoundry_k8s_service_account} and ${var.mlfoundry_k8s_service_account} in cluster ${var.cluster_name}"
1919
policy = data.aws_iam_policy_document.truefoundry_db_iam_auth_policy_document.json
2020
tags = local.tags
2121
}

iam-sa.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module "truefoundry_oidc_iam" {
1515
"system:serviceaccount:${var.truefoundry_k8s_namespace}:${var.truefoundry_service_account}",
1616
]
1717

18-
role_description = "Truefoundry IAM role for ${var.svcfoundry_name}, ${var.mlfoundry_name} and ${var.tfy_workflow_admin_name} in cluster ${var.cluster_name}"
18+
role_description = "Truefoundry IAM role for ${var.svcfoundry_k8s_service_account}, ${var.mlfoundry_k8s_service_account} and ${var.tfy_workflow_admin_k8s_service_account} in cluster ${var.cluster_name}"
1919
role_policy_arns = [
2020
aws_iam_policy.truefoundry_bucket_policy[0].arn,
2121
aws_iam_policy.svcfoundry_access_to_ssm[0].arn,

iam-ssm.tf

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ data "aws_iam_policy_document" "svcfoundry_access_to_ssm" {
1515
"ssm:GetParameter",
1616
]
1717
resources = [
18-
"arn:aws:ssm:${var.aws_region}:${var.aws_account_id}:parameter/${var.account_name}/${var.svcfoundry_name}/*",
19-
"arn:aws:ssm:${var.aws_region}:${var.aws_account_id}:parameter/${var.account_name}/${aws_db_instance.truefoundry_db[0].id}/*",
20-
"arn:aws:ssm:${var.aws_region}:${var.aws_account_id}:parameter/${var.account_name}/truefoundry/dockerhub/IMAGE_PULL_CREDENTIALS",
18+
"arn:aws:ssm:${var.aws_region}:${var.aws_account_id}:parameter/*/${var.svcfoundry_k8s_service_account}/*",
19+
"arn:aws:ssm:${var.aws_region}:${var.aws_account_id}:parameter/*/${aws_db_instance.truefoundry_db[0].id}/*",
20+
"arn:aws:ssm:${var.aws_region}:${var.aws_account_id}:parameter/*/truefoundry/dockerhub/IMAGE_PULL_CREDENTIALS",
2121
]
2222
}
2323
}
2424

2525
resource "aws_iam_policy" "svcfoundry_access_to_ssm" {
2626
count = var.truefoundry_iam_role_enabled ? 1 : 0
2727
name_prefix = "${local.svcfoundry_unique_name}-access-to-ssm"
28-
description = "SSM read access for ${var.svcfoundry_name} on ${var.cluster_name}"
28+
description = "SSM read access for ${var.svcfoundry_k8s_service_account} on ${var.cluster_name}"
2929
policy = data.aws_iam_policy_document.svcfoundry_access_to_ssm.json
3030
tags = local.tags
3131
}
@@ -51,7 +51,7 @@ data "aws_iam_policy_document" "svcfoundry_access_to_multitenant_ssm" {
5151
resource "aws_iam_policy" "svcfoundry_access_to_multitenant_ssm" {
5252
count = var.truefoundry_iam_role_enabled ? 1 : 0
5353
name_prefix = "${local.svcfoundry_unique_name}-access-to-multitenant-ssm"
54-
description = "SSM read access for ${var.svcfoundry_name} to all multitenant params on ${var.cluster_name}"
54+
description = "SSM read access for ${var.svcfoundry_k8s_service_account} to all multitenant params on ${var.cluster_name}"
5555
policy = data.aws_iam_policy_document.svcfoundry_access_to_multitenant_ssm.json
5656
tags = local.tags
5757
}

locals.tf

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ locals {
55

66
truefoundry_db_unique_name = var.truefoundry_db_enable_override ? var.truefoundry_db_override_name : "${var.cluster_name}-db"
77

8-
svcfoundry_unique_name = "${var.cluster_name}-${var.svcfoundry_name}"
9-
mlfoundry_unique_name = "${var.cluster_name}-${var.mlfoundry_name}"
8+
svcfoundry_unique_name = "${var.cluster_name}-${var.svcfoundry_k8s_service_account}"
9+
mlfoundry_unique_name = "${var.cluster_name}-${var.mlfoundry_k8s_service_account}"
1010

1111
truefoundry_db_port = 5432
1212
truefoundry_db_master_username = "root"

variables.tf

+10-19
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ variable "aws_account_id" {
2121
type = string
2222
}
2323

24-
variable "account_name" {
25-
description = "AWS Account Name"
26-
type = string
27-
}
28-
2924
variable "tags" {
3025
type = map(string)
3126
default = {}
@@ -76,6 +71,7 @@ variable "truefoundry_db_subnet_ids" {
7671
variable "truefoundry_db_instance_class" {
7772
type = string
7873
description = "Instance class for RDS"
74+
default = "db.t3.medium"
7975
}
8076

8177
variable "truefoundry_db_publicly_accessible" {
@@ -99,6 +95,7 @@ variable "truefoundry_db_allocated_storage" {
9995
variable "truefoundry_db_max_allocated_storage" {
10096
type = string
10197
description = "Max allowed storage for RDS when autoscaling is enabled"
98+
default = "30"
10299
}
103100

104101
variable "truefoundry_db_storage_type" {
@@ -110,6 +107,7 @@ variable "truefoundry_db_storage_type" {
110107
variable "truefoundry_db_storage_iops" {
111108
type = number
112109
description = "Provisioned IOPS for the db"
110+
default = 0
113111
}
114112

115113
variable "truefoundry_db_skip_final_snapshot" {
@@ -138,6 +136,7 @@ variable "truefoundry_db_enable_override" {
138136
type = bool
139137
default = false
140138
}
139+
141140
variable "truefoundry_db_override_name" {
142141
description = "Override name for truefoundry db.This is the name of the RDS resources in AWS . truefoundry_db_enable_override must be set true"
143142
type = string
@@ -261,57 +260,49 @@ variable "truefoundry_s3_cors_origins" {
261260
##################################################################################
262261
## MLfoundry service account
263262
##################################################################################
264-
variable "mlfoundry_name" {
265-
description = "Name of mlfoundry deployment"
266-
type = string
267-
}
268263

269264
variable "mlfoundry_k8s_service_account" {
270265
description = "The k8s mlfoundry service account name"
271266
type = string
267+
default = "mlfoundry-server"
272268
}
273269

274270
variable "mlfoundry_k8s_namespace" {
275271
description = "The k8s mlfoundry namespace"
276272
type = string
273+
default = "truefoundry"
277274
}
278275

279276
##################################################################################
280277
## Servicefoundry service account
281278
##################################################################################
282279

283-
variable "svcfoundry_name" {
284-
description = "Name of svcfoundry deployment"
285-
type = string
286-
}
287-
288280
variable "svcfoundry_k8s_service_account" {
289281
description = "The k8s svcfoundry service account name"
290282
type = string
283+
default = "servicefoundry-server"
291284
}
292285

293286
variable "svcfoundry_k8s_namespace" {
294287
description = "The k8s svcfoundry namespace"
295288
type = string
289+
default = "truefoundry"
296290
}
297291

298292
##################################################################################
299293
## TFy workflow admin service account
300294
##################################################################################
301295

302-
variable "tfy_workflow_admin_name" {
303-
description = "Name of tfy workflow admin deployment"
304-
type = string
305-
}
306-
307296
variable "tfy_workflow_admin_k8s_service_account" {
308297
description = "The k8s tfy workflow admin service account name"
309298
type = string
299+
default = "tfy-workflow-admin"
310300
}
311301

312302
variable "tfy_workflow_admin_k8s_namespace" {
313303
description = "The k8s tfy workflow admin namespace"
314304
type = string
305+
default = "truefoundry"
315306
}
316307

317308
##################################################################################

0 commit comments

Comments
 (0)