Skip to content

Commit 1d763b3

Browse files
committed
added aws and gcp module
1 parent 94245cd commit 1d763b3

File tree

26 files changed

+354
-298
lines changed

26 files changed

+354
-298
lines changed

README.md

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ module "mysql" {
3333
}
3434
mysqldb_backup_enabled = true
3535
mysqldb_backup_config = {
36-
s3_bucket_uri = ""
36+
bucket_uri = ""
3737
s3_bucket_region = ""
3838
cron_for_full_backup = "* * * * *"
3939
}
4040
mysqldb_restore_enabled = true
4141
mysqldb_restore_config = {
42-
s3_bucket_uri = ""
42+
bucket_uri = ""
4343
s3_bucket_region = ""
4444
}
4545
mysqldb_exporter_enabled = true
@@ -70,23 +70,21 @@ No requirements.
7070

7171
| Name | Version |
7272
|------|---------|
73-
| <a name="provider_aws"></a> [aws](#provider\_aws) | n/a |
7473
| <a name="provider_helm"></a> [helm](#provider\_helm) | n/a |
7574
| <a name="provider_kubernetes"></a> [kubernetes](#provider\_kubernetes) | n/a |
7675
| <a name="provider_random"></a> [random](#provider\_random) | n/a |
7776

7877
## Modules
7978

80-
No modules.
79+
| Name | Source | Version |
80+
|------|--------|---------|
81+
| <a name="module_aws"></a> [aws](#module\_aws) | ./provider/aws | n/a |
82+
| <a name="module_gcp"></a> [gcp](#module\_gcp) | ./provider/gcp | n/a |
8183

8284
## Resources
8385

8486
| Name | Type |
8587
|------|------|
86-
| [aws_iam_role.mysql_backup_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
87-
| [aws_iam_role.mysql_restore_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
88-
| [aws_secretsmanager_secret.mysql_user_password](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret) | resource |
89-
| [aws_secretsmanager_secret_version.mysql_user_password](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret_version) | resource |
9088
| [helm_release.mysqldb](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
9189
| [helm_release.mysqldb_backup](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
9290
| [helm_release.mysqldb_restore](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
@@ -95,24 +93,24 @@ No modules.
9593
| [random_password.mysqldb_exporter_user_password](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource |
9694
| [random_password.mysqldb_replication_user_password](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource |
9795
| [random_password.mysqldb_root_password](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource |
98-
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
99-
| [aws_eks_cluster.kubernetes_cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster) | data source |
10096

10197
## Inputs
10298

10399
| Name | Description | Type | Default | Required |
104100
|------|-------------|------|---------|:--------:|
105101
| <a name="input_app_version"></a> [app\_version](#input\_app\_version) | Version of the MySQL application that will be deployed. | `string` | `"8.0.29-debian-11-r9"` | no |
102+
| <a name="input_bucket_provider_type"></a> [bucket\_provider\_type](#input\_bucket\_provider\_type) | Choose what type of provider you want (s3, gcs) | `string` | `"gcs"` | no |
106103
| <a name="input_chart_version"></a> [chart\_version](#input\_chart\_version) | Version of the Mysql chart that will be used to deploy MySQL application. | `string` | `"9.2.0"` | no |
107104
| <a name="input_cluster_name"></a> [cluster\_name](#input\_cluster\_name) | Specifies the name of the EKS cluster to deploy the MySQL application on. | `string` | `""` | no |
108105
| <a name="input_create_namespace"></a> [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` | `true` | no |
109-
| <a name="input_mysqldb_backup_config"></a> [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. | `any` | <pre>{<br> "cron_for_full_backup": "",<br> "s3_bucket_region": "",<br> "s3_bucket_uri": ""<br>}</pre> | no |
106+
| <a name="input_mysqldb_backup_config"></a> [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. | `any` | <pre>{<br> "bucket_uri": "",<br> "cron_for_full_backup": "",<br> "s3_bucket_region": ""<br>}</pre> | no |
110107
| <a name="input_mysqldb_backup_enabled"></a> [mysqldb\_backup\_enabled](#input\_mysqldb\_backup\_enabled) | Specifies whether to enable backups for MySQL database. | `bool` | `false` | no |
111108
| <a name="input_mysqldb_config"></a> [mysqldb\_config](#input\_mysqldb\_config) | Specify the configuration settings for MySQL, including the name, environment, storage options, replication settings, and custom YAML values. | `any` | <pre>{<br> "architecture": "",<br> "custom_user_username": "",<br> "environment": "",<br> "name": "",<br> "primary_db_volume_size": "",<br> "secondary_db_replica_count": 1,<br> "secondary_db_volume_size": "",<br> "storage_class_name": "",<br> "values_yaml": ""<br>}</pre> | no |
112109
| <a name="input_mysqldb_exporter_enabled"></a> [mysqldb\_exporter\_enabled](#input\_mysqldb\_exporter\_enabled) | Specify whether or not to deploy Mysql exporter to collect Mysql metrics for monitoring in Grafana. | `bool` | `false` | no |
113-
| <a name="input_mysqldb_restore_config"></a> [mysqldb\_restore\_config](#input\_mysqldb\_restore\_config) | Configuration options for restoring dump to the MySQL database. | `any` | <pre>{<br> "s3_bucket_region": "",<br> "s3_bucket_uri": ""<br>}</pre> | no |
110+
| <a name="input_mysqldb_restore_config"></a> [mysqldb\_restore\_config](#input\_mysqldb\_restore\_config) | Configuration options for restoring dump to the MySQL database. | `any` | <pre>{<br> "bucket_uri": "",<br> "file_name": "",<br> "s3_bucket_region": ""<br>}</pre> | no |
114111
| <a name="input_mysqldb_restore_enabled"></a> [mysqldb\_restore\_enabled](#input\_mysqldb\_restore\_enabled) | Specifies whether to enable restoring dump to the MySQL database. | `bool` | `false` | no |
115112
| <a name="input_namespace"></a> [namespace](#input\_namespace) | Name of the Kubernetes namespace where the MYSQL deployment will be deployed. | `string` | `"mysqldb"` | no |
113+
| <a name="input_project_id"></a> [project\_id](#input\_project\_id) | Google Cloud project ID | `string` | `""` | no |
116114
| <a name="input_recovery_window_aws_secret"></a> [recovery\_window\_aws\_secret](#input\_recovery\_window\_aws\_secret) | Number of days that AWS Secrets Manager will wait before deleting a secret. This value can be set to 0 to force immediate deletion, or to a value between 7 and 30 days to allow for recovery. | `number` | `0` | no |
117115

118116
## Outputs

backup/templates/cronjob.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ spec:
1919
serviceAccountName: sa-mysql-backup
2020
containers:
2121
- name: backup-mysqldb
22-
image: asia-south1-docker.pkg.dev/fresh-sanctuary-389006/roboshop/mysql-backup:1
22+
image: squareops/mysqldb-backup:v3
2323
imagePullPolicy: Always
2424
env:
2525
- name: MYSQL_HOST
@@ -36,7 +36,7 @@ spec:
3636
secretKeyRef:
3737
name: mysql-bucket-uri
3838
key: MYSQL_BUCKET_URI
39-
- name: CLOUD
40-
value: {{ .Values.provider_type }}
39+
- name: BUCKET_PROVIDER
40+
value: "gcs"
4141
- name: AWS_DEFAULT_REGION
4242
value: {{ .Values.backup.aws_default_region }}

backup/templates/service_account.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,5 @@ kind: ServiceAccount
33
metadata:
44
name: sa-mysql-backup
55
namespace: mysqldb
6-
annotations: {{.Values.annotations}}
7-
# iam.gke.io/gcp-service-account: test-mysql-backup@fresh-sanctuary-389006.iam.gserviceaccount.com
8-
# eks.amazonaws.com/role-arn: {{ .Values.s3.role_arn }}
6+
annotations:
7+
{{ toYaml .Values.annotations | indent 4 }}

examples/complete/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
### [SquareOps Technologies](https://squareops.com/) Your DevOps Partner for Accelerating cloud journey.
77
<br>
88
This example will be very useful for users who are new to a module and want to quickly learn how to use it. By reviewing the examples, users can gain a better understanding of how the module works, what features it supports, and how to customize it to their specific needs.
9+
10+
## Usage
11+
12+
Use the provider file as per your need.
13+
- If deploying into AWS EKS use `provider-aws.tf` file and remove `provider-gcp.tf` file.
14+
- If deploying into Google GKE use `provider-gcp.tf` file and remove `provider-aws.tf` file.
915
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
1016
## Requirements
1117

@@ -16,6 +22,7 @@ No requirements.
1622
| Name | Version |
1723
|------|---------|
1824
| <a name="provider_aws"></a> [aws](#provider\_aws) | n/a |
25+
| <a name="provider_google"></a> [google](#provider\_google) | n/a |
1926

2027
## Modules
2128

@@ -29,6 +36,8 @@ No requirements.
2936
|------|------|
3037
| [aws_eks_cluster.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster) | data source |
3138
| [aws_eks_cluster_auth.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster_auth) | data source |
39+
| [google_client_config.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/client_config) | data source |
40+
| [google_container_cluster.primary](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/container_cluster) | data source |
3241

3342
## Inputs
3443

examples/complete/main.tf

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ locals {
1010
}
1111

1212
module "mysql" {
13-
source = "../../"
13+
source = "squareops/mysql/kubernetes"
1414
cluster_name = ""
15+
project_id = "" #for gcp
1516
mysqldb_config = {
1617
name = local.name
1718
values_yaml = file("./helm/values.yaml")
@@ -23,16 +24,18 @@ module "mysql" {
2324
secondary_db_volume_size = "10Gi"
2425
secondary_db_replica_count = 2
2526
}
26-
mysqldb_backup_enabled = false
27+
bucket_provider_type = "gcs"
28+
mysqldb_backup_enabled = true
2729
mysqldb_backup_config = {
28-
s3_bucket_uri = "s3://bucket_name"
29-
s3_bucket_region = "bucket_region"
30-
cron_for_full_backup = "* * * * *"
30+
bucket_uri = "gs://mysql-backup-skaf"
31+
s3_bucket_region = ""
32+
cron_for_full_backup = "*/5 * * * *"
3133
}
32-
mysqldb_restore_enabled = false
34+
mysqldb_restore_enabled = true
3335
mysqldb_restore_config = {
34-
s3_bucket_uri = "s3://bucket_name/filename"
35-
s3_bucket_region = "bucket_region"
36+
bucket_uri = "gs://mysql-backup-skaf/mysqldump_20230710_120501.zip"
37+
file_name = "mysqldump_20230710_120501.zip"
38+
s3_bucket_region = ""
3639
}
3740
mysqldb_exporter_enabled = true
3841
}

examples/complete/provider-aws.tf

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
provider "s3" {
2+
region = local.region
3+
default_tags {
4+
tags = local.additional_tags
5+
}
6+
}
7+
8+
9+
data "aws_eks_cluster" "cluster" {
10+
name = ""
11+
}
12+
13+
data "aws_eks_cluster_auth" "cluster" {
14+
name = ""
15+
}
16+
17+
18+
provider "kubernetes" {
19+
host = data.aws_eks_cluster.cluster.endpoint
20+
cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
21+
token = data.aws_eks_cluster_auth.cluster.token
22+
23+
}
24+
25+
provider "helm" {
26+
kubernetes {
27+
host = data.aws_eks_cluster.cluster.endpoint
28+
cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
29+
token = data.aws_eks_cluster_auth.cluster.token
30+
31+
}
32+
}

examples/complete/provider-gcp.tf

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
data "google_client_config" "default" {}
2+
3+
data "google_container_cluster" "primary" {
4+
name = ""
5+
location = ""
6+
project = ""
7+
}
8+
9+
provider "kubernetes" {
10+
host = "https://${data.google_container_cluster.primary.endpoint}"
11+
token = data.google_client_config.default.access_token
12+
cluster_ca_certificate = base64decode(data.google_container_cluster.primary.master_auth.0.cluster_ca_certificate)
13+
}
14+
15+
provider "helm" {
16+
kubernetes {
17+
host = "https://${data.google_container_cluster.primary.endpoint}"
18+
token = data.google_client_config.default.access_token
19+
cluster_ca_certificate = base64decode(data.google_container_cluster.primary.master_auth.0.cluster_ca_certificate)
20+
}
21+
}

examples/complete/provider.tf

Lines changed: 0 additions & 53 deletions
This file was deleted.

gcp/variables.tf

Lines changed: 0 additions & 35 deletions
This file was deleted.

helm/values/backup/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ annotations:
1111
auth:
1212
username: "${custom_user_username}"
1313

14-
provider_type: ${provider_type}
14+
bucket_provider_type: ${bucket_provider_type}

0 commit comments

Comments
 (0)