Skip to content

Commit 07ee665

Browse files
authored
Merge pull request #1 from iits-consulting/feature/module
Initial Module creation
2 parents 1261e49 + 70f7b71 commit 07ee665

File tree

6 files changed

+278
-0
lines changed

6 files changed

+278
-0
lines changed

.github/workflows/workflow.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name: Automation
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
automation-workflow:
8+
uses: iits-consulting/terraform-opentelekomcloud-common-workflows/.github/workflows/workflow-reusable.yaml@main
9+

README.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
## otc-prometheus-exporter
2+
3+
This module deploys our [otc-prometheus-exporter](https://github.com/iits-consulting/otc-prometheus-exporter) with wich metrics on the open telekom cloud can be monitored
4+
5+
Example:
6+
```HCL
7+
module "otc_prometheus_exporter" {
8+
source = "iits-consulting/prometheus-exporter/opentelekomcloud"
9+
version = "SET_ME"
10+
11+
name_prefix = "myCluster-PROD"
12+
domain_name = "EU-DE-XXXXX"
13+
14+
chart_values = [
15+
yamlencode({
16+
deployment = {
17+
env = {
18+
NAMESPACES = "OBS,RDS"
19+
}
20+
}
21+
})
22+
]
23+
}
24+
```
25+
26+
<!-- BEGIN_TF_DOCS -->
27+
## Requirements
28+
29+
| Name | Version |
30+
|------|---------|
31+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.5.7 |
32+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.17 |
33+
| <a name="requirement_opentelekomcloud"></a> [opentelekomcloud](#requirement\_opentelekomcloud) | ~> 1.32 |
34+
35+
## Providers
36+
37+
| Name | Version |
38+
|------|---------|
39+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.17 |
40+
| <a name="provider_opentelekomcloud"></a> [opentelekomcloud](#provider\_opentelekomcloud) | ~> 1.32 |
41+
42+
## Modules
43+
44+
No modules.
45+
46+
## Resources
47+
48+
| Name | Type |
49+
|------|------|
50+
| [helm_release.otc-prometheus-exporter](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
51+
| [opentelekomcloud_identity_credential_v3.user_aksk](https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud/latest/docs/resources/identity_credential_v3) | resource |
52+
| [opentelekomcloud_identity_group_membership_v3.user_to_ces_group](https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud/latest/docs/resources/identity_group_membership_v3) | resource |
53+
| [opentelekomcloud_identity_group_v3.ces_group](https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud/latest/docs/resources/identity_group_v3) | resource |
54+
| [opentelekomcloud_identity_role_assignment_v3.ces_role_to_ces_group](https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud/latest/docs/resources/identity_role_assignment_v3) | resource |
55+
| [opentelekomcloud_identity_user_v3.user](https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud/latest/docs/resources/identity_user_v3) | resource |
56+
| [opentelekomcloud_identity_project_v3.current](https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud/latest/docs/data-sources/identity_project_v3) | data source |
57+
| [opentelekomcloud_identity_role_v3.ces_role](https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud/latest/docs/data-sources/identity_role_v3) | data source |
58+
59+
## Inputs
60+
61+
| Name | Description | Type | Default | Required |
62+
|------|-------------|------|---------|:--------:|
63+
| <a name="input_domain_name"></a> [domain\_name](#input\_domain\_name) | Domain name of the OTC | `string` | n/a | yes |
64+
| <a name="input_name_prefix"></a> [name\_prefix](#input\_name\_prefix) | Prefix of the OTC ressources created. | `string` | n/a | yes |
65+
| <a name="input_chart_name"></a> [chart\_name](#input\_chart\_name) | Name of the IITS otc-prometheus-exporter chart. | `string` | `"otc-prometheus-exporter"` | no |
66+
| <a name="input_chart_repository"></a> [chart\_repository](#input\_chart\_repository) | Chart repository of the IITS otc-prometheus-exporter chart. | `string` | `"https://iits-consulting.github.io/otc-prometheus-exporter/"` | no |
67+
| <a name="input_chart_set_list_parameter"></a> [chart\_set\_list\_parameter](#input\_chart\_set\_list\_parameter) | Override the values of the IITS otc-prometheus-exporter chart using set\_list. | <pre>list(object({<br/> name = string<br/> value = list(string)<br/> }))</pre> | `[]` | no |
68+
| <a name="input_chart_set_parameter"></a> [chart\_set\_parameter](#input\_chart\_set\_parameter) | Override the values of the IITS otc-prometheus-exporter chart using set. | <pre>list(object({<br/> name = string<br/> value = optional(string)<br/> type = optional(string)<br/> }))</pre> | `[]` | no |
69+
| <a name="input_chart_set_sensitive_parameter"></a> [chart\_set\_sensitive\_parameter](#input\_chart\_set\_sensitive\_parameter) | Override the values of the IITS otc-prometheus-exporter chart using set\_sensitive. | <pre>list(object({<br/> name = string<br/> value = string<br/> type = optional(string)<br/> }))</pre> | `[]` | no |
70+
| <a name="input_chart_values"></a> [chart\_values](#input\_chart\_values) | Override the values of the IITS otc-prometheus-exporter chart using value files. | `list(string)` | `[]` | no |
71+
| <a name="input_chart_version"></a> [chart\_version](#input\_chart\_version) | Chart version of the IITS otc-prometheus-exporter chart. | `string` | `"1.2.9"` | no |
72+
| <a name="input_release_name"></a> [release\_name](#input\_release\_name) | Name ot the release namespace. | `string` | `"otc-prometheus-exporter"` | no |
73+
| <a name="input_release_namespace"></a> [release\_namespace](#input\_release\_namespace) | Kubernetes namespace to install the chart to. | `string` | `"monitoring"` | no |
74+
75+
## Outputs
76+
77+
No outputs.
78+
<!-- END_TF_DOCS -->

main.tf

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
resource "helm_release" "otc-prometheus-exporter" {
2+
name = var.release_name
3+
chart = var.chart_name
4+
repository = var.chart_repository
5+
version = var.chart_version
6+
namespace = var.release_namespace
7+
create_namespace = true
8+
wait = true
9+
atomic = true
10+
timeout = 900 // 15 Minutes
11+
render_subchart_notes = true
12+
dependency_update = true
13+
wait_for_jobs = true
14+
values = concat([
15+
yamlencode({
16+
serviceMonitor = {
17+
labels = {
18+
release = "kube-prom-stack"
19+
}
20+
}
21+
})], var.chart_values)
22+
23+
dynamic "set" {
24+
for_each = { for param in var.chart_set_parameter : param.name => {
25+
value = param.value
26+
type = param.type
27+
} }
28+
content {
29+
name = set.key
30+
value = set.value.value
31+
type = set.value.type
32+
}
33+
}
34+
35+
dynamic "set_list" {
36+
for_each = { for param in var.chart_set_list_parameter : param.name => param.value }
37+
content {
38+
name = set_list.key
39+
value = set_list.value
40+
}
41+
}
42+
43+
dynamic "set_sensitive" {
44+
for_each = {
45+
"deployment.env.OS_ACCESS_KEY" = opentelekomcloud_identity_credential_v3.user_aksk.access
46+
"deployment.env.OS_SECRET_KEY" = opentelekomcloud_identity_credential_v3.user_aksk.secret
47+
"deployment.env.OS_PROJECT_ID" = data.opentelekomcloud_identity_project_v3.current.id
48+
"deployment.env.OS_DOMAIN_NAME" = var.domain_name
49+
}
50+
content {
51+
name = set_sensitive.key
52+
value = set_sensitive.value
53+
}
54+
}
55+
56+
dynamic "set_sensitive" {
57+
for_each = { for param in var.chart_set_sensitive_parameter : param.name => {
58+
value = param.value
59+
type = param.type
60+
} }
61+
content {
62+
name = set_sensitive.key
63+
value = set_sensitive.value.value
64+
type = set_sensitive.value.type
65+
}
66+
}
67+
}

otc_user.tf

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
data "opentelekomcloud_identity_project_v3" "current" {}
2+
3+
resource "opentelekomcloud_identity_user_v3" "user" {
4+
name = "${var.name_prefix}-prom"
5+
description = "CES read only access programmatic user for ${var.release_name}."
6+
enabled = true
7+
}
8+
9+
data "opentelekomcloud_identity_role_v3" "ces_role" {
10+
name = "system_all_60" #CES ReadOnly Role
11+
}
12+
13+
resource "opentelekomcloud_identity_group_v3" "ces_group" {
14+
name = "${var.name_prefix}-prom"
15+
description = "CES read only access group for ${var.release_name}."
16+
}
17+
18+
resource "opentelekomcloud_identity_role_assignment_v3" "ces_role_to_ces_group" {
19+
group_id = opentelekomcloud_identity_group_v3.ces_group.id
20+
role_id = data.opentelekomcloud_identity_role_v3.ces_role.id
21+
project_id = data.opentelekomcloud_identity_project_v3.current.id
22+
lifecycle {
23+
ignore_changes = [project_id]
24+
}
25+
}
26+
27+
resource "opentelekomcloud_identity_group_membership_v3" "user_to_ces_group" {
28+
group = opentelekomcloud_identity_group_v3.ces_group.id
29+
users = [opentelekomcloud_identity_user_v3.user.id]
30+
}
31+
32+
resource "opentelekomcloud_identity_credential_v3" "user_aksk" {
33+
user_id = opentelekomcloud_identity_user_v3.user.id
34+
description = "CES read only user for ${var.release_name}."
35+
depends_on = [opentelekomcloud_identity_group_membership_v3.user_to_ces_group]
36+
}

variables.tf

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
variable "name_prefix" {
2+
type = string
3+
description = "Prefix of the OTC ressources created."
4+
}
5+
6+
variable "release_name" {
7+
default = "otc-prometheus-exporter"
8+
type = string
9+
description = "Name ot the release namespace."
10+
}
11+
12+
variable "release_namespace" {
13+
type = string
14+
default = "monitoring"
15+
description = "Kubernetes namespace to install the chart to."
16+
}
17+
18+
variable "domain_name" {
19+
type = string
20+
description = "Domain name of the OTC"
21+
}
22+
23+
variable "chart_repository" {
24+
type = string
25+
default = "https://iits-consulting.github.io/otc-prometheus-exporter/"
26+
description = "Chart repository of the IITS otc-prometheus-exporter chart."
27+
}
28+
29+
variable "chart_name" {
30+
type = string
31+
default = "otc-prometheus-exporter"
32+
description = "Name of the IITS otc-prometheus-exporter chart."
33+
}
34+
35+
variable "chart_version" {
36+
type = string
37+
default = "1.2.9"
38+
description = "Chart version of the IITS otc-prometheus-exporter chart."
39+
}
40+
41+
variable "chart_values" {
42+
type = list(string)
43+
default = []
44+
description = "Override the values of the IITS otc-prometheus-exporter chart using value files."
45+
}
46+
47+
variable "chart_set_parameter" {
48+
type = list(object({
49+
name = string
50+
value = optional(string)
51+
type = optional(string)
52+
}))
53+
default = []
54+
description = "Override the values of the IITS otc-prometheus-exporter chart using set."
55+
}
56+
57+
variable "chart_set_list_parameter" {
58+
type = list(object({
59+
name = string
60+
value = list(string)
61+
}))
62+
default = []
63+
description = "Override the values of the IITS otc-prometheus-exporter chart using set_list."
64+
}
65+
66+
variable "chart_set_sensitive_parameter" {
67+
type = list(object({
68+
name = string
69+
value = string
70+
type = optional(string)
71+
}))
72+
default = []
73+
description = "Override the values of the IITS otc-prometheus-exporter chart using set_sensitive."
74+
}

versions.tf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
terraform {
2+
required_version = ">= 1.5.7"
3+
4+
required_providers {
5+
helm = {
6+
source = "hashicorp/helm"
7+
version = "~> 2.17"
8+
}
9+
opentelekomcloud = {
10+
source = "opentelekomcloud/opentelekomcloud"
11+
version = "~> 1.32"
12+
}
13+
}
14+
}

0 commit comments

Comments
 (0)