Page MenuHomeDevCentral

D4204.diff
No OneTemporary

D4204.diff

diff --git a/terraform/ovh-ops-backups/object_storage.tf b/terraform/ovh-ops-backups/modules/object_storage_container/main.tf
copy from terraform/ovh-ops-backups/object_storage.tf
copy to terraform/ovh-ops-backups/modules/object_storage_container/main.tf
--- a/terraform/ovh-ops-backups/object_storage.tf
+++ b/terraform/ovh-ops-backups/modules/object_storage_container/main.tf
@@ -3,15 +3,14 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Project: Nasqueron
# License: BSD-2-Clause
-# Description: Create object storage bucket for backups.
+# Description: Create object storage container for backups.
# Provider: OVH
-# Target: OVH Public Cloud > Nasqueron :: Operations :: Backups
# -------------------------------------------------------------
-resource "ovh_cloud_project_storage" "storage_backups" {
- service_name = ovh_cloud_project.nasqueron-ops-backups.id
- name = var.bucket
- region_name = "EU-WEST-PAR"
+resource "ovh_cloud_project_storage" "container" {
+ service_name = var.service_name
+ name = var.container_name
+ region_name = var.region_name
# S3 Object Lock requires versioning to be enabled.
versioning = {
@@ -29,12 +28,7 @@
}
}
- tags = {
- group = "operations"
- role = "backup"
- encryption = "client-side"
- privacy_level = "sensible"
- }
+ tags = var.tags
lifecycle {
prevent_destroy = true
diff --git a/terraform/ovh-ops-backups/modules/object_storage_container/outputs.tf b/terraform/ovh-ops-backups/modules/object_storage_container/outputs.tf
new file mode 100644
--- /dev/null
+++ b/terraform/ovh-ops-backups/modules/object_storage_container/outputs.tf
@@ -0,0 +1,16 @@
+# -------------------------------------------------------------
+# Terraform :: OVH :: Public cloud :: ops-backups :: Storage
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Project: Nasqueron
+# License: BSD-2-Clause
+# Description: Create object storage bucket for backups.
+# Provider: OVH
+# -------------------------------------------------------------
+
+output "container" {
+ description = "Object container created"
+ value = {
+ name = ovh_cloud_project_storage.container.name
+ id = ovh_cloud_project_storage.container.id
+ }
+}
diff --git a/terraform/ovh-ops-backups/modules/object_storage_container/providers.tf b/terraform/ovh-ops-backups/modules/object_storage_container/providers.tf
new file mode 100644
--- /dev/null
+++ b/terraform/ovh-ops-backups/modules/object_storage_container/providers.tf
@@ -0,0 +1,21 @@
+# -------------------------------------------------------------
+# Terraform :: OVH :: Public cloud :: ops-backups :: Storage
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Project: Nasqueron
+# License: BSD-2-Clause
+# Description: Create object storage bucket for backups.
+# Provider: OVH
+# -------------------------------------------------------------
+
+terraform {
+ required_version = ">= 0.13"
+
+ required_providers {
+ ovh = {
+ source = "ovh/ovh"
+
+ # For object lock support
+ version = ">= 2.11.0"
+ }
+ }
+}
diff --git a/terraform/ovh-ops-backups/modules/object_storage_container/variables.tf b/terraform/ovh-ops-backups/modules/object_storage_container/variables.tf
new file mode 100644
--- /dev/null
+++ b/terraform/ovh-ops-backups/modules/object_storage_container/variables.tf
@@ -0,0 +1,29 @@
+# -------------------------------------------------------------
+# Terraform :: OVH :: Public cloud :: ops-backups :: Storage
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Project: Nasqueron
+# License: BSD-2-Clause
+# Description: Create object storage bucket for backups.
+# Provider: OVH
+# -------------------------------------------------------------
+
+variable "service_name" {
+ description = "The OVH Cloud Project ID / Service Name."
+ type = string
+}
+
+variable "container_name" {
+ description = "The name of the object container."
+ type = string
+}
+
+variable "region_name" {
+ description = "The OVH region where the bucket will be created."
+ type = string
+ default = "EU-WEST-PAR"
+}
+
+variable "tags" {
+ description = "A map of tags to assign to the bucket."
+ type = map(string)
+}
diff --git a/terraform/ovh-ops-backups/object_storage.tf b/terraform/ovh-ops-backups/object_storage.tf
--- a/terraform/ovh-ops-backups/object_storage.tf
+++ b/terraform/ovh-ops-backups/object_storage.tf
@@ -8,35 +8,46 @@
# Target: OVH Public Cloud > Nasqueron :: Operations :: Backups
# -------------------------------------------------------------
-resource "ovh_cloud_project_storage" "storage_backups" {
- service_name = ovh_cloud_project.nasqueron-ops-backups.id
- name = var.bucket
- region_name = "EU-WEST-PAR"
-
- # S3 Object Lock requires versioning to be enabled.
- versioning = {
- status = "enabled"
- }
-
- object_lock = {
- status = "enabled"
- rule = {
- # Governance mode protects against malicious deletion.
- # To prune old backups, a separate admin credential with
- # s3:BypassGovernanceRetention permission must be used.
- mode = "governance"
- period = "P90D" # 90 days default retention
- }
- }
-
- tags = {
+locals {
+ default_tags = {
group = "operations"
role = "backup"
encryption = "client-side"
privacy_level = "sensible"
}
- lifecycle {
- prevent_destroy = true
+ backup_containers = {
+ amaris = {
+ container_name = "nasqueron-backups-amaris"
+ purpose = "Main backup container"
+
+ tags = local.default_tags
+ }
+
+ darak = {
+ container_name = "nasqueron-backups-darak"
+ purpose = "Dereckson backups"
+
+ tags = merge(local.default_tags, {
+ group = "user-dereckson"
+ })
+ }
+
+ vakor = {
+ container_name = "nasqueron-backups-vakor"
+ purpose = "Vault backups"
+
+ tags = local.default_tags
+ }
}
}
+
+module "backup" {
+ source = "./modules/object_storage_container"
+ for_each = local.backup_containers
+
+ service_name = ovh_cloud_project.nasqueron-ops-backups.id
+ container_name = each.value.container_name
+
+ tags = each.value.tags
+}

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 7, 04:00 (22 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4067761
Default Alt Text
D4204.diff (6 KB)

Event Timeline