63 lines
1.6 KiB
Terraform
63 lines
1.6 KiB
Terraform
resource "minio_s3_bucket" "state_terraform_s3" {
|
|
bucket = module.config.silo.state_bucket
|
|
acl = "private"
|
|
|
|
lifecycle {
|
|
prevent_destroy = true
|
|
}
|
|
}
|
|
|
|
resource "minio_s3_bucket_versioning" "state_terraform_s3" {
|
|
bucket = minio_s3_bucket.state_terraform_s3.bucket
|
|
|
|
versioning_configuration {
|
|
status = "Enabled"
|
|
}
|
|
}
|
|
|
|
resource "minio_ilm_policy" "admin_policy" {
|
|
bucket = minio_s3_bucket.state_terraform_s3.bucket
|
|
|
|
rule {
|
|
id = "clean-rule-1"
|
|
status = "Enabled"
|
|
noncurrent_expiration {
|
|
days = "90d"
|
|
}
|
|
expired_object_delete_marker = true
|
|
abort_incomplete_multipart_upload {
|
|
days_after_initiation = "6d"
|
|
}
|
|
}
|
|
}
|
|
|
|
module "bucket" {
|
|
source = "../modules/bucket"
|
|
for_each = module.config.buckets
|
|
name = each.key
|
|
versioning = each.value.versioning
|
|
noncurrent_days = each.value.noncurrent_days
|
|
expire_days = each.value.expire_days
|
|
}
|
|
|
|
module "bucket_access" {
|
|
source = "../modules/bucket-access"
|
|
for_each = module.config.service_buckets
|
|
name = each.key
|
|
read_write = [for bucket in each.value.read_write : module.bucket[bucket].name]
|
|
read_only = [for bucket in each.value.read_only : module.bucket[bucket].name]
|
|
}
|
|
|
|
resource "vault_kv_secret_v2" "s3" {
|
|
for_each = module.bucket_access
|
|
mount = module.config.vault.mount
|
|
name = "${each.key}/s3"
|
|
delete_all_versions = true
|
|
data_json = jsonencode({
|
|
endpoint = module.config.silo.internal_endpoint
|
|
buckets = join(",", each.value.buckets)
|
|
access_key = each.value.access_key
|
|
secret_key = each.value.secret_key
|
|
})
|
|
}
|