Skip to content

Commit 1fcbe8e

Browse files
committed
feat: add vault and time providers, update examples and modules for secrets management
1 parent 37c39cc commit 1fcbe8e

10 files changed

Lines changed: 82 additions & 26 deletions

File tree

examples/01-standalone/providers.tf

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,16 @@ provider "stackit" {
22
default_region = var.region
33
enable_beta_resources = true
44
experiments = ["iam", "routing-tables", "network"]
5-
}
5+
}
6+
7+
provider "vault" {
8+
address = "https://prod.sm.eu01.stackit.cloud"
9+
skip_child_token = true
10+
11+
auth_login_userpass {
12+
username = module.management.secretsmanager_username
13+
password = module.management.secretsmanager_password
14+
}
15+
}
16+
17+
provider "time" {}

examples/01-standalone/terraform.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,13 @@ terraform {
66
source = "stackitcloud/stackit"
77
version = "0.88.0"
88
}
9+
time = {
10+
source = "hashicorp/time"
11+
version = "0.13.1"
12+
}
13+
vault = {
14+
source = "hashicorp/vault"
15+
version = "5.7.0"
16+
}
917
}
1018
}

examples/02-hub-spoke/providers.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,15 @@ provider "stackit" {
33
enable_beta_resources = true
44
experiments = ["iam", "routing-tables", "network"]
55
}
6+
7+
provider "vault" {
8+
address = "https://prod.sm.eu01.stackit.cloud"
9+
skip_child_token = true
10+
11+
auth_login_userpass {
12+
username = module.management.secretsmanager_username
13+
password = module.management.secretsmanager_password
14+
}
15+
}
16+
17+
provider "time" {}

examples/02-hub-spoke/terraform.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,13 @@ terraform {
66
source = "stackitcloud/stackit"
77
version = "0.88.0"
88
}
9+
time = {
10+
source = "hashicorp/time"
11+
version = "0.13.1"
12+
}
13+
vault = {
14+
source = "hashicorp/vault"
15+
version = "5.7.0"
16+
}
917
}
1018
}

modules/landing-zone/4-secrets-manager.tf

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ resource "stackit_secretsmanager_instance" "this" {
88
# acls = length(var.secretsmanager_config.acls) > 0 ? var.secretsmanager_config.acls : null
99
}
1010

11-
resource "stackit_secretsmanager_user" "default" {
12-
project_id = stackit_resourcemanager_project.this.project_id
13-
instance_id = stackit_secretsmanager_instance.this.instance_id
14-
description = "Default user for accessing the Secrets Manager"
15-
write_enabled = true
16-
}
11+
# used for vault provider to access the secrets manager instance
12+
# resource "stackit_secretsmanager_user" "default" {
13+
# project_id = stackit_resourcemanager_project.this.project_id
14+
# instance_id = stackit_secretsmanager_instance.this.instance_id
15+
# description = "Default user for accessing the Secrets Manager"
16+
# write_enabled = true
17+
# }

modules/management/3-bucket.tf

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ resource "stackit_objectstorage_credential" "this" {
3131
credentials_group_id = stackit_objectstorage_credentials_group.this.credentials_group_id
3232
}
3333

34-
# resource "vault_kv_secret_v2" "object_storage_credentials" {
35-
# mount = stackit_secretsmanager_instance.this.instance_id
36-
# name = "service_account_key_${stackit_service_account.automation.name}"
37-
# cas = 1
38-
# delete_all_versions = true
39-
# data_json = jsonencode(
40-
# {
41-
# ACCESS_KEY = stackit_objectstorage_credential.this.access_key,
42-
# SECRET_ACCESS_KEY = stackit_objectstorage_credential.this.secret_access_key
43-
# }
44-
# )
45-
# }
34+
resource "vault_kv_secret_v2" "object_storage_credentials" {
35+
mount = stackit_secretsmanager_instance.this.instance_id
36+
name = "service_account_key_${stackit_service_account.automation.name}"
37+
cas = 1
38+
delete_all_versions = true
39+
data_json = jsonencode(
40+
{
41+
ACCESS_KEY = stackit_objectstorage_credential.this.access_key,
42+
SECRET_ACCESS_KEY = stackit_objectstorage_credential.this.secret_access_key
43+
}
44+
)
45+
}

modules/management/4-service-account.tf

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ resource "stackit_authorization_organization_role_assignment" "sa_owner" {
2727
subject = stackit_service_account.automation.email
2828
}
2929

30-
# resource "vault_kv_secret_v2" "service_account_key_automation" {
31-
# mount = stackit_secretsmanager_instance.this.instance_id
32-
# name = "service_account_key_${stackit_service_account.automation.name}"
33-
# cas = 1
34-
# delete_all_versions = true
35-
# data_json = stackit_service_account_key.automation.json
36-
# }
30+
resource "vault_kv_secret_v2" "service_account_key_automation" {
31+
mount = stackit_secretsmanager_instance.this.instance_id
32+
name = "service_account_key_${stackit_service_account.automation.name}"
33+
cas = 1
34+
delete_all_versions = true
35+
data_json = stackit_service_account_key.automation.json
36+
}

modules/management/outputs.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,15 @@ output "project_name" {
1616
output "service_account_email" {
1717
description = "The email of the created service account."
1818
value = stackit_service_account.automation.email
19+
}
20+
21+
output "secretsmanager_username" {
22+
description = "The username of the default Secrets Manager user."
23+
value = stackit_secretsmanager_user.default.username
24+
}
25+
26+
output "secretsmanager_password" {
27+
description = "The password of the default Secrets Manager user."
28+
value = stackit_secretsmanager_user.default.password
29+
sensitive = true
1930
}

modules/management/terraform.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,9 @@ terraform {
1010
source = "hashicorp/time"
1111
version = ">=0.13.1"
1212
}
13+
vault = {
14+
source = "hashicorp/vault"
15+
version = ">=5.7.0"
16+
}
1317
}
1418
}

0 commit comments

Comments
 (0)