Skip to content

Commit d65ce2d

Browse files
committed
Auto-replace 'secret' fields with generate-secrets script
1 parent 398f7fa commit d65ce2d

File tree

2 files changed

+27
-42
lines changed

2 files changed

+27
-42
lines changed

bin/generate-secrets

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -33,54 +33,39 @@ fi
3333

3434
insert_secret() {
3535
localSecret="${secret:-$(generate_secret)}"
36+
# For any group of yaml paths passed add the same (!) password.
3637
for key in "$@"; do
3738
localSecret="$localSecret" yq -i "$key = strenv(localSecret)" etc/secrets.yaml
3839
done
40+
# Do not remove this 'secret=' line! It ensures that subsequent replacements get a unique password.
41+
secret=
3942
}
4043

41-
insert_secret ".mongodb.auth.replicaSetKey"
42-
insert_secret ".mongodb.auth.rootPassword"
43-
insert_secret ".mongodb.auth.passwords[0]"
44+
# -- Groups of shared passwords
4445

45-
insert_secret ".graylog.graylog.rootPassword"
46-
insert_secret ".kube_prometheus_stack.kube-prometheus-stack.grafana.adminPassword"
47-
48-
nginx_auth_password=$(generate_secret)
49-
secret="thehyve:$(echo $nginx_auth_password | openssl passwd -apr1 -stdin)" insert_secret ".kube_prometheus_stack.nginx_auth"
50-
comment="username: thehyve, password: $nginx_auth_password" yq -i ".kube_prometheus_stack.nginx_auth line_comment |= strenv(comment)" etc/secrets.yaml
51-
52-
insert_secret ".kafka_manager.basicAuth.password"
53-
54-
# Shared postgresql secret
46+
# Management portal postgres database
5547
insert_secret \
5648
".postgresql.global.postgresql.auth.postgresPassword" \
5749
".postgresql.auth.replicationPassword" \
5850
".management_portal.postgres.password" \
5951
".app_config.jdbc.password" \
6052
".radar_rest_sources_backend.postgres.password"
6153

62-
insert_secret ".management_portal.managementportal.common_admin_password"
63-
insert_secret ".management_portal.managementportal.frontend_client_secret"
64-
insert_secret ".management_portal.oauth_clients.radar_upload_backend.client_secret"
65-
insert_secret ".management_portal.oauth_clients.radar_upload_connect.client_secret"
66-
insert_secret ".management_portal.oauth_clients.radar_rest_sources_auth_backend.client_secret"
67-
insert_secret ".management_portal.oauth_clients.radar_redcap_integrator.client_secret"
68-
insert_secret ".management_portal.oauth_clients.radar_fitbit_connector.client_secret"
69-
insert_secret ".management_portal.oauth_clients.radar_appconfig.client_secret"
70-
insert_secret ".management_portal.oauth_clients.radar_push_endpoint.client_secret"
71-
54+
# Appserver postgres database
7255
insert_secret \
7356
".radar_appserver_postgresql.global.postgresql.auth.postgresPassword" \
7457
".radar_appserver_postgresql.auth.replicationPassword" \
7558
".radar_appserver.postgres.password"
7659

77-
insert_secret ".timescaledb_password"
78-
insert_secret ".grafana_password"
79-
insert_secret ".grafana_metrics_password"
80-
81-
insert_secret ".s3_access_key"
82-
insert_secret ".s3_secret_key"
60+
# --
8361

84-
insert_secret ".radar_upload_postgres_password"
62+
# The NGINX password for prometheus follows a pattern different from others.
63+
nginx_auth_password=$(generate_secret)
64+
secret="thehyve:$(echo $nginx_auth_password | openssl passwd -apr1 -stdin)" insert_secret ".kube_prometheus_stack.nginx_auth"
65+
comment="username: thehyve, password: $nginx_auth_password" yq -i ".kube_prometheus_stack.nginx_auth line_comment |= strenv(comment)" etc/secrets.yaml
8566

86-
echo "Passwords and secrets have been generated successfully."
67+
# Generate secrets for all remaining fields with value 'secret'.
68+
replacements=$(yq e '.. | select(. == "secret") | [(path | "."+join("."))] | join(" ")' etc/secrets.yaml);
69+
for key in $replacements; do
70+
insert_secret $key
71+
done

etc/base-secrets.yaml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# NOTE:
2-
# - properties equal to 'secret' will be replaced by the bin/generate-secrets script
3-
# - properties equal to 'change_me' should be replaced manually (externally provided secrets)
2+
# - properties equal to 'secret' will be replaced by the bin/generate-secrets script.
3+
# - properties equal to 'change_me' are externally provided secrets that should be replaced manually.
44

55
# --------------------------------------------------------- 00-init.yaml ---------------------------------------------------------
66
mongodb:
@@ -47,12 +47,12 @@ kafka_manager:
4747
# --------------------------------------------------------- 10-base.yaml ---------------------------------------------------------
4848
confluent_cloud:
4949
cc:
50-
bootstrapServerurl: confluentBootstrapServers
51-
schemaRegistryUrl: confluentSchemaRegistryUrl
52-
apiKey: ccApikey
53-
apiSecret: ccApiSecret
54-
schemaRegistryApiKey: srApiKey
55-
schemaRegistryApiSecret: srApiSecret
50+
bootstrapServerurl: change_me
51+
schemaRegistryUrl: change_me
52+
apiKey: change_me
53+
apiSecret: change_me
54+
schemaRegistryApiKey: change_me
55+
schemaRegistryApiSecret: change_me
5656

5757
# --------------------------------------------------------- 10-managementportal.yaml ---------------------------------------------------------
5858
postgresql:
@@ -146,8 +146,8 @@ radar_integration:
146146
# --------------------------------------------------------- 20-s3-connector.yaml ---------------------------------------------------------
147147
# The access keys and secret keys of object storage services should match.
148148
# If AWS S3 is used as a storage medium instead of minio, then fill in those.
149-
s3_access_key: secret
150-
s3_secret_key: secret
149+
s3_access_key: change_me
150+
s3_secret_key: change_me
151151

152152
# --------------------------------------------------------- 20-upload.yaml ---------------------------------------------------------
153153
radar_upload_postgres_password: secret
@@ -172,4 +172,4 @@ velero:
172172
cloud: |
173173
[default]
174174
aws_access_key_id=change_me
175-
aws_secret_access_key=change_me
175+
aws_secret_access_key=change_me

0 commit comments

Comments
 (0)