51 lines
1.6 KiB
HCL
51 lines
1.6 KiB
HCL
resource "random_password" "versitygw_forgejo_secret_access_key" {
|
|
length = 48
|
|
special = false
|
|
}
|
|
|
|
resource "vault_kv_secret_v2" "versitygw_forgejo_user" {
|
|
mount = vault_mount.secret.path
|
|
name = "versitygw/users/forgejo"
|
|
|
|
data_json_wo_version = 1
|
|
data_json_wo = jsonencode({
|
|
secretAccessKey = random_password.versitygw_forgejo_secret_access_key.result
|
|
})
|
|
|
|
# Vault is source of truth after first write. Re-runs do not rotate user credentials.
|
|
}
|
|
|
|
resource "random_password" "forgejo_dragonfly_password" {
|
|
length = 48
|
|
special = false
|
|
}
|
|
|
|
resource "vault_kv_secret_v2" "dragonfly_forgejo_acl" {
|
|
mount = vault_mount.secret.path
|
|
name = "dragonfly/forgejo/acl"
|
|
|
|
data_json_wo_version = 1
|
|
data_json_wo = jsonencode({
|
|
acl = "user default on >${random_password.forgejo_dragonfly_password.result} ~* &* +@all\n"
|
|
})
|
|
|
|
# Vault is source of truth after first write. Re-runs do not rotate the ACL.
|
|
}
|
|
|
|
resource "vault_kv_secret_v2" "forgejo_secrets" {
|
|
mount = vault_mount.secret.path
|
|
name = "forgejo/secrets"
|
|
|
|
data_json_wo_version = 1
|
|
data_json_wo = jsonencode({
|
|
secret_key = "REPLACE_AFTER_EXTRACTION"
|
|
internal_token = "REPLACE_AFTER_EXTRACTION"
|
|
oauth2_jwt_secret = "REPLACE_AFTER_EXTRACTION"
|
|
lfs_jwt_secret = "REPLACE_AFTER_EXTRACTION"
|
|
redis_password = random_password.forgejo_dragonfly_password.result
|
|
s3_secret_key = random_password.versitygw_forgejo_secret_access_key.result
|
|
internal_ca_cert = vault_pki_secret_backend_root_cert.root.certificate
|
|
})
|
|
|
|
# Manual escrow patches the Forgejo runtime keys after the path exists.
|
|
}
|