Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: Use defaultBucket #312

Merged
merged 13 commits into from
Jan 14, 2025
Merged
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,13 @@ This can be donw by adding the following policy document.
}
```

### 6.x -> 7.x

`v7` changes how the module references storage from using terraform's `count` to always creating a "defaultBucket" which can be overidden latter or but providing some initial bucket.

We are considering this a major change because of the terraform `moved` block which migrates the resource. After moving to a `v7` applying an earlier version of the module may result in terraform deleting your bucket.

dacbd marked this conversation as resolved.
Show resolved Hide resolved
removed the `create_bucket` var due to the above.
### Upgrading from 2.x -> 3.x

- No changes required by you
Expand Down
4 changes: 2 additions & 2 deletions data.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
data "aws_s3_bucket" "file_storage" {
depends_on = [module.file_storage]
bucket = local.bucket_name
bucket = local.main_bucket_name
}

data "aws_sqs_queue" "file_storage" {
Expand All @@ -9,4 +9,4 @@ data "aws_sqs_queue" "file_storage" {
name = local.bucket_queue_name
}

data "aws_region" "current" {}
data "aws_region" "current" {}
18 changes: 11 additions & 7 deletions examples/byo-vpc-eks-sql-redis/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ provider "aws" {
}
data "aws_s3_bucket" "file_storage" {
depends_on = [module.file_storage]
bucket = local.bucket_name
bucket = var.bucket_name
}

data "aws_sqs_queue" "file_storage" {
Expand Down Expand Up @@ -61,7 +61,6 @@ locals {
}

module "file_storage" {
count = var.create_bucket ? 1 : 0
source = "../../modules/file_storage"

create_queue = !local.use_internal_queue
Expand All @@ -72,8 +71,7 @@ module "file_storage" {
}

locals {
bucket_name = local.use_external_bucket ? var.bucket_name : module.file_storage.0.bucket_name
bucket_queue_name = local.use_internal_queue ? null : module.file_storage.0.bucket_queue_name
bucket_queue_name = local.use_internal_queue ? null : module.file_storage.bucket_queue_name
}

locals {
Expand Down Expand Up @@ -176,11 +174,17 @@ module "wandb" {

extraEnv = var.other_wandb_env

bucket = {
bucket = var.bucket_name != "" ? {
provider = "s3"
name = local.bucket_name
name = var.bucket_name
region = data.aws_s3_bucket.file_storage.region
kmsKey = local.use_external_bucket ? var.bucket_kms_key_arn : local.kms_key_arn
kmsKey = var.bucket_kms_key_arn
} : null
defaultBucket = {
provider = "s3"
name = module.file_storage.bucket_name
region = module.file_storage.bucket_region
kmsKey = module.kms.key.arn
}

mysql = {
Expand Down
25 changes: 18 additions & 7 deletions examples/byo-vpc-sql/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ provider "aws" {
}
data "aws_s3_bucket" "file_storage" {
depends_on = [module.file_storage]
bucket = local.bucket_name
bucket = var.bucket_name
}

data "aws_sqs_queue" "file_storage" {
Expand Down Expand Up @@ -102,7 +102,6 @@ locals {
}

module "file_storage" {
count = var.create_bucket ? 1 : 0
source = "../../modules/file_storage"

create_queue = !local.use_internal_queue
Expand All @@ -113,7 +112,6 @@ module "file_storage" {
}

locals {
bucket_name = local.use_external_bucket ? var.bucket_name : module.file_storage.0.bucket_name
bucket_queue_name = local.use_internal_queue ? null : module.file_storage.0.bucket_queue_name
}

Expand Down Expand Up @@ -167,7 +165,7 @@ module "app_eks" {
map_users = var.kubernetes_map_users

bucket_kms_key_arns = local.use_external_bucket ? var.bucket_kms_key_arn : local.kms_key_arn
bucket_arn = data.aws_s3_bucket.file_storage.arn
bucket_arn = var.bucket_name == "" ? module.file_storage.bucket_arn : data.aws_s3_bucket.file_storage.arn
bucket_sqs_queue_arn = local.use_internal_queue ? null : data.aws_sqs_queue.file_storage.0.arn

network_id = local.network_id
Expand All @@ -191,6 +189,12 @@ module "app_eks" {
system_reserved_pid = var.system_reserved_pid

aws_loadbalancer_controller_tags = var.aws_loadbalancer_controller_tags

eks_addon_efs_csi_driver_version = var.eks_addon_efs_csi_driver_version
eks_addon_ebs_csi_driver_version = var.eks_addon_ebs_csi_driver_version
eks_addon_coredns_version = var.eks_addon_coredns_version
eks_addon_kube_proxy_version = var.eks_addon_kube_proxy_version
eks_addon_vpc_cni_version = var.eks_addon_vpc_cni_version
}

locals {
Expand Down Expand Up @@ -281,11 +285,18 @@ module "wandb" {

extraEnv = var.other_wandb_env

bucket = {
bucket = var.bucket_name != "" ? {
provider = "s3"
name = local.bucket_name
name = var.bucket_name
region = data.aws_s3_bucket.file_storage.region
kmsKey = local.use_external_bucket ? var.bucket_kms_key_arn : local.kms_key_arn
kmsKey = var.bucket_kms_key_arn
} : null

defaultBucket = {
provider = "s3"
name = module.file_storage.bucket_name
region = module.file_storage.bucket_region
kmsKey = module.kms.key.arn
}

mysql = {
Expand Down
45 changes: 41 additions & 4 deletions examples/byo-vpc-sql/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,41 @@ variable "aws_loadbalancer_controller_tags" {
default = {}
}


##########################################
# EKS Cluster Addons #
##########################################
variable "eks_addon_efs_csi_driver_version" {
description = "The version of the EFS CSI driver to install. Check the docs for more information about the compatibility https://docs.aws.amazon.com/eks/latest/userguide/vpc-add-on-update.html."
type = string
default = "v2.0.7-eksbuild.1"
}

variable "eks_addon_ebs_csi_driver_version" {
description = "The version of the EBS CSI driver to install. Check the docs for more information about the compatibility https://docs.aws.amazon.com/eks/latest/userguide/vpc-add-on-update.html."
type = string
default = "v1.35.0-eksbuild.1"
}

variable "eks_addon_coredns_version" {
description = "The version of the CoreDNS addon to install. Check the docs for more information about the compatibility https://docs.aws.amazon.com/eks/latest/userguide/vpc-add-on-update.html."
type = string
default = "v1.11.3-eksbuild.1"
}

variable "eks_addon_kube_proxy_version" {
description = "The version of the kube-proxy addon to install. Check the docs for more information about the compatibility https://docs.aws.amazon.com/eks/latest/userguide/vpc-add-on-update.html."
type = string
default = "v1.29.7-eksbuild.9"
}

variable "eks_addon_vpc_cni_version" {
description = "The version of the VPC CNI addon to install. Check the docs for more information about the compatibility https://docs.aws.amazon.com/eks/latest/userguide/vpc-add-on-update.html.s"
type = string
default = "v1.18.3-eksbuild.3"
}


##########################################
# External Bucket #
##########################################
Expand All @@ -419,12 +454,14 @@ variable "bucket_name" {
}

variable "bucket_kms_key_arn" {
type = string
description = "The Amazon Resource Name of the KMS key with which S3 storage bucket objects will be encrypted."
default = ""
type = string
default = ""
validation {
condition = can(regex("^arn:aws:kms:[a-z0-9-]+:[0-9]+:key/[a-zA-Z0-9-_]+$", var.bucket_kms_key_arn)) || var.bucket_kms_key_arn == ""
error_message = "Invalid value for bucket kms ARN"
}
}


##########################################
# Redis #
##########################################
Expand Down
22 changes: 16 additions & 6 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ locals {
}

module "file_storage" {
count = var.create_bucket ? 1 : 0
source = "./modules/file_storage"
namespace = var.namespace
create_queue = !local.use_internal_queue
Expand All @@ -39,8 +38,8 @@ module "file_storage" {
}

locals {
bucket_name = local.use_external_bucket ? var.bucket_name : module.file_storage[0].bucket_name
bucket_queue_name = local.use_internal_queue ? null : module.file_storage[0].bucket_queue_name
bucket_queue_name = local.use_internal_queue ? null : module.file_storage.bucket_queue_name
main_bucket_name = var.bucket_name != "" ? var.bucket_name : module.file_storage.bucket_name
}

module "networking" {
Expand Down Expand Up @@ -272,12 +271,18 @@ module "wandb" {
cloudProvider = "aws"
extraEnv = var.other_wandb_env

bucket = {
bucket = var.bucket_name != "" ? {
provider = "s3"
name = local.bucket_name
name = var.bucket_name
path = var.bucket_path
region = data.aws_s3_bucket.file_storage.region
kmsKey = local.s3_kms_key_arn
kmsKey = var.bucket_kms_key_arn
} : {}
defaultBucket = {
provider = "s3"
name = module.file_storage.bucket_name
region = module.file_storage.bucket_region
kmsKey = module.kms.key.arn
}

mysql = {
Expand Down Expand Up @@ -374,3 +379,8 @@ module "wandb" {
}
}
}

moved {
from = module.file_storage[0]
to = module.file_storage
}
2 changes: 1 addition & 1 deletion outputs.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
output "bucket_name" {
value = local.bucket_name
value = local.main_bucket_name
}
output "bucket_path" {
value = var.bucket_path
Expand Down
9 changes: 3 additions & 6 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,9 @@ variable "aws_loadbalancer_controller_tags" {
type = map(string)
default = {}
}

##########################################
# EKS Cluster Addons #
##########################################
variable "eks_addon_efs_csi_driver_version" {
description = "The version of the EFS CSI driver to install. Check the docs for more information about the compatibility https://docs.aws.amazon.com/eks/latest/userguide/vpc-add-on-update.html."
type = string
Expand Down Expand Up @@ -435,11 +437,6 @@ variable "eks_addon_vpc_cni_version" {
##########################################
# Most users will not need these settings. They are ment for users who want a
# bucket and sqs that are in a different account.
variable "create_bucket" {
type = bool
default = true
}

variable "bucket_name" {
type = string
default = ""
Expand Down
Loading