Commit 28601d26f69a999ff0197f177d6e6c126d1a2693

Authored by Jacob Vosmaer
2 parents 22c45c12 6f0afb3c

Merge branch 'postgres' into 'master'

Postgres
files/gitlab-cookbooks/gitlab/attributes/default.rb 0 → 100644
... ... @@ -0,0 +1,59 @@
  1 +#
  2 +# Copyright:: Copyright (c) 2012 Opscode, Inc.
  3 +# License:: Apache License, Version 2.0
  4 +#
  5 +# Licensed under the Apache License, Version 2.0 (the "License");
  6 +# you may not use this file except in compliance with the License.
  7 +# You may obtain a copy of the License at
  8 +#
  9 +# http://www.apache.org/licenses/LICENSE-2.0
  10 +#
  11 +# Unless required by applicable law or agreed to in writing, software
  12 +# distributed under the License is distributed on an "AS IS" BASIS,
  13 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 +# See the License for the specific language governing permissions and
  15 +# limitations under the License.
  16 +#
  17 +
  18 +default['gitlab']['bootstrap']['enable'] = true
  19 +
  20 +###
  21 +# PostgreSQL
  22 +###
  23 +default['gitlab']['postgresql']['enable'] = true
  24 +default['gitlab']['postgresql']['ha'] = false
  25 +default['gitlab']['postgresql']['dir'] = "/var/opt/gitlab/postgresql"
  26 +default['gitlab']['postgresql']['data_dir'] = "/var/opt/gitlab/postgresql/data"
  27 +default['gitlab']['postgresql']['log_directory'] = "/var/log/gitlab/postgresql"
  28 +default['gitlab']['postgresql']['svlogd_size'] = 1000000
  29 +default['gitlab']['postgresql']['svlogd_num'] = 10
  30 +default['gitlab']['postgresql']['username'] = "gitlab-psql"
  31 +default['gitlab']['postgresql']['shell'] = "/bin/sh"
  32 +default['gitlab']['postgresql']['home'] = "/var/opt/gitlab/postgresql"
  33 +default['gitlab']['postgresql']['user_path'] = "/opt/gitlab/embedded/bin:/opt/gitlab/bin:$PATH"
  34 +default['gitlab']['postgresql']['sql_user'] = "gitlab"
  35 +default['gitlab']['postgresql']['sql_password'] = "snakepliskin"
  36 +default['gitlab']['postgresql']['vip'] = "127.0.0.1"
  37 +default['gitlab']['postgresql']['port'] = 5432
  38 +default['gitlab']['postgresql']['listen_address'] = 'localhost'
  39 +default['gitlab']['postgresql']['max_connections'] = 200
  40 +default['gitlab']['postgresql']['md5_auth_cidr_addresses'] = [ ]
  41 +default['gitlab']['postgresql']['trust_auth_cidr_addresses'] = [ '127.0.0.1/32', '::1/128' ]
  42 +default['gitlab']['postgresql']['shmmax'] = kernel['machine'] =~ /x86_64/ ? 17179869184 : 4294967295
  43 +default['gitlab']['postgresql']['shmall'] = kernel['machine'] =~ /x86_64/ ? 4194304 : 1048575
  44 +
  45 +# Resolves CHEF-3889
  46 +if (node['memory']['total'].to_i / 4) > ((node['gitlab']['postgresql']['shmmax'].to_i / 1024) - 2097152)
  47 + # guard against setting shared_buffers > shmmax on hosts with installed RAM > 64GB
  48 + # use 2GB less than shmmax as the default for these large memory machines
  49 + default['gitlab']['postgresql']['shared_buffers'] = "14336MB"
  50 +else
  51 + default['gitlab']['postgresql']['shared_buffers'] = "#{(node['memory']['total'].to_i / 4) / (1024)}MB"
  52 +end
  53 +
  54 +default['gitlab']['postgresql']['work_mem'] = "8MB"
  55 +default['gitlab']['postgresql']['effective_cache_size'] = "#{(node['memory']['total'].to_i / 2) / (1024)}MB"
  56 +default['gitlab']['postgresql']['checkpoint_segments'] = 10
  57 +default['gitlab']['postgresql']['checkpoint_timeout'] = "5min"
  58 +default['gitlab']['postgresql']['checkpoint_completion_target'] = 0.9
  59 +default['gitlab']['postgresql']['checkpoint_warning'] = "30s"
... ...
files/gitlab-cookbooks/gitlab/libraries/chef_server.rb 0 → 100644
... ... @@ -0,0 +1,85 @@
  1 +#
  2 +# Copyright:: Copyright (c) 2012 Opscode, Inc.
  3 +# License:: Apache License, Version 2.0
  4 +#
  5 +# Licensed under the Apache License, Version 2.0 (the "License");
  6 +# you may not use this file except in compliance with the License.
  7 +# You may obtain a copy of the License at
  8 +#
  9 +# http://www.apache.org/licenses/LICENSE-2.0
  10 +#
  11 +# Unless required by applicable law or agreed to in writing, software
  12 +# distributed under the License is distributed on an "AS IS" BASIS,
  13 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 +# See the License for the specific language governing permissions and
  15 +# limitations under the License.
  16 +#
  17 +
  18 +require 'mixlib/config'
  19 +require 'chef/mash'
  20 +require 'chef/json_compat'
  21 +require 'chef/mixin/deep_merge'
  22 +require 'securerandom'
  23 +
  24 +module GitLab
  25 + extend(Mixlib::Config)
  26 +
  27 + bootstrap Mash.new
  28 + postgresql Mash.new
  29 + node nil
  30 +
  31 + class << self
  32 +
  33 + # guards against creating secrets on non-bootstrap node
  34 + def generate_hex(chars)
  35 + SecureRandom.hex(chars)
  36 + end
  37 +
  38 + def generate_secrets(node_name)
  39 + existing_secrets ||= Hash.new
  40 + if File.exists?("/etc/gitlab/gitlab-secrets.json")
  41 + existing_secrets = Chef::JSONCompat.from_json(File.read("/etc/gitlab/gitlab-secrets.json"))
  42 + end
  43 + existing_secrets.each do |k, v|
  44 + v.each do |pk, p|
  45 + GitLab[k][pk] = p
  46 + end
  47 + end
  48 +
  49 + GitLab['postgresql']['sql_password'] ||= generate_hex(50)
  50 + GitLab['postgresql']['sql_ro_password'] ||= generate_hex(50)
  51 +
  52 + if File.directory?("/etc/gitlab")
  53 + File.open("/etc/gitlab/gitlab-secrets.json", "w") do |f|
  54 + f.puts(
  55 + Chef::JSONCompat.to_json_pretty({
  56 + 'postgresql' => {
  57 + 'sql_password' => GitLab['postgresql']['sql_password'],
  58 + 'sql_ro_password' => GitLab['postgresql']['sql_ro_password']
  59 + },
  60 + })
  61 + )
  62 + system("chmod 0600 /etc/gitlab/gitlab-secrets.json")
  63 + end
  64 + end
  65 + end
  66 +
  67 + def generate_hash
  68 + results = { "gitlab" => {} }
  69 + [
  70 + "bootstrap",
  71 + "postgresql"
  72 + ].each do |key|
  73 + rkey = key.gsub('_', '-')
  74 + results['gitlab'][rkey] = GitLab[key]
  75 + end
  76 +
  77 + results
  78 + end
  79 +
  80 + def generate_config(node_name)
  81 + generate_secrets(node_name)
  82 + generate_hash
  83 + end
  84 + end
  85 +end
... ...
files/gitlab-cookbooks/gitlab/libraries/helper.rb 0 → 100644
... ... @@ -0,0 +1,88 @@
  1 +#
  2 +# Copyright:: Copyright (c) 2012 Opscode, Inc.
  3 +# License:: Apache License, Version 2.0
  4 +#
  5 +# Licensed under the Apache License, Version 2.0 (the "License");
  6 +# you may not use this file except in compliance with the License.
  7 +# You may obtain a copy of the License at
  8 +#
  9 +# http://www.apache.org/licenses/LICENSE-2.0
  10 +#
  11 +# Unless required by applicable law or agreed to in writing, software
  12 +# distributed under the License is distributed on an "AS IS" BASIS,
  13 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 +# See the License for the specific language governing permissions and
  15 +# limitations under the License.
  16 +#
  17 +
  18 +require 'mixlib/shellout'
  19 +
  20 +class PgHelper
  21 + attr_reader :node
  22 +
  23 + def initialize(node)
  24 + @node = node
  25 + end
  26 +
  27 + def is_running?
  28 + OmnibusHelper.service_up?("postgresql")
  29 + end
  30 +
  31 + def database_exists?(db_name)
  32 + psql_cmd(["-d 'template1'",
  33 + "-c 'select datname from pg_database' -A",
  34 + "| grep -x #{db_name}"])
  35 + end
  36 +
  37 + def sql_user_exists?
  38 + user_exists?(node['gitlab']['postgresql']['sql_user'])
  39 + end
  40 +
  41 + def sql_ro_user_exists?
  42 + user_exists?(node['gitlab']['postgresql']['sql_ro_user'])
  43 + end
  44 +
  45 + def user_exists?(db_user)
  46 + psql_cmd(["-d 'template1'",
  47 + "-c 'select usename from pg_user' -A",
  48 + "|grep -x #{db_user}"])
  49 + end
  50 +
  51 + def psql_cmd(cmd_list)
  52 + cmd = ["/opt/gitlab/embedded/bin/chpst",
  53 + "-u #{pg_user}",
  54 + "/opt/gitlab/embedded/bin/psql",
  55 + "--port #{pg_port}",
  56 + cmd_list.join(" ")].join(" ")
  57 + do_shell_out(cmd, 0)
  58 + end
  59 +
  60 + def pg_user
  61 + node['gitlab']['postgresql']['username']
  62 + end
  63 +
  64 + def pg_port
  65 + node['gitlab']['postgresql']['port']
  66 + end
  67 +
  68 + def do_shell_out(cmd, expect_status)
  69 + o = Mixlib::ShellOut.new(cmd)
  70 + o.run_command
  71 + o.exitstatus == expect_status
  72 + end
  73 +
  74 +end
  75 +
  76 +class OmnibusHelper
  77 +
  78 + def self.should_notify?(service_name)
  79 + File.symlink?("/opt/gitlab/service/#{service_name}") && service_up?(service_name)
  80 + end
  81 +
  82 + def self.service_up?(service_name)
  83 + o = Mixlib::ShellOut.new("/opt/gitlab/bin/gitlab-ctl status #{service_name}")
  84 + o.run_command
  85 + o.exitstatus == 0
  86 + end
  87 +
  88 +end
... ...
files/gitlab-cookbooks/gitlab/recipes/default.rb
  1 +#
  2 +# Copyright:: Copyright (c) 2012 Opscode, Inc.
  3 +# License:: Apache License, Version 2.0
  4 +#
  5 +# Licensed under the Apache License, Version 2.0 (the "License");
  6 +# you may not use this file except in compliance with the License.
  7 +# You may obtain a copy of the License at
  8 +#
  9 +# http://www.apache.org/licenses/LICENSE-2.0
  10 +#
  11 +# Unless required by applicable law or agreed to in writing, software
  12 +# distributed under the License is distributed on an "AS IS" BASIS,
  13 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 +# See the License for the specific language governing permissions and
  15 +# limitations under the License.
  16 +#
  17 +
  18 +require 'openssl'
  19 +
  20 +ENV['PATH'] = "/opt/gitlab/bin:/opt/gitlab/embedded/bin:#{ENV['PATH']}"
  21 +
  22 +directory "/etc/gitlab" do
  23 + owner "root"
  24 + group "root"
  25 + mode "0775"
  26 + action :nothing
  27 +end.run_action(:create)
  28 +
  29 +GitLab[:node] = node
  30 +if File.exists?("/etc/gitlab/gitlab.rb")
  31 + GitLab.from_file("/etc/gitlab/gitlab.rb")
  32 +end
  33 +node.consume_attributes(GitLab.generate_config(node['fqdn']))
  34 +
  35 +if File.exists?("/var/opt/gitlab/bootstrapped")
  36 + node.set['gitlab']['bootstrap']['enable'] = false
  37 +end
  38 +
  39 +directory "/var/opt/gitlab" do
  40 + owner "root"
  41 + group "root"
  42 + mode "0755"
  43 + recursive true
  44 + action :create
  45 +end
  46 +
  47 +# Install our runit instance
1 48 include_recipe "runit"
  49 +
  50 +# Configure Services
  51 +[
  52 + "postgresql",
  53 +].each do |service|
  54 + if node["gitlab"][service]["enable"]
  55 + include_recipe "gitlab::#{service}"
  56 + else
  57 + include_recipe "gitlab::#{service}_disable"
  58 + end
  59 +end
... ...
files/gitlab-cookbooks/gitlab/recipes/postgresql.rb 0 → 100644
... ... @@ -0,0 +1,156 @@
  1 +#
  2 +# Copyright:: Copyright (c) 2012 Opscode, Inc.
  3 +# License:: Apache License, Version 2.0
  4 +#
  5 +# Licensed under the Apache License, Version 2.0 (the "License");
  6 +# you may not use this file except in compliance with the License.
  7 +# You may obtain a copy of the License at
  8 +#
  9 +# http://www.apache.org/licenses/LICENSE-2.0
  10 +#
  11 +# Unless required by applicable law or agreed to in writing, software
  12 +# distributed under the License is distributed on an "AS IS" BASIS,
  13 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 +# See the License for the specific language governing permissions and
  15 +# limitations under the License.
  16 +#
  17 +
  18 +postgresql_dir = node['gitlab']['postgresql']['dir']
  19 +postgresql_data_dir = node['gitlab']['postgresql']['data_dir']
  20 +postgresql_data_dir_symlink = File.join(postgresql_dir, "data")
  21 +postgresql_log_dir = node['gitlab']['postgresql']['log_directory']
  22 +
  23 +user node['gitlab']['postgresql']['username'] do
  24 + system true
  25 + shell node['gitlab']['postgresql']['shell']
  26 + home node['gitlab']['postgresql']['home']
  27 +end
  28 +
  29 +directory postgresql_log_dir do
  30 + owner node['gitlab']['postgresql']['username']
  31 + recursive true
  32 +end
  33 +
  34 +directory postgresql_dir do
  35 + owner node['gitlab']['postgresql']['username']
  36 + mode "0700"
  37 +end
  38 +
  39 +directory postgresql_data_dir do
  40 + owner node['gitlab']['postgresql']['username']
  41 + mode "0700"
  42 + recursive true
  43 +end
  44 +
  45 +link postgresql_data_dir_symlink do
  46 + to postgresql_data_dir
  47 + not_if { postgresql_data_dir == postgresql_data_dir_symlink }
  48 +end
  49 +
  50 +file File.join(node['gitlab']['postgresql']['home'], ".profile") do
  51 + owner node['gitlab']['postgresql']['username']
  52 + mode "0644"
  53 + content <<-EOH
  54 +PATH=#{node['gitlab']['postgresql']['user_path']}
  55 +EOH
  56 +end
  57 +
  58 +if File.directory?("/etc/sysctl.d") && File.exists?("/etc/init.d/procps")
  59 + # smells like ubuntu...
  60 + service "procps" do
  61 + action :nothing
  62 + end
  63 +
  64 + template "/etc/sysctl.d/90-postgresql.conf" do
  65 + source "90-postgresql.conf.sysctl.erb"
  66 + owner "root"
  67 + mode "0644"
  68 + variables(node['gitlab']['postgresql'].to_hash)
  69 + notifies :start, 'service[procps]', :immediately
  70 + end
  71 +else
  72 + # hope this works...
  73 + execute "sysctl" do
  74 + command "/sbin/sysctl -p /etc/sysctl.conf"
  75 + action :nothing
  76 + end
  77 +
  78 + bash "add shm settings" do
  79 + user "root"
  80 + code <<-EOF
  81 + echo 'kernel.shmmax = #{node['gitlab']['postgresql']['shmmax']}' >> /etc/sysctl.conf
  82 + echo 'kernel.shmall = #{node['gitlab']['postgresql']['shmall']}' >> /etc/sysctl.conf
  83 + EOF
  84 + notifies :run, 'execute[sysctl]', :immediately
  85 + not_if "egrep '^kernel.shmmax = ' /etc/sysctl.conf"
  86 + end
  87 +end
  88 +
  89 +execute "/opt/gitlab/embedded/bin/initdb -D #{postgresql_data_dir} -E UTF8" do
  90 + user node['gitlab']['postgresql']['username']
  91 + not_if { File.exists?(File.join(postgresql_data_dir, "PG_VERSION")) }
  92 +end
  93 +
  94 +postgresql_config = File.join(postgresql_data_dir, "postgresql.conf")
  95 +
  96 +template postgresql_config do
  97 + source "postgresql.conf.erb"
  98 + owner node['gitlab']['postgresql']['username']
  99 + mode "0644"
  100 + variables(node['gitlab']['postgresql'].to_hash)
  101 + notifies :restart, 'service[postgresql]' if OmnibusHelper.should_notify?("postgresql")
  102 +end
  103 +
  104 +pg_hba_config = File.join(postgresql_data_dir, "pg_hba.conf")
  105 +
  106 +template pg_hba_config do
  107 + source "pg_hba.conf.erb"
  108 + owner node['gitlab']['postgresql']['username']
  109 + mode "0644"
  110 + variables(node['gitlab']['postgresql'].to_hash)
  111 + notifies :restart, 'service[postgresql]' if OmnibusHelper.should_notify?("postgresql")
  112 +end
  113 +
  114 +should_notify = OmnibusHelper.should_notify?("postgresql")
  115 +
  116 +runit_service "postgresql" do
  117 + down node['gitlab']['postgresql']['ha']
  118 + control(['t'])
  119 + options({
  120 + :log_directory => postgresql_log_dir,
  121 + :svlogd_size => node['gitlab']['postgresql']['svlogd_size'],
  122 + :svlogd_num => node['gitlab']['postgresql']['svlogd_num']
  123 + }.merge(params))
  124 +end
  125 +
  126 +if node['gitlab']['bootstrap']['enable']
  127 + execute "/opt/gitlab/bin/gitlab-ctl start postgresql" do
  128 + retries 20
  129 + end
  130 +end
  131 +
  132 +###
  133 +# Create the database, migrate it, and create the users we need, and grant them
  134 +# privileges.
  135 +###
  136 +pg_helper = PgHelper.new(node)
  137 +pg_port = node['gitlab']['postgresql']['port']
  138 +pg_user = node['gitlab']['postgresql']['username']
  139 +bin_dir = "/opt/gitlab/embedded/bin"
  140 +db_name = "gitlabhq_production"
  141 +
  142 +sql_user = node['gitlab']['postgresql']['sql_user']
  143 +sql_user_passwd = node['gitlab']['postgresql']['sql_password']
  144 +
  145 +execute "#{bin_dir}/psql --port #{pg_port} -d template1 -c \"CREATE USER #{sql_user} WITH ENCRYPTED PASSWORD '#{sql_user_passwd}'\"" do
  146 + user pg_user
  147 + not_if { !pg_helper.is_running? || pg_helper.sql_user_exists? }
  148 +end
  149 +
  150 +execute "create #{db_name} database" do
  151 + command "#{bin_dir}/createdb --port #{pg_port} -O #{sql_user} #{db_name}"
  152 + user pg_user
  153 + not_if { !pg_helper.is_running? || pg_helper.database_exists?(db_name) }
  154 + retries 30
  155 + # notifies :run, "execute[migrate_database]", :immediately
  156 +end
... ...
files/gitlab-cookbooks/gitlab/recipes/postgresql_disable.rb 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +#
  2 +# Copyright:: Copyright (c) 2012 Opscode, Inc.
  3 +# License:: Apache License, Version 2.0
  4 +#
  5 +# Licensed under the Apache License, Version 2.0 (the "License");
  6 +# you may not use this file except in compliance with the License.
  7 +# You may obtain a copy of the License at
  8 +#
  9 +# http://www.apache.org/licenses/LICENSE-2.0
  10 +#
  11 +# Unless required by applicable law or agreed to in writing, software
  12 +# distributed under the License is distributed on an "AS IS" BASIS,
  13 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 +# See the License for the specific language governing permissions and
  15 +# limitations under the License.
  16 +#
  17 +
  18 +runit_service "postgresql" do
  19 + action :disable
  20 +end
... ...
files/gitlab-cookbooks/gitlab/templates/default/90-postgresql.conf.sysctl.erb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +#
  2 +# gitlab postgresql kernel shm tweaks
  3 +#
  4 +kernel.shmmax = <%= node['gitlab']['postgresql']['shmmax'] %>
  5 +kernel.shmall = <%= node['gitlab']['postgresql']['shmall'] %>
... ...
files/gitlab-cookbooks/gitlab/templates/default/pg_hba.conf.erb 0 → 100644
... ... @@ -0,0 +1,75 @@
  1 +# PostgreSQL Client Authentication Configuration File
  2 +# ===================================================
  3 +#
  4 +# Refer to the "Client Authentication" section in the
  5 +# PostgreSQL documentation for a complete description
  6 +# of this file. A short synopsis follows.
  7 +#
  8 +# This file controls: which hosts are allowed to connect, how clients
  9 +# are authenticated, which PostgreSQL user names they can use, which
  10 +# databases they can access. Records take one of these forms:
  11 +#
  12 +# local DATABASE USER METHOD [OPTION]
  13 +# host DATABASE USER CIDR-ADDRESS METHOD [OPTION]
  14 +# hostssl DATABASE USER CIDR-ADDRESS METHOD [OPTION]
  15 +# hostnossl DATABASE USER CIDR-ADDRESS METHOD [OPTION]
  16 +#
  17 +# (The uppercase items must be replaced by actual values.)
  18 +#
  19 +# The first field is the connection type: "local" is a Unix-domain socket,
  20 +# "host" is either a plain or SSL-encrypted TCP/IP socket, "hostssl" is an
  21 +# SSL-encrypted TCP/IP socket, and "hostnossl" is a plain TCP/IP socket.
  22 +#
  23 +# DATABASE can be "all", "sameuser", "samerole", a database name, or
  24 +# a comma-separated list thereof.
  25 +#
  26 +# USER can be "all", a user name, a group name prefixed with "+", or
  27 +# a comma-separated list thereof. In both the DATABASE and USER fields
  28 +# you can also write a file name prefixed with "@" to include names from
  29 +# a separate file.
  30 +#
  31 +# CIDR-ADDRESS specifies the set of hosts the record matches.
  32 +# It is made up of an IP address and a CIDR mask that is an integer
  33 +# (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies
  34 +# the number of significant bits in the mask. Alternatively, you can write
  35 +# an IP address and netmask in separate columns to specify the set of hosts.
  36 +#
  37 +# METHOD can be "trust", "reject", "md5", "crypt", "password", "gss", "sspi",
  38 +# "krb5", "ident", "pam" or "ldap". Note that "password" sends passwords
  39 +# in clear text; "md5" is preferred since it sends encrypted passwords.
  40 +#
  41 +# OPTION is the ident map or the name of the PAM service, depending on METHOD.
  42 +#
  43 +# Database and user names containing spaces, commas, quotes and other special
  44 +# characters must be quoted. Quoting one of the keywords "all", "sameuser" or
  45 +# "samerole" makes the name lose its special character, and just match a
  46 +# database or username with that name.
  47 +#
  48 +# This file is read on server startup and when the postmaster receives
  49 +# a SIGHUP signal. If you edit the file on a running system, you have
  50 +# to SIGHUP the postmaster for the changes to take effect. You can use
  51 +# "pg_ctl reload" to do that.
  52 +
  53 +# Put your actual configuration here
  54 +# ----------------------------------
  55 +#
  56 +# If you want to allow non-local connections, you need to add more
  57 +# "host" records. In that case you will also need to make PostgreSQL listen
  58 +# on a non-local interface via the listen_addresses configuration parameter,
  59 +# or via the -i or -h command line switches.
  60 +#
  61 +
  62 +
  63 +# TYPE DATABASE USER CIDR-ADDRESS METHOD
  64 +
  65 +# "local" is for Unix domain socket connections only
  66 +local all all trust
  67 +
  68 +<% node['gitlab']['postgresql']['trust_auth_cidr_addresses'].each do |cidr| %>
  69 +host all all <%= cidr %> trust
  70 +<% end %>
  71 +
  72 +<% node['gitlab']['postgresql']['md5_auth_cidr_addresses'].each do |cidr| %>
  73 +host all all <%= cidr %> md5
  74 +<% end %>
  75 +
... ...
files/gitlab-cookbooks/gitlab/templates/default/postgresql-init.erb 0 → 100755
... ... @@ -0,0 +1,29 @@
  1 +#!/bin/sh
  2 +
  3 +#
  4 +# make postgresql stop/restart send sigint to terminate clients to postgresql
  5 +# immediately.
  6 +#
  7 +
  8 +RETVAL=0
  9 +
  10 +case "$1" in
  11 + stop|force-stop)
  12 + /opt/gitlab/embedded/bin/sv once postgresql
  13 + /opt/gitlab/embedded/bin/sv interrupt postgresql
  14 + RETVAL=$?
  15 + ;;
  16 + restart)
  17 + /opt/gitlab/embedded/bin/sv once postgresql
  18 + /opt/gitlab/embedded/bin/sv interrupt postgresql
  19 + sleep 5
  20 + /opt/gitlab/embedded/bin/sv start postgresql
  21 + RETVAL=$?
  22 + ;;
  23 + *)
  24 + /opt/gitlab/embedded/bin/sv $1 postgresql
  25 + RETVAL=$?
  26 +esac
  27 +
  28 +exit $RETVAL
  29 +
... ...
files/gitlab-cookbooks/gitlab/templates/default/postgresql.conf.erb 0 → 100644
... ... @@ -0,0 +1,556 @@
  1 +# -----------------------------
  2 +# PostgreSQL configuration file
  3 +# -----------------------------
  4 +#
  5 +# This file consists of lines of the form:
  6 +#
  7 +# name = value
  8 +#
  9 +# (The "=" is optional.) Whitespace may be used. Comments are introduced with
  10 +# "#" anywhere on a line. The complete list of parameter names and allowed
  11 +# values can be found in the PostgreSQL documentation.
  12 +#
  13 +# The commented-out settings shown in this file represent the default values.
  14 +# Re-commenting a setting is NOT sufficient to revert it to the default value;
  15 +# you need to reload the server.
  16 +#
  17 +# This file is read on server startup and when the server receives a SIGHUP
  18 +# signal. If you edit the file on a running system, you have to SIGHUP the
  19 +# server for the changes to take effect, or use "pg_ctl reload". Some
  20 +# parameters, which are marked below, require a server shutdown and restart to
  21 +# take effect.
  22 +#
  23 +# Any parameter can also be given as a command-line option to the server, e.g.,
  24 +# "postgres -c log_connections=on". Some parameters can be changed at run time
  25 +# with the "SET" SQL command.
  26 +#
  27 +# Memory units: kB = kilobytes Time units: ms = milliseconds
  28 +# MB = megabytes s = seconds
  29 +# GB = gigabytes min = minutes
  30 +# h = hours
  31 +# d = days
  32 +
  33 +
  34 +#------------------------------------------------------------------------------
  35 +# FILE LOCATIONS
  36 +#------------------------------------------------------------------------------
  37 +
  38 +# The default values of these variables are driven from the -D command-line
  39 +# option or PGDATA environment variable, represented here as ConfigDir.
  40 +
  41 +#data_directory = 'ConfigDir' # use data in another directory
  42 + # (change requires restart)
  43 +#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
  44 + # (change requires restart)
  45 +#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file
  46 + # (change requires restart)
  47 +
  48 +# If external_pid_file is not explicitly set, no extra PID file is written.
  49 +#external_pid_file = '(none)' # write an extra PID file
  50 + # (change requires restart)
  51 +
  52 +
  53 +#------------------------------------------------------------------------------
  54 +# CONNECTIONS AND AUTHENTICATION
  55 +#------------------------------------------------------------------------------
  56 +
  57 +# - Connection Settings -
  58 +
  59 +listen_addresses = '<%= node['gitlab']['postgresql']['listen_address'] %>' # what IP address(es) to listen on;
  60 + # comma-separated list of addresses;
  61 + # defaults to 'localhost', '*' = all
  62 + # (change requires restart)
  63 +port = <%= node['gitlab']['postgresql']['port'] %> # (change requires restart)
  64 +max_connections = <%= node['gitlab']['postgresql']['max_connections'] %> # (change requires restart)
  65 +# Note: Increasing max_connections costs ~400 bytes of shared memory per
  66 +# connection slot, plus lock space (see max_locks_per_transaction).
  67 +#superuser_reserved_connections = 3 # (change requires restart)
  68 +#unix_socket_directory = '' # (change requires restart)
  69 +#unix_socket_group = '' # (change requires restart)
  70 +#unix_socket_permissions = 0777 # begin with 0 to use octal notation
  71 + # (change requires restart)
  72 +#bonjour = off # advertise server via Bonjour
  73 + # (change requires restart)
  74 +#bonjour_name = '' # defaults to the computer name
  75 + # (change requires restart)
  76 +
  77 +# - Security and Authentication -
  78 +
  79 +#authentication_timeout = 1min # 1s-600s
  80 +#ssl = off # (change requires restart)
  81 +#ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers
  82 + # (change requires restart)
  83 +#ssl_renegotiation_limit = 512MB # amount of data between renegotiations
  84 +#password_encryption = on
  85 +#db_user_namespace = off
  86 +
  87 +# Kerberos and GSSAPI
  88 +#krb_server_keyfile = ''
  89 +#krb_srvname = 'postgres' # (Kerberos only)
  90 +#krb_caseins_users = off
  91 +
  92 +# - TCP Keepalives -
  93 +# see "man 7 tcp" for details
  94 +
  95 +#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
  96 + # 0 selects the system default
  97 +#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
  98 + # 0 selects the system default
  99 +#tcp_keepalives_count = 0 # TCP_KEEPCNT;
  100 + # 0 selects the system default
  101 +
  102 +
  103 +#------------------------------------------------------------------------------
  104 +# RESOURCE USAGE (except WAL)
  105 +#------------------------------------------------------------------------------
  106 +
  107 +# - Memory -
  108 +
  109 +shared_buffers = <%= node['gitlab']['postgresql']['shared_buffers'] %> # min 128kB
  110 + # (change requires restart)
  111 +#temp_buffers = 8MB # min 800kB
  112 +#max_prepared_transactions = 0 # zero disables the feature
  113 + # (change requires restart)
  114 +# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory
  115 +# per transaction slot, plus lock space (see max_locks_per_transaction).
  116 +# It is not advisable to set max_prepared_transactions nonzero unless you
  117 +# actively intend to use prepared transactions.
  118 +work_mem = <%= node['gitlab']['postgresql']['work_mem'] %> # min 64kB
  119 +#maintenance_work_mem = 16MB # min 1MB
  120 +#max_stack_depth = 2MB # min 100kB
  121 +
  122 +# - Kernel Resource Usage -
  123 +
  124 +#max_files_per_process = 1000 # min 25
  125 + # (change requires restart)
  126 +#shared_preload_libraries = '' # (change requires restart)
  127 +
  128 +# - Cost-Based Vacuum Delay -
  129 +
  130 +#vacuum_cost_delay = 0ms # 0-100 milliseconds
  131 +#vacuum_cost_page_hit = 1 # 0-10000 credits
  132 +#vacuum_cost_page_miss = 10 # 0-10000 credits
  133 +#vacuum_cost_page_dirty = 20 # 0-10000 credits
  134 +#vacuum_cost_limit = 200 # 1-10000 credits
  135 +
  136 +# - Background Writer -
  137 +
  138 +#bgwriter_delay = 200ms # 10-10000ms between rounds
  139 +#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round
  140 +#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round
  141 +
  142 +# - Asynchronous Behavior -
  143 +
  144 +#effective_io_concurrency = 1 # 1-1000. 0 disables prefetching
  145 +
  146 +
  147 +#------------------------------------------------------------------------------
  148 +# WRITE AHEAD LOG
  149 +#------------------------------------------------------------------------------
  150 +
  151 +# - Settings -
  152 +
  153 +#wal_level = minimal # minimal, archive, or hot_standby
  154 + # (change requires restart)
  155 +#fsync = on # turns forced synchronization on or off
  156 +#synchronous_commit = on # synchronization level; on, off, or local
  157 +#wal_sync_method = fsync # the default is the first option
  158 + # supported by the operating system:
  159 + # open_datasync
  160 + # fdatasync (default on Linux)
  161 + # fsync
  162 + # fsync_writethrough
  163 + # open_sync
  164 +#full_page_writes = on # recover from partial page writes
  165 +#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
  166 + # (change requires restart)
  167 +#wal_writer_delay = 200ms # 1-10000 milliseconds
  168 +
  169 +#commit_delay = 0 # range 0-100000, in microseconds
  170 +#commit_siblings = 5 # range 1-1000
  171 +
  172 +# - Checkpoints -
  173 +
  174 +checkpoint_segments = <%= node['gitlab']['postgresql']['checkpoint_segments'] %> # in logfile segments, min 1, 16MB each, default 3
  175 +checkpoint_timeout = <%= node['gitlab']['postgresql']['checkpoint_timeout'] %> # range 30s-1h, default 5min
  176 +checkpoint_completion_target = <%= node['gitlab']['postgresql']['checkpoint_completion_target'] %> # checkpoint target duration, 0.0 - 1.0, default 0.5
  177 +checkpoint_warning = <%= node['gitlab']['postgresql']['checkpoint_warning'] %> # 0 disables, default 30s
  178 +
  179 +# - Archiving -
  180 +
  181 +#archive_mode = off # allows archiving to be done
  182 + # (change requires restart)
  183 +#archive_command = '' # command to use to archive a logfile segment
  184 +#archive_timeout = 0 # force a logfile segment switch after this
  185 + # number of seconds; 0 disables
  186 +
  187 +
  188 +#------------------------------------------------------------------------------
  189 +# REPLICATION
  190 +#------------------------------------------------------------------------------
  191 +
  192 +# - Master Server -
  193 +
  194 +# These settings are ignored on a standby server
  195 +
  196 +#max_wal_senders = 0 # max number of walsender processes
  197 + # (change requires restart)
  198 +#wal_sender_delay = 1s # walsender cycle time, 1-10000 milliseconds
  199 +#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables
  200 +#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed
  201 +#replication_timeout = 60s # in milliseconds; 0 disables
  202 +#synchronous_standby_names = '' # standby servers that provide sync rep
  203 + # comma-separated list of application_name
  204 + # from standby(s); '*' = all
  205 +
  206 +# - Standby Servers -
  207 +
  208 +# These settings are ignored on a master server
  209 +
  210 +#hot_standby = off # "on" allows queries during recovery
  211 + # (change requires restart)
  212 +#max_standby_archive_delay = 30s # max delay before canceling queries
  213 + # when reading WAL from archive;
  214 + # -1 allows indefinite delay
  215 +#max_standby_streaming_delay = 30s # max delay before canceling queries
  216 + # when reading streaming WAL;
  217 + # -1 allows indefinite delay
  218 +#wal_receiver_status_interval = 10s # send replies at least this often
  219 + # 0 disables
  220 +#hot_standby_feedback = off # send info from standby to prevent
  221 + # query conflicts
  222 +
  223 +
  224 +#------------------------------------------------------------------------------
  225 +# QUERY TUNING
  226 +#------------------------------------------------------------------------------
  227 +
  228 +# - Planner Method Configuration -
  229 +
  230 +#enable_bitmapscan = on
  231 +#enable_hashagg = on
  232 +#enable_hashjoin = on
  233 +#enable_indexscan = on
  234 +#enable_material = on
  235 +#enable_mergejoin = on
  236 +#enable_nestloop = on
  237 +#enable_seqscan = on
  238 +#enable_sort = on
  239 +#enable_tidscan = on
  240 +
  241 +# - Planner Cost Constants -
  242 +
  243 +#seq_page_cost = 1.0 # measured on an arbitrary scale
  244 +#random_page_cost = 4.0 # same scale as above
  245 +#cpu_tuple_cost = 0.01 # same scale as above
  246 +#cpu_index_tuple_cost = 0.005 # same scale as above
  247 +#cpu_operator_cost = 0.0025 # same scale as above
  248 +effective_cache_size = <%= node['gitlab']['postgresql']['effective_cache_size'] %> # Default 128MB
  249 +
  250 +# - Genetic Query Optimizer -
  251 +
  252 +#geqo = on
  253 +#geqo_threshold = 12
  254 +#geqo_effort = 5 # range 1-10
  255 +#geqo_pool_size = 0 # selects default based on effort
  256 +#geqo_generations = 0 # selects default based on effort
  257 +#geqo_selection_bias = 2.0 # range 1.5-2.0
  258 +#geqo_seed = 0.0 # range 0.0-1.0
  259 +
  260 +# - Other Planner Options -
  261 +
  262 +#default_statistics_target = 100 # range 1-10000
  263 +#constraint_exclusion = partition # on, off, or partition
  264 +#cursor_tuple_fraction = 0.1 # range 0.0-1.0
  265 +#from_collapse_limit = 8
  266 +#join_collapse_limit = 8 # 1 disables collapsing of explicit
  267 + # JOIN clauses
  268 +
  269 +
  270 +#------------------------------------------------------------------------------
  271 +# ERROR REPORTING AND LOGGING
  272 +#------------------------------------------------------------------------------
  273 +
  274 +# - Where to Log -
  275 +
  276 +#log_destination = 'stderr' # Valid values are combinations of
  277 + # stderr, csvlog, syslog, and eventlog,
  278 + # depending on platform. csvlog
  279 + # requires logging_collector to be on.
  280 +
  281 +# This is used when logging to stderr:
  282 +#logging_collector = off # Enable capturing of stderr and csvlog
  283 + # into log files. Required to be on for
  284 + # csvlogs.
  285 + # (change requires restart)
  286 +
  287 +# These are only used if logging_collector is on:
  288 +#log_directory = 'pg_log' # directory where log files are written,
  289 + # can be absolute or relative to PGDATA
  290 +#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
  291 + # can include strftime() escapes
  292 +#log_file_mode = 0600 # creation mode for log files,
  293 + # begin with 0 to use octal notation
  294 +#log_truncate_on_rotation = off # If on, an existing log file with the
  295 + # same name as the new log file will be
  296 + # truncated rather than appended to.
  297 + # But such truncation only occurs on
  298 + # time-driven rotation, not on restarts
  299 + # or size-driven rotation. Default is
  300 + # off, meaning append to existing files
  301 + # in all cases.
  302 +#log_rotation_age = 1d # Automatic rotation of logfiles will
  303 + # happen after that time. 0 disables.
  304 +#log_rotation_size = 10MB # Automatic rotation of logfiles will
  305 + # happen after that much log output.
  306 + # 0 disables.
  307 +
  308 +# These are relevant when logging to syslog:
  309 +#syslog_facility = 'LOCAL0'
  310 +#syslog_ident = 'postgres'
  311 +
  312 +#silent_mode = off # Run server silently.
  313 + # DO NOT USE without syslog or
  314 + # logging_collector
  315 + # (change requires restart)
  316 +
  317 +
  318 +# - When to Log -
  319 +
  320 +#client_min_messages = notice # values in order of decreasing detail:
  321 + # debug5
  322 + # debug4
  323 + # debug3
  324 + # debug2
  325 + # debug1
  326 + # log
  327 + # notice
  328 + # warning
  329 + # error
  330 +
  331 +#log_min_messages = warning # values in order of decreasing detail:
  332 + # debug5
  333 + # debug4
  334 + # debug3
  335 + # debug2
  336 + # debug1
  337 + # info
  338 + # notice
  339 + # warning
  340 + # error
  341 + # log
  342 + # fatal
  343 + # panic
  344 +
  345 +#log_min_error_statement = error # values in order of decreasing detail:
  346 + # debug5
  347 + # debug4
  348 + # debug3
  349 + # debug2
  350 + # debug1
  351 + # info
  352 + # notice
  353 + # warning
  354 + # error
  355 + # log
  356 + # fatal
  357 + # panic (effectively off)
  358 +
  359 +#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
  360 + # and their durations, > 0 logs only
  361 + # statements running at least this number
  362 + # of milliseconds
  363 +
  364 +
  365 +# - What to Log -
  366 +
  367 +#debug_print_parse = off
  368 +#debug_print_rewritten = off
  369 +#debug_print_plan = off
  370 +#debug_pretty_print = on
  371 +#log_checkpoints = off
  372 +#log_connections = off
  373 +#log_disconnections = off
  374 +#log_duration = off
  375 +#log_error_verbosity = default # terse, default, or verbose messages
  376 +#log_hostname = off
  377 +#log_line_prefix = '' # special values:
  378 + # %a = application name
  379 + # %u = user name
  380 + # %d = database name
  381 + # %r = remote host and port
  382 + # %h = remote host
  383 + # %p = process ID
  384 + # %t = timestamp without milliseconds
  385 + # %m = timestamp with milliseconds
  386 + # %i = command tag
  387 + # %e = SQL state
  388 + # %c = session ID
  389 + # %l = session line number
  390 + # %s = session start timestamp
  391 + # %v = virtual transaction ID
  392 + # %x = transaction ID (0 if none)
  393 + # %q = stop here in non-session
  394 + # processes
  395 + # %% = '%'
  396 + # e.g. '<%u%%%d> '
  397 +#log_lock_waits = off # log lock waits >= deadlock_timeout
  398 +#log_statement = 'none' # none, ddl, mod, all
  399 +#log_temp_files = -1 # log temporary files equal or larger
  400 + # than the specified size in kilobytes;
  401 + # -1 disables, 0 logs all temp files
  402 +#log_timezone = '(defaults to server environment setting)'
  403 +
  404 +
  405 +#------------------------------------------------------------------------------
  406 +# RUNTIME STATISTICS
  407 +#------------------------------------------------------------------------------
  408 +
  409 +# - Query/Index Statistics Collector -
  410 +
  411 +#track_activities = on
  412 +#track_counts = on
  413 +#track_functions = none # none, pl, all
  414 +#track_activity_query_size = 1024 # (change requires restart)
  415 +#update_process_title = on
  416 +#stats_temp_directory = 'pg_stat_tmp'
  417 +
  418 +
  419 +# - Statistics Monitoring -
  420 +
  421 +#log_parser_stats = off
  422 +#log_planner_stats = off
  423 +#log_executor_stats = off
  424 +#log_statement_stats = off
  425 +
  426 +
  427 +#------------------------------------------------------------------------------
  428 +# AUTOVACUUM PARAMETERS
  429 +#------------------------------------------------------------------------------
  430 +
  431 +#autovacuum = on # Enable autovacuum subprocess? 'on'
  432 + # requires track_counts to also be on.
  433 +#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
  434 + # their durations, > 0 logs only
  435 + # actions running at least this number
  436 + # of milliseconds.
  437 +#autovacuum_max_workers = 3 # max number of autovacuum subprocesses
  438 + # (change requires restart)
  439 +#autovacuum_naptime = 1min # time between autovacuum runs
  440 +#autovacuum_vacuum_threshold = 50 # min number of row updates before
  441 + # vacuum
  442 +#autovacuum_analyze_threshold = 50 # min number of row updates before
  443 + # analyze
  444 +#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
  445 +#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
  446 +#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
  447 + # (change requires restart)
  448 +#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
  449 + # autovacuum, in milliseconds;
  450 + # -1 means use vacuum_cost_delay
  451 +#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
  452 + # autovacuum, -1 means use
  453 + # vacuum_cost_limit
  454 +
  455 +
  456 +#------------------------------------------------------------------------------
  457 +# CLIENT CONNECTION DEFAULTS
  458 +#------------------------------------------------------------------------------
  459 +
  460 +# - Statement Behavior -
  461 +
  462 +#search_path = '"$user",public' # schema names
  463 +#default_tablespace = '' # a tablespace name, '' uses the default
  464 +#temp_tablespaces = '' # a list of tablespace names, '' uses
  465 + # only default tablespace
  466 +#check_function_bodies = on
  467 +#default_transaction_isolation = 'read committed'
  468 +#default_transaction_read_only = off
  469 +#default_transaction_deferrable = off
  470 +#session_replication_role = 'origin'
  471 +#statement_timeout = 0 # in milliseconds, 0 is disabled
  472 +#vacuum_freeze_min_age = 50000000
  473 +#vacuum_freeze_table_age = 150000000
  474 +#bytea_output = 'hex' # hex, escape
  475 +#xmlbinary = 'base64'
  476 +#xmloption = 'content'
  477 +
  478 +# - Locale and Formatting -
  479 +
  480 +datestyle = 'iso, mdy'
  481 +#intervalstyle = 'postgres'
  482 +#timezone = '(defaults to server environment setting)'
  483 +#timezone_abbreviations = 'Default' # Select the set of available time zone
  484 + # abbreviations. Currently, there are
  485 + # Default
  486 + # Australia
  487 + # India
  488 + # You can create your own file in
  489 + # share/timezonesets/.
  490 +#extra_float_digits = 0 # min -15, max 3
  491 +#client_encoding = sql_ascii # actually, defaults to database
  492 + # encoding
  493 +
  494 +# These settings are initialized by initdb, but they can be changed.
  495 +lc_messages = 'C' # locale for system error message
  496 + # strings
  497 +lc_monetary = 'C' # locale for monetary formatting
  498 +lc_numeric = 'C' # locale for number formatting
  499 +lc_time = 'C' # locale for time formatting
  500 +
  501 +# default configuration for text search
  502 +default_text_search_config = 'pg_catalog.english'
  503 +
  504 +# - Other Defaults -
  505 +
  506 +#dynamic_library_path = '$libdir'
  507 +#local_preload_libraries = ''
  508 +
  509 +
  510 +#------------------------------------------------------------------------------
  511 +# LOCK MANAGEMENT
  512 +#------------------------------------------------------------------------------
  513 +
  514 +#deadlock_timeout = 1s
  515 +#max_locks_per_transaction = 64 # min 10
  516 + # (change requires restart)
  517 +# Note: Each lock table slot uses ~270 bytes of shared memory, and there are
  518 +# max_locks_per_transaction * (max_connections + max_prepared_transactions)
  519 +# lock table slots.
  520 +#max_pred_locks_per_transaction = 64 # min 10
  521 + # (change requires restart)
  522 +
  523 +#------------------------------------------------------------------------------
  524 +# VERSION/PLATFORM COMPATIBILITY
  525 +#------------------------------------------------------------------------------
  526 +
  527 +# - Previous PostgreSQL Versions -
  528 +
  529 +#array_nulls = on
  530 +#backslash_quote = safe_encoding # on, off, or safe_encoding
  531 +#default_with_oids = off
  532 +#escape_string_warning = on
  533 +#lo_compat_privileges = off
  534 +#quote_all_identifiers = off
  535 +#sql_inheritance = on
  536 +#standard_conforming_strings = on
  537 +#synchronize_seqscans = on
  538 +
  539 +# - Other Platforms and Clients -
  540 +
  541 +#transform_null_equals = off
  542 +
  543 +
  544 +#------------------------------------------------------------------------------
  545 +# ERROR HANDLING
  546 +#------------------------------------------------------------------------------
  547 +
  548 +#exit_on_error = off # terminate session on any error?
  549 +#restart_after_crash = on # reinitialize after backend crash?
  550 +
  551 +
  552 +#------------------------------------------------------------------------------
  553 +# CUSTOMIZED OPTIONS
  554 +#------------------------------------------------------------------------------
  555 +
  556 +#custom_variable_classes = '' # list of custom variable class names
... ...
files/gitlab-cookbooks/gitlab/templates/default/sv-postgresql-control-t.erb 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +#!/bin/sh
  2 +echo "received TERM from runit, sending INT instead to force quit connections"
  3 +/opt/gitlab/embedded/bin/sv interrupt postgresql
... ...
files/gitlab-cookbooks/gitlab/templates/default/sv-postgresql-log-run.erb 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +#!/bin/sh
  2 +exec svlogd -tt <%= @options[:log_directory] %>
... ...
files/gitlab-cookbooks/gitlab/templates/default/sv-postgresql-run.erb 0 → 100644
... ... @@ -0,0 +1,4 @@
  1 +#!/bin/sh
  2 +exec 2>&1
  3 +exec chpst -P -U <%= node['gitlab']['postgresql']['username'] %> -u <%= node['gitlab']['postgresql']['username'] %> /opt/gitlab/embedded/bin/postgres -D <%= File.join(node['gitlab']['postgresql']['dir'], "data") %>
  4 +
... ...