Skip to content

Commit 5bf315b

Browse files
committed
feat: resolve webhook secrets from SSM and Secrets Manager
1 parent 22ba453 commit 5bf315b

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

src/main.tf

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ module "repository" {
6363
variables = local.variables
6464
secrets = local.secrets
6565
deploy_keys = var.deploy_keys
66-
webhooks = var.webhooks
66+
webhooks = local.webhooks
6767
labels = var.labels
6868
teams = var.teams
6969
users = var.users
@@ -108,6 +108,20 @@ locals {
108108
}
109109
}
110110

111+
webhooks = {
112+
for k, v in coalesce(var.webhooks, {}) : k => {
113+
active = v.active
114+
events = v.events
115+
url = v.url
116+
content_type = v.content_type
117+
insecure_ssl = v.insecure_ssl
118+
secret = v.secret != null ? (
119+
startswith(v.secret, "ssm://") ? nonsensitive(data.aws_ssm_parameter.default[v.secret].value) :
120+
startswith(v.secret, "asm://") ? nonsensitive(data.aws_secretsmanager_secret_version.default[v.secret].secret_string) : v.secret
121+
) : null
122+
}
123+
}
124+
111125
ssm_parameters = merge(flatten([
112126
[
113127
{
@@ -116,6 +130,9 @@ locals {
116130
{
117131
for k, v in coalesce(var.secrets, {}) : v => trimprefix(v, "ssm://") if startswith(v, "ssm://")
118132
},
133+
{
134+
for k, v in coalesce(var.webhooks, {}) : v.secret => trimprefix(v.secret, "ssm://") if v.secret != null && startswith(v.secret, "ssm://")
135+
},
119136
],
120137
[
121138
for k, v in coalesce(var.environments, {}) : {
@@ -138,6 +155,9 @@ locals {
138155
{
139156
for k, v in coalesce(var.secrets, {}) : v => trimprefix(v, "asm://") if startswith(v, "asm://")
140157
},
158+
{
159+
for k, v in coalesce(var.webhooks, {}) : v.secret => trimprefix(v.secret, "asm://") if v.secret != null && startswith(v.secret, "asm://")
160+
},
141161
],
142162
[
143163
for k, v in coalesce(var.environments, {}) : {

src/variables.tf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,9 @@ variable "webhooks" {
224224
insecure_ssl = optional(bool, false)
225225
secret = optional(string, null)
226226
}))
227-
default = {}
228-
nullable = false
227+
default = {}
228+
sensitive = true
229+
nullable = false
229230

230231
validation {
231232
condition = alltrue([for k, v in var.webhooks : can(regex("^http(s)?://", v.url))])

0 commit comments

Comments
 (0)