From 0790544fbe0d49ef3af5ac4435242d9fad395904 Mon Sep 17 00:00:00 2001 From: ankush-sqops Date: Wed, 23 Oct 2024 18:40:34 +0530 Subject: [PATCH 1/9] Release 1.1.7 (#18) * added depends_on variable on helm restore release sometime it throws an error stating 'release not found. * added depends_on in backup helm --------- Co-authored-by: Aman <146931382+amanravi-squareops@users.noreply.github.com> --- modules/db-backup-restore/main.tf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/db-backup-restore/main.tf b/modules/db-backup-restore/main.tf index 059e35d..d553ea6 100644 --- a/modules/db-backup-restore/main.tf +++ b/modules/db-backup-restore/main.tf @@ -8,6 +8,7 @@ resource "kubernetes_namespace" "mysqldb" { resource "helm_release" "mysqldb_backup" { count = var.mysqldb_backup_enabled ? 1 : 0 + depends_on = [kubernetes_namespace.mysqldb] name = "mysqldb-backup" chart = "${path.module}/../../modules/db-backup-restore/backup" timeout = 600 @@ -35,6 +36,7 @@ resource "helm_release" "mysqldb_backup" { ## DB dump restore resource "helm_release" "mysqldb_restore" { count = var.mysqldb_restore_enabled ? 1 : 0 + depends_on = [kubernetes_namespace.mysqldb] name = "mysqldb-restore" chart = "${path.module}/../../modules/db-backup-restore/restore" timeout = 600 From 92af4cbbb1e93b08c52c528d7c458a176d08b1b6 Mon Sep 17 00:00:00 2001 From: Aman <146931382+amanravi-squareops@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:10:09 +0530 Subject: [PATCH 2/9] Update job.yaml --- modules/db-backup-restore/restore/templates/job.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/db-backup-restore/restore/templates/job.yaml b/modules/db-backup-restore/restore/templates/job.yaml index 18411aa..64eba94 100644 --- a/modules/db-backup-restore/restore/templates/job.yaml +++ b/modules/db-backup-restore/restore/templates/job.yaml @@ -9,7 +9,7 @@ spec: serviceAccountName: sa-mysql-restore containers: - name: restore-mysqldb - image: squareops/mysqldb-restore:v5 + image: squareops01/rds-mysql-restore:v1 imagePullPolicy: Always env: - name: MYSQL_HOST From 65c4acefae74bee9d75e3a94bc32eef8e3b8616b Mon Sep 17 00:00:00 2001 From: Aman <146931382+amanravi-squareops@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:10:42 +0530 Subject: [PATCH 3/9] Update cronjob.yaml --- modules/db-backup-restore/backup/templates/cronjob.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/db-backup-restore/backup/templates/cronjob.yaml b/modules/db-backup-restore/backup/templates/cronjob.yaml index bf41c83..1950b6e 100644 --- a/modules/db-backup-restore/backup/templates/cronjob.yaml +++ b/modules/db-backup-restore/backup/templates/cronjob.yaml @@ -20,7 +20,7 @@ spec: serviceAccountName: sa-mysql-backup containers: - name: backup-mysqldb - image: amanmall/mysqldb-backup:v1 + image: squareops01/rds-mysql-backup:v1 imagePullPolicy: Always env: - name: MYSQL_HOST From 7f3e53bb979f54e57903447addae9f2f86970962 Mon Sep 17 00:00:00 2001 From: Aman <146931382+amanravi-squareops@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:15:39 +0530 Subject: [PATCH 4/9] Update main.tf --- examples/complete-mysql/main.tf | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/complete-mysql/main.tf b/examples/complete-mysql/main.tf index 6a4cae3..12a8152 100644 --- a/examples/complete-mysql/main.tf +++ b/examples/complete-mysql/main.tf @@ -141,7 +141,6 @@ module "rds-mysql" { bucket_provider_type = "s3" mysqldb_backup_config = { mysql_database_name = "" - s3_bucket_region = "us-west-1" cron_for_full_backup = "0 */6 * * *" bucket_uri = "s3://mysql-rds-backup-store/" } @@ -149,6 +148,5 @@ module "rds-mysql" { mysqldb_restore_config = { bucket_uri = "s3://mysql-rds-backup-store/mysqldump_20240723_074237.zip" file_name = "mysqldump_20240723_074237.zip" - s3_bucket_region = "us-west-1" } } From b4c898e94ba926ea6b9fc4e825495fde05ae3ebf Mon Sep 17 00:00:00 2001 From: Aman <146931382+amanravi-squareops@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:16:48 +0530 Subject: [PATCH 5/9] Update cronjob.yaml --- modules/db-backup-restore/backup/templates/cronjob.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/db-backup-restore/backup/templates/cronjob.yaml b/modules/db-backup-restore/backup/templates/cronjob.yaml index 1950b6e..ca2450f 100644 --- a/modules/db-backup-restore/backup/templates/cronjob.yaml +++ b/modules/db-backup-restore/backup/templates/cronjob.yaml @@ -33,8 +33,4 @@ spec: value: {{ .Values.backup.database_password }} - name: MYSQL_BUCKET_URI value: {{ .Values.backup.bucket_uri }} - - name: BUCKET_PROVIDER - value: {{ .Values.backup.provider }} - - name: AWS_DEFAULT_REGION - value: {{ .Values.backup.aws_default_region}} resources: {{ .Values.backupjob.resources | toYaml | nindent 12 }} From a3a564034b644c3f6d182a8e6d235c65702b3477 Mon Sep 17 00:00:00 2001 From: Aman <146931382+amanravi-squareops@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:17:23 +0530 Subject: [PATCH 6/9] Update job.yaml --- modules/db-backup-restore/restore/templates/job.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/db-backup-restore/restore/templates/job.yaml b/modules/db-backup-restore/restore/templates/job.yaml index 64eba94..36cbebf 100644 --- a/modules/db-backup-restore/restore/templates/job.yaml +++ b/modules/db-backup-restore/restore/templates/job.yaml @@ -27,10 +27,6 @@ spec: key: MYSQL_BUCKET_URI - name: RESTORE_FILE_NAME value: {{ .Values.restore.file_name}} - - name: RESTORE_FROM - value: {{ .Values.restore.bucket_provider}} - - name: AWS_DEFAULT_REGION - value: {{ .Values.restore.aws_default_region}} resources: {{ .Values.restorejob.resources | toYaml | nindent 12 }} initContainers: - name: grant-system-variable-admin From 77a5d86852614c9abaccc05cf17094186431be86 Mon Sep 17 00:00:00 2001 From: Aman <146931382+amanravi-squareops@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:34:23 +0530 Subject: [PATCH 7/9] Update values.yaml --- helm/values/restore/values.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/helm/values/restore/values.yaml b/helm/values/restore/values.yaml index 16af1f6..1ecbaa1 100644 --- a/helm/values/restore/values.yaml +++ b/helm/values/restore/values.yaml @@ -6,6 +6,7 @@ restore: database_endpoint: "${db_endpoint}" database_password: "${db_password}" database_user: "${db_username}" + provider: "${bucket_provider_type}" auth: username: "${custom_user_username}" From 8bcf1041cc73c1d7826fc1a306fdc20689aa7628 Mon Sep 17 00:00:00 2001 From: Aman <146931382+amanravi-squareops@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:35:11 +0530 Subject: [PATCH 8/9] Update job.yaml --- modules/db-backup-restore/restore/templates/job.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/db-backup-restore/restore/templates/job.yaml b/modules/db-backup-restore/restore/templates/job.yaml index 36cbebf..dd626bd 100644 --- a/modules/db-backup-restore/restore/templates/job.yaml +++ b/modules/db-backup-restore/restore/templates/job.yaml @@ -26,7 +26,9 @@ spec: name: mysql-bucket-uri-restore key: MYSQL_BUCKET_URI - name: RESTORE_FILE_NAME - value: {{ .Values.restore.file_name}} + value: {{ .Values.restore.file_name} + - name: RESTORE_FROM + value: {{ .Values.restore.provider }} resources: {{ .Values.restorejob.resources | toYaml | nindent 12 }} initContainers: - name: grant-system-variable-admin From 30f6aa617873532a9284b50f438188393ee89f40 Mon Sep 17 00:00:00 2001 From: amanravi-squareops Date: Wed, 5 Mar 2025 17:44:40 +0530 Subject: [PATCH 9/9] run pre-commit checks --- README.md | 9 +++ examples/complete-mysql/README.md | 4 +- examples/complete-mysql/helm/values.yaml | 2 +- examples/complete-mysql/main.tf | 20 ++++--- helm/values/backup/values.yaml | 1 - helm/values/restore/values.yaml | 2 - main.tf | 12 ++-- modules/db-backup-restore/README.md | 57 +++++++++++++++++++ .../backup/templates/cronjob.yaml | 2 + modules/db-backup-restore/main.tf | 6 -- .../restore/templates/job.yaml | 2 +- modules/db-backup-restore/roles.tf | 10 ++-- modules/db-backup-restore/variables.tf | 4 +- variables.tf | 2 +- 14 files changed, 97 insertions(+), 36 deletions(-) create mode 100644 modules/db-backup-restore/README.md diff --git a/README.md b/README.md index 58db76a..0bee3f2 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,7 @@ Security scanning is graciously provided by Prowler. Proowler is the leading ful | Name | Source | Version | |------|--------|---------| +| [backup\_restore](#module\_backup\_restore) | ./modules/db-backup-restore | n/a | | [cw\_sns\_slack](#module\_cw\_sns\_slack) | ./lambda | n/a | | [db](#module\_db) | terraform-aws-modules/rds/aws | 6.1.0 | | [db\_replica](#module\_db\_replica) | terraform-aws-modules/rds/aws | 6.1.0 | @@ -152,9 +153,12 @@ Security scanning is graciously provided by Prowler. Proowler is the leading ful | [availability\_zone](#input\_availability\_zone) | The Availability Zone of the RDS instance | `string` | `null` | no | | [backup\_retention\_period](#input\_backup\_retention\_period) | The number of days to retain backups for | `number` | `5` | no | | [backup\_window](#input\_backup\_window) | The time window during which database backups are performed | `string` | `"03:00-06:00"` | no | +| [bucket\_provider\_type](#input\_bucket\_provider\_type) | Choose what type of provider you want (s3, gcs) | `string` | `"s3"` | no | | [cloudwatch\_log\_group\_retention\_in\_days](#input\_cloudwatch\_log\_group\_retention\_in\_days) | The number of days to retain CloudWatch logs for the database instance | `number` | `7` | no | | [cloudwatch\_metric\_alarms\_enabled](#input\_cloudwatch\_metric\_alarms\_enabled) | Boolean flag to enable/disable CloudWatch metrics alarms | `bool` | `false` | no | +| [cluster\_name](#input\_cluster\_name) | Specifies the name of the EKS cluster to deploy the MySQL application on. | `string` | `""` | no | | [create\_db\_subnet\_group](#input\_create\_db\_subnet\_group) | Whether to create a database subnet group | `bool` | `true` | no | +| [create\_namespace](#input\_create\_namespace) | Specify whether or not to create the namespace if it does not already exist. Set it to true to create the namespace. | `string` | `false` | no | | [create\_random\_password](#input\_create\_random\_password) | Whether to create a random password for the primary database cluster | `bool` | `false` | no | | [custom\_user\_password](#input\_custom\_user\_password) | Custom password for the RDS master user | `string` | `""` | no | | [cw\_sns\_topic\_arn](#input\_cw\_sns\_topic\_arn) | The username to use when sending notifications to Slack. | `string` | `""` | no | @@ -177,7 +181,12 @@ Security scanning is graciously provided by Prowler. Proowler is the leading ful | [master\_username](#input\_master\_username) | The username for the RDS primary cluster | `string` | `""` | no | | [max\_allocated\_storage](#input\_max\_allocated\_storage) | The Maximum storage capacity for the database value after autoscaling | `number` | `null` | no | | [multi\_az](#input\_multi\_az) | Enables multi-AZ for disaster recovery | `bool` | `false` | no | +| [mysqldb\_backup\_config](#input\_mysqldb\_backup\_config) | configuration options for MySQL database backups. It includes properties such as the S3 bucket URI, the S3 bucket region, and the cron expression for full backups. | `map(string)` |
{
"bucket_uri": "",
"cron_for_full_backup": "",
"mysql_database_name": "",
"s3_bucket_region": ""
}
| no | +| [mysqldb\_backup\_enabled](#input\_mysqldb\_backup\_enabled) | Specifies whether to enable backups for MySQL database. | `bool` | `false` | no | +| [mysqldb\_restore\_config](#input\_mysqldb\_restore\_config) | Configuration options for restoring dump to the MySQL database. | `any` |
{
"bucket_uri": "",
"file_name": "",
"s3_bucket_region": ""
}
| no | +| [mysqldb\_restore\_enabled](#input\_mysqldb\_restore\_enabled) | Specifies whether to enable restoring dump to the MySQL database. | `bool` | `false` | no | | [name](#input\_name) | The name of the RDS instance | `string` | `""` | no | +| [namespace](#input\_namespace) | Name of the Kubernetes namespace where the MYSQL deployment will be deployed. | `string` | `"mysqldb"` | no | | [ok\_actions](#input\_ok\_actions) | The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN) | `list(string)` | `[]` | no | | [port](#input\_port) | The port for the database | `number` | `3306` | no | | [publicly\_accessible](#input\_publicly\_accessible) | Specifies whether the database is publicly accessible over the internet | `bool` | `false` | no | diff --git a/examples/complete-mysql/README.md b/examples/complete-mysql/README.md index c60d0d7..ccc8a68 100644 --- a/examples/complete-mysql/README.md +++ b/examples/complete-mysql/README.md @@ -26,7 +26,7 @@ This example will be very useful for users who are new to a module and want to q | Name | Source | Version | |------|--------|---------| | [kms](#module\_kms) | terraform-aws-modules/kms/aws | n/a | -| [rds-mysql](#module\_rds-mysql) | terraform-aws-modules/rds/aws | n/a | +| [rds-mysql](#module\_rds-mysql) | squareops/rds-mysql/aws | 1.1.7 | | [vpc](#module\_vpc) | squareops/vpc/aws | n/a | ## Resources @@ -34,6 +34,8 @@ This example will be very useful for users who are new to a module and want to q | Name | Type | |------|------| | [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | +| [aws_eks_cluster.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster) | data source | +| [aws_eks_cluster_auth.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster_auth) | data source | | [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source | ## Inputs diff --git a/examples/complete-mysql/helm/values.yaml b/examples/complete-mysql/helm/values.yaml index 7371739..bfd3de9 100644 --- a/examples/complete-mysql/helm/values.yaml +++ b/examples/complete-mysql/helm/values.yaml @@ -45,4 +45,4 @@ restorejob: cpu: 50m limits: memory: 200Mi - cpu: 100m \ No newline at end of file + cpu: 100m diff --git a/examples/complete-mysql/main.tf b/examples/complete-mysql/main.tf index 12a8152..7ef54d5 100644 --- a/examples/complete-mysql/main.tf +++ b/examples/complete-mysql/main.tf @@ -9,7 +9,8 @@ locals { mysql_instance_class = "db.t3.micro" mysql_engine_version = "8.0.32" major_engine_version = "8.0" - allowed_security_groups = ["sg-xxxxxxxxxxxxxx"] + cluster_name = "" + allowed_security_groups = ["sg-xxxxxxxxxxx"] vpc_cidr = "10.10.0.0/16" current_identity = data.aws_caller_identity.current.arn custom_user_password = "" @@ -101,6 +102,7 @@ module "vpc" { module "rds-mysql" { source = "squareops/rds-mysql/aws" + version = "1.1.7" name = local.name vpc_id = module.vpc.vpc_id family = local.family @@ -134,19 +136,19 @@ module "rds-mysql" { slack_channel = "mysql-notification" slack_webhook_url = "https://hooks/xxxxxxxx" custom_user_password = local.custom_user_password - cluster_name = "" # cluster name - namespace = local.namespace - create_namespace = local.create_namespace + cluster_name = local.cluster_name # cluster name + namespace = local.namespace # namespace + create_namespace = local.create_namespace # create namespace mysqldb_backup_enabled = false bucket_provider_type = "s3" mysqldb_backup_config = { - mysql_database_name = "" - cron_for_full_backup = "0 */6 * * *" - bucket_uri = "s3://mysql-rds-backup-store/" + mysql_database_name = "" # If you want to backup all databases, leave it empty or specify the database name + cron_for_full_backup = "*/2 * * * *" # Cron expression for full backup + bucket_uri = "s3://my-backup-dumps-databases/" # S3 bucket URI } mysqldb_restore_enabled = false mysqldb_restore_config = { - bucket_uri = "s3://mysql-rds-backup-store/mysqldump_20240723_074237.zip" - file_name = "mysqldump_20240723_074237.zip" + bucket_uri = "s3://my-backup-dumps-databases/mysqldump_20250303_141601.zip" # S3 bucket URI with the backup file + file_name = "mysqldump_20250303_141601.zip" # Backup file name } } diff --git a/helm/values/backup/values.yaml b/helm/values/backup/values.yaml index 676ffd8..71326d0 100644 --- a/helm/values/backup/values.yaml +++ b/helm/values/backup/values.yaml @@ -1,7 +1,6 @@ ## Enable Full backup backup: bucket_uri: ${bucket_uri} - aws_default_region: ${s3_bucket_region} cron_for_full_backup: "${cron_for_full_backup}" database_name: "${mysql_database_name}" database_endpoint: "${db_endpoint}" diff --git a/helm/values/restore/values.yaml b/helm/values/restore/values.yaml index 1ecbaa1..1543865 100644 --- a/helm/values/restore/values.yaml +++ b/helm/values/restore/values.yaml @@ -1,8 +1,6 @@ restore: file_name: ${file_name} bucket_uri: ${bucket_uri} - aws_default_region: ${s3_bucket_region} - bucket_provider : ${bucket_provider_type} database_endpoint: "${db_endpoint}" database_password: "${db_password}" database_user: "${db_username}" diff --git a/main.tf b/main.tf index a1fee2d..5021f6b 100644 --- a/main.tf +++ b/main.tf @@ -327,7 +327,6 @@ module "backup_restore" { db_username = module.db.db_instance_username db_password = var.custom_user_password != "" ? var.custom_user_password : nonsensitive(random_password.master[0].result) mysql_database_name = var.mysqldb_backup_config.mysql_database_name - s3_bucket_region = var.mysqldb_backup_config.s3_bucket_region cron_for_full_backup = var.mysqldb_backup_config.cron_for_full_backup bucket_uri = var.mysqldb_backup_config.bucket_uri db_endpoint = replace(module.db.db_instance_endpoint, ":3306", "") @@ -335,11 +334,10 @@ module "backup_restore" { mysqldb_restore_enabled = var.mysqldb_restore_enabled mysqldb_restore_config = { - db_endpoint = replace(module.db.db_instance_endpoint, ":3306", "") - db_username = module.db.db_instance_username - db_password = var.custom_user_password != "" ? var.custom_user_password : nonsensitive(random_password.master[0].result) - bucket_uri = var.mysqldb_restore_config.bucket_uri - file_name = var.mysqldb_restore_config.file_name - s3_bucket_region = var.mysqldb_restore_config.s3_bucket_region + db_endpoint = replace(module.db.db_instance_endpoint, ":3306", "") + db_username = module.db.db_instance_username + db_password = var.custom_user_password != "" ? var.custom_user_password : nonsensitive(random_password.master[0].result) + bucket_uri = var.mysqldb_restore_config.bucket_uri + file_name = var.mysqldb_restore_config.file_name } } diff --git a/modules/db-backup-restore/README.md b/modules/db-backup-restore/README.md new file mode 100644 index 0000000..91715f2 --- /dev/null +++ b/modules/db-backup-restore/README.md @@ -0,0 +1,57 @@ +# db-backup-restore + + +## Requirements + +No requirements. + +## Providers + +| Name | Version | +|------|---------| +| [aws](#provider\_aws) | n/a | +| [helm](#provider\_helm) | n/a | +| [kubernetes](#provider\_kubernetes) | n/a | + +## Modules + +No modules. + +## Resources + +| Name | Type | +|------|------| +| [aws_iam_role.mysql_backup_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | +| [aws_iam_role.mysql_restore_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | +| [helm_release.mysqldb_backup](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource | +| [helm_release.mysqldb_restore](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource | +| [kubernetes_namespace.mysqldb](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource | +| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | +| [aws_eks_cluster.kubernetes_cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster) | data source | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [azure\_container\_name](#input\_azure\_container\_name) | Azure container name | `string` | `""` | no | +| [azure\_storage\_account\_key](#input\_azure\_storage\_account\_key) | Azure storage account key | `string` | `""` | no | +| [azure\_storage\_account\_name](#input\_azure\_storage\_account\_name) | Azure storage account name | `string` | `""` | no | +| [bucket\_provider\_type](#input\_bucket\_provider\_type) | Choose what type of provider you want (s3, gcs) | `string` | `"s3"` | no | +| [cluster\_name](#input\_cluster\_name) | Specifies the name of the EKS cluster to deploy the MySQL application on. | `string` | `""` | no | +| [create\_namespace](#input\_create\_namespace) | Specify whether or not to create the namespace if it does not already exist. Set it to true to create the namespace. | `string` | `false` | no | +| [iam\_role\_arn\_backup](#input\_iam\_role\_arn\_backup) | IAM role ARN for backup (AWS) | `string` | `""` | no | +| [iam\_role\_arn\_restore](#input\_iam\_role\_arn\_restore) | IAM role ARN for restore (AWS) | `string` | `""` | no | +| [mysqldb\_backup\_config](#input\_mysqldb\_backup\_config) | configuration options for MySQL database backups. It includes properties such as the S3 bucket URI, the S3 bucket region, and the cron expression for full backups. | `map(string)` |
{
"bucket_uri": "",
"cron_for_full_backup": "",
"mysql_database_name": "",
"s3_bucket_region": ""
}
| no | +| [mysqldb\_backup\_enabled](#input\_mysqldb\_backup\_enabled) | Specifies whether to enable backups for MySQL database. | `bool` | `false` | no | +| [mysqldb\_permission](#input\_mysqldb\_permission) | access | `bool` | `false` | no | +| [mysqldb\_restore\_config](#input\_mysqldb\_restore\_config) | Configuration options for restoring dump to the MySQL database. | `any` |
{
"bucket_uri": "",
"file_name": "",
"s3_bucket_region": ""
}
| no | +| [mysqldb\_restore\_enabled](#input\_mysqldb\_restore\_enabled) | Specifies whether to enable restoring dump to the MySQL database. | `bool` | `false` | no | +| [name](#input\_name) | Name identifier for module to be added as suffix to resources | `string` | `"test"` | no | +| [namespace](#input\_namespace) | Name of the Kubernetes namespace where the MYSQL deployment will be deployed. | `string` | `"mysqldb"` | no | +| [service\_account\_backup](#input\_service\_account\_backup) | Service account for backup (GCP) | `string` | `""` | no | +| [service\_account\_restore](#input\_service\_account\_restore) | Service account for restore (GCP) | `string` | `""` | no | + +## Outputs + +No outputs. + diff --git a/modules/db-backup-restore/backup/templates/cronjob.yaml b/modules/db-backup-restore/backup/templates/cronjob.yaml index ca2450f..8f6ef92 100644 --- a/modules/db-backup-restore/backup/templates/cronjob.yaml +++ b/modules/db-backup-restore/backup/templates/cronjob.yaml @@ -33,4 +33,6 @@ spec: value: {{ .Values.backup.database_password }} - name: MYSQL_BUCKET_URI value: {{ .Values.backup.bucket_uri }} + - name: BUCKET_PROVIDER + value: {{ .Values.backup.provider }} resources: {{ .Values.backupjob.resources | toYaml | nindent 12 }} diff --git a/modules/db-backup-restore/main.tf b/modules/db-backup-restore/main.tf index d553ea6..83ab75f 100644 --- a/modules/db-backup-restore/main.tf +++ b/modules/db-backup-restore/main.tf @@ -20,7 +20,6 @@ resource "helm_release" "mysqldb_backup" { db_endpoint = var.bucket_provider_type == "s3" ? var.mysqldb_backup_config.db_endpoint : "", db_password = var.bucket_provider_type == "s3" ? var.mysqldb_backup_config.db_password : "", db_username = var.bucket_provider_type == "s3" ? var.mysqldb_backup_config.db_username : "", - s3_bucket_region = var.bucket_provider_type == "s3" ? var.mysqldb_backup_config.s3_bucket_region : "", cron_for_full_backup = var.mysqldb_backup_config.cron_for_full_backup, custom_user_username = "admin", bucket_provider_type = var.bucket_provider_type, @@ -45,7 +44,6 @@ resource "helm_release" "mysqldb_restore" { templatefile("${path.module}/../../helm/values/restore/values.yaml", { bucket_uri = var.mysqldb_restore_config.bucket_uri, file_name = var.mysqldb_restore_config.file_name, - s3_bucket_region = var.bucket_provider_type == "s3" ? var.mysqldb_restore_config.s3_bucket_region : "", db_endpoint = var.bucket_provider_type == "s3" ? var.mysqldb_restore_config.db_endpoint : "", db_password = var.bucket_provider_type == "s3" ? var.mysqldb_restore_config.db_password : "", db_username = var.bucket_provider_type == "s3" ? var.mysqldb_restore_config.db_username : "", @@ -58,7 +56,3 @@ resource "helm_release" "mysqldb_restore" { }) ] } - - - - diff --git a/modules/db-backup-restore/restore/templates/job.yaml b/modules/db-backup-restore/restore/templates/job.yaml index dd626bd..65ac580 100644 --- a/modules/db-backup-restore/restore/templates/job.yaml +++ b/modules/db-backup-restore/restore/templates/job.yaml @@ -26,7 +26,7 @@ spec: name: mysql-bucket-uri-restore key: MYSQL_BUCKET_URI - name: RESTORE_FILE_NAME - value: {{ .Values.restore.file_name} + value: {{ .Values.restore.file_name}} - name: RESTORE_FROM value: {{ .Values.restore.provider }} resources: {{ .Values.restorejob.resources | toYaml | nindent 12 }} diff --git a/modules/db-backup-restore/roles.tf b/modules/db-backup-restore/roles.tf index 5917379..175bfd7 100644 --- a/modules/db-backup-restore/roles.tf +++ b/modules/db-backup-restore/roles.tf @@ -13,8 +13,8 @@ data "aws_eks_cluster" "kubernetes_cluster" { } resource "aws_iam_role" "mysql_backup_role" { - count = var.mysqldb_backup_enabled ? 1 : 0 - name = format("%s-%s-%s", var.cluster_name, var.name, "mysql-backup-rds") + count = var.mysqldb_backup_enabled ? 1 : 0 + name = format("%s-%s-%s", var.cluster_name, var.name, "mysql-backup-rds") assume_role_policy = jsonencode({ Version = "2012-10-17", Statement = [ @@ -57,8 +57,8 @@ resource "aws_iam_role" "mysql_backup_role" { resource "aws_iam_role" "mysql_restore_role" { - count = var.mysqldb_restore_enabled ? 1 : 0 - name = format("%s-%s-%s", var.cluster_name, var.name, "mysql-restore") + count = var.mysqldb_restore_enabled ? 1 : 0 + name = format("%s-%s-%s", var.cluster_name, var.name, "mysql-restore") assume_role_policy = jsonencode({ Version = "2012-10-17", Statement = [ @@ -97,4 +97,4 @@ resource "aws_iam_role" "mysql_restore_role" { ] }) } -} \ No newline at end of file +} diff --git a/modules/db-backup-restore/variables.tf b/modules/db-backup-restore/variables.tf index 18e6594..ff859b1 100644 --- a/modules/db-backup-restore/variables.tf +++ b/modules/db-backup-restore/variables.tf @@ -66,9 +66,9 @@ variable "cluster_name" { } variable "mysqldb_permission" { - default = false + default = false description = "access" - type = bool + type = bool } variable "bucket_provider_type" { diff --git a/variables.tf b/variables.tf index 700dc4b..a85fe48 100644 --- a/variables.tf +++ b/variables.tf @@ -373,4 +373,4 @@ variable "cluster_name" { type = string default = "" description = "Specifies the name of the EKS cluster to deploy the MySQL application on." -} \ No newline at end of file +}