Skip to content

Commit 4d3b6d8

Browse files
committed
added gcp provider
1 parent d7c5ee1 commit 4d3b6d8

File tree

7 files changed

+72
-4
lines changed

7 files changed

+72
-4
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ No requirements.
6565
| Name | Version |
6666
|------|---------|
6767
| <a name="provider_aws"></a> [aws](#provider\_aws) | n/a |
68+
| <a name="provider_google"></a> [google](#provider\_google) | n/a |
6869
| <a name="provider_helm"></a> [helm](#provider\_helm) | n/a |
6970
| <a name="provider_kubernetes"></a> [kubernetes](#provider\_kubernetes) | n/a |
7071
| <a name="provider_random"></a> [random](#provider\_random) | n/a |
@@ -79,6 +80,8 @@ No modules.
7980
|------|------|
8081
| [aws_secretsmanager_secret.redis_password](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret) | resource |
8182
| [aws_secretsmanager_secret_version.redis_password](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret_version) | resource |
83+
| [google_secret_manager_secret.redis_secret](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/secret_manager_secret) | resource |
84+
| [google_secret_manager_secret_version.redis_secret](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/secret_manager_secret_version) | resource |
8285
| [helm_release.redis](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
8386
| [kubernetes_namespace.redis](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource |
8487
| [random_password.redis_password](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource |
@@ -95,7 +98,8 @@ No modules.
9598
| <a name="input_grafana_monitoring_enabled"></a> [grafana\_monitoring\_enabled](#input\_grafana\_monitoring\_enabled) | Specify whether or not to deploy Redis exporter to collect Redis metrics for monitoring in Grafana. | `bool` | `false` | no |
9699
| <a name="input_namespace"></a> [namespace](#input\_namespace) | Namespace where the Redis resources will be deployed. | `string` | `"redis"` | no |
97100
| <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 it can delete the secret. The value can be 0 to force deletion without recovery, or a range from 7 to 30 days. | `number` | `0` | no |
98-
| <a name="input_redis_config"></a> [redis\_config](#input\_redis\_config) | Specify the configuration settings for Redis, including the name, environment, storage options, replication settings, store password to secret manager and custom YAML values. | `any` | <pre>{<br> "architecture": "replication",<br> "environment": "",<br> "master_volume_size": "",<br> "name": "",<br> "slave_replica_count": 1,<br> "slave_volume_size": "",<br> "storage_class_name": "",<br> "store_password_to_secret_manager": "",<br> "values_yaml": ""<br>}</pre> | no |
101+
| <a name="input_redis_config"></a> [redis\_config](#input\_redis\_config) | Specify the configuration settings for Redis, including the name, environment, storage options, replication settings, store password to secret manager and custom YAML values. | `any` | <pre>{<br> "architecture": "replication",<br> "environment": "",<br> "master_volume_size": "",<br> "name": "",<br> "slave_replica_count": 1,<br> "slave_volume_size": "",<br> "storage_class_name": "",<br> "store_password_to_secret_manager": true,<br> "values_yaml": ""<br>}</pre> | no |
102+
| <a name="input_secret_provider_type"></a> [secret\_provider\_type](#input\_secret\_provider\_type) | Choose where secrets will be stored (aws, gcp) | `string` | `"aws"` | no |
99103

100104
## Outputs
101105

examples/complete/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
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.
15+
916
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
1017
## Requirements
1118

@@ -16,6 +23,7 @@ No requirements.
1623
| Name | Version |
1724
|------|---------|
1825
| <a name="provider_aws"></a> [aws](#provider\_aws) | n/a |
26+
| <a name="provider_google"></a> [google](#provider\_google) | n/a |
1927

2028
## Modules
2129

@@ -29,6 +37,8 @@ No requirements.
2937
|------|------|
3038
| [aws_eks_cluster.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster) | data source |
3139
| [aws_eks_cluster_auth.cluster](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster_auth) | data source |
40+
| [google_client_config.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/client_config) | data source |
41+
| [google_container_cluster.primary](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/container_cluster) | data source |
3242

3343
## Inputs
3444

examples/complete/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ module "redis" {
2222
storage_class_name = "gp3"
2323
slave_replica_count = 2
2424
store_password_to_secret_manager = local.store_password_to_secret_manager
25+
secret_provider_type = "aws"
2526
}
2627
grafana_monitoring_enabled = true
2728
recovery_window_aws_secret = 0

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+
}

main.tf

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ resource "random_password" "redis_password" {
55
}
66

77
resource "aws_secretsmanager_secret" "redis_password" {
8-
count = var.redis_config.store_password_to_secret_manager ? 1 : 0
8+
count = var.redis_config.store_password_to_secret_manager && var.secret_provider_type == "aws" ? 1 : 0
99
name = format("%s/%s/%s", var.redis_config.environment, var.redis_config.name, "redis")
1010
recovery_window_in_days = var.recovery_window_aws_secret
1111
}
1212

1313
resource "aws_secretsmanager_secret_version" "redis_password" {
14-
count = var.redis_config.store_password_to_secret_manager ? 1 : 0
14+
count = var.redis_config.store_password_to_secret_manager && var.secret_provider_type == "aws" ? 1 : 0
1515
secret_id = aws_secretsmanager_secret.redis_password[0].id
1616
secret_string = var.custom_credentials_enabled ? jsonencode(
1717
{
@@ -25,6 +25,32 @@ resource "aws_secretsmanager_secret_version" "redis_password" {
2525
})
2626
}
2727

28+
resource "google_secret_manager_secret" "redis_secret" {
29+
count = var.redis_config.store_password_to_secret_manager && var.secret_provider_type == "gcp" ? 1 : 0
30+
project = var.project_id
31+
secret_id = format("%s-%s-%s", var.redis_config.environment, var.redis_config.name, "redis")
32+
33+
replication {
34+
automatic = true
35+
}
36+
}
37+
38+
resource "google_secret_manager_secret_version" "redis_secret" {
39+
count = var.redis_config.store_password_to_secret_manager && var.secret_provider_type == "gcp" ? 1 : 0
40+
secret = google_secret_manager_secret.redis_secret[0].id
41+
secret_data = var.custom_credentials_enabled ? jsonencode(
42+
{
43+
"redis_username" : "root",
44+
"redis_password" : "${var.custom_credentials_config.password}"
45+
46+
}) : jsonencode(
47+
{
48+
"redis_username" : "root",
49+
"redis_password" : "${random_password.redis_password[0].result}"
50+
})
51+
}
52+
53+
2854
resource "kubernetes_namespace" "redis" {
2955
count = var.create_namespace ? 1 : 0
3056
metadata {

variables.tf

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ variable "redis_config" {
88
slave_replica_count = 1
99
slave_volume_size = ""
1010
storage_class_name = ""
11-
store_password_to_secret_manager = ""
11+
store_password_to_secret_manager = true
1212
values_yaml = ""
1313
}
1414
description = "Specify the configuration settings for Redis, including the name, environment, storage options, replication settings, store password to secret manager and custom YAML values."
@@ -63,3 +63,9 @@ variable "custom_credentials_config" {
6363
}
6464
description = "Specify the configuration settings for Redis to pass custom credentials during creation."
6565
}
66+
67+
variable "secret_provider_type" {
68+
type = string
69+
default = "aws"
70+
description = "Choose where secrets will be stored (aws, gcp)"
71+
}

0 commit comments

Comments
 (0)