templates/geo_sql_template.rb (81 lines of code) (raw):
# frozen_string_literal: true
# Configure the Geo secondary role and the PostgreSQL role
roles %w[geo_secondary_role postgres_role]
# Pgbouncer configuration
pgbouncer['enable'] = true
pgbouncer['auth_type'] = 'trust'
pgbouncer['admin_users'] = %w[pgbouncer gitlab-consul]
pgbouncer['users'] = {
'gitlab-consul': {
password: __CONSUL_PASSWORD__
},
pgbouncer: {
password: __PGBOUNCER_PASSWORD__
}
}
# TBD: How to make this dynamic?
pgbouncer['databases'] = {
gitlabhq_production: {
host: __SQL_NODES__[0],
user: 'pgbouncer',
password: __PGBOUNCER_PASSWORD__
}
}
# __GEO_REPLICA_NODE__ = SQLNODE001
# __GEO_TRACKING_NODE__ = SQLNODE002
# GEO Logcursor should be enbled on tracking DB node
geo_logcursor['enable'] = __HOST_FQDN__ == __GEO_TRACKING_NODE__
if __HOST_FQDN__ == __GEO_REPLICA_NODE__
postgresql['listen_address'] = __HOST_FQDN__
postgresql['port'] = 5432
postgresql['md5_auth_cidr_addresses'] = __OTHER_SQL_NODES__ + __WEB_NODES__ + __SQL_NODES__
postgresql['trust_auth_cidr_addresses'] = __SQL_NODES__ + __SK_NODES__
# Database credentials password (defined previously in primary node) replicate same values here as
# defined in primary node
postgresql['sql_user_password'] =
# Database credentials password (defined previously in primary node) replicate same values here as
# defined in primary node
gitlab_rails['db_username'] = 'gitlab-psql'
gitlab_rails['db_password'] = __ROOT_PASSWORD__
# When running the Geo tracking database on a separate machine, disable it here and allow
# connections from the tracking database host. And ensure the tracking database IP is in
# postgresql['md5_auth_cidr_addresses'] above.
geo_postgresql['enable'] = false
else
# Set only on non REPLICA DB Nodes
geo_postgresql['enable'] = __HOST_FQDN__ == __GEO_TRACKING_NODE__
postgresql['enable'] = false
end
if __HOST_FQDN__ == __GEO_TRACKING_NODE__
gitlab_rails['db_host'] = __GEO_REPLICA_NODE__
geo_postgresql['listen_address'] = __HOST_FQDN__
geo_postgresql['sql_user_password'] = __SQL_USER_PASSWORD__
geo_secondary['db_fdw'] = true
geo_postgresql['fdw_external_user'] = 'gitlab_geo_fdw'
geo_postgresql['fdw_external_password'] = __ROOT_PASSWORD__
geo_postgresql['md5_auth_cidr_addresses'] = __SQL_NODES__ + __WEB_NODES__ + __SK_NODES__ + __OTHER_SQL_NODES__
end
gitlab_rails['auto_migrate'] = false
# Disable all other services that aren't needed, since we don't have a role
alertmanager['enable'] = false
consul['enable'] = false
gitaly['enable'] = false
gitlab_exporter['enable'] = false
gitlab_workhorse['enable'] = false
nginx['enable'] = false
prometheus['enable'] = false
redis['enable'] = false
redis_exporter['enable'] = false
repmgr['enable'] = false
sidekiq['enable'] = false
puma['enable'] = false
# postgres_exporter['enable'] = false
# PostgresSQl SSL
postgresql['ssl'] = 'on'
postgresql['ssl_ciphers'] = 'HIGH:MEDIUM:+3DES:!aNULL:!SSLv3:!TLSv1'
postgresql['ssl_cert_file'] = '/etc/gitlab/ssl/psql.crt'
postgresql['ssl_key_file'] = '/etc/gitlab/ssl/psql.key'
postgresql['ssl_ca_file'] = '/opt/gitlab/embedded/ssl/certs/cacert.pem'
postgresql['ssl_crl_file'] = nil
postgresql['hot_standby_feedback'] = 'on'
node_exporter['listen_address'] = "#{__HOST_FQDN__}:9100"
# Enable service discovery for Prometheus
consul['enable'] = true
consul['monitoring_service_discovery'] = true
consul['configuration'] = {
retry_join: __CONSUL_NODES__,
bind_addr: __PUBLIC_IP_ADDRESS__
}
# Backup Settings
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = '/srv/backup'
gitlab_rails['backup_archive_permissions'] = 0o644
gitlab_rails['backup_pg_schema'] = 'public'
# #####PSQL performance tuning#####
postgresql['shmmax'] = 51_539_607_552
postgresql['shmall'] = 12_582_912
postgresql['shared_buffers'] = '30GB'
postgresql['max_connections'] = 500
postgresql['sql_user'] = 'gitlab-psql'
pgbouncer['default_pool_size'] = '150'
postgres_exporter['enable'] = false
pgbouncer_exporter['enable'] = false