From 648d316300ba2dbed85bfdc749100b8a8c80c42c Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Fri, 11 Jul 2014 11:52:36 +0200 Subject: [PATCH] Support external Redis instances --- README.md | 12 ++++++++++++ files/gitlab-cookbooks/gitlab/attributes/default.rb | 3 +++ files/gitlab-cookbooks/gitlab/libraries/gitlab.rb | 8 ++++++++ files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb | 1 + files/gitlab-cookbooks/gitlab/recipes/gitlab-shell.rb | 3 ++- files/gitlab-cookbooks/gitlab/templates/default/gitlab-shell-config.yml.erb | 2 +- files/gitlab-cookbooks/gitlab/templates/default/resque.yml.erb | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bb05f19..688b649 100644 --- a/README.md +++ b/README.md @@ -548,6 +548,18 @@ If you do do not want to use the packaged Postgres server you can configure an e Configuring a PostgreSQL server is possible both with GitLab Community Edition and Enterprise Edition packages. Please see the upstream GitLab for a [PostgreSQL configuration example][database.yml.postgresql]. +## Using a non-packaged Redis instance + +If you want to use your own Redis instance instead of the bundled Redis, you +can use the `gitlab.rb` settings below. Run `gitlab-ctl reconfigure` for the +settings to take effect. + +```ruby +redis['enable'] = false +gitlab_rails['redis_host'] = redis.example.com +gitlab_rails['redis_port'] = 6380 # defaults to 6379 +``` + ## Building your own package See [the separate build documentation](doc/build.md). diff --git a/files/gitlab-cookbooks/gitlab/attributes/default.rb b/files/gitlab-cookbooks/gitlab/attributes/default.rb index 8618306..39c6fa6 100644 --- a/files/gitlab-cookbooks/gitlab/attributes/default.rb +++ b/files/gitlab-cookbooks/gitlab/attributes/default.rb @@ -128,6 +128,9 @@ default['gitlab']['gitlab-rails']['db_host'] = nil default['gitlab']['gitlab-rails']['db_port'] = 5432 default['gitlab']['gitlab-rails']['db_socket'] = nil +default['gitlab']['gitlab-rails']['redis_host'] = "127.0.0.1" +default['gitlab']['gitlab-rails']['redis_port'] = 6379 + default['gitlab']['gitlab-rails']['smtp_enable'] = false default['gitlab']['gitlab-rails']['smtp_address'] = nil default['gitlab']['gitlab-rails']['smtp_port'] = nil diff --git a/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb b/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb index 21dd616..9887d57 100644 --- a/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb +++ b/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb @@ -139,6 +139,13 @@ module Gitlab end end + def parse_redis_settings + # No need to check redis['host'] because that setting is not configurable. + if redis['port'] + Gitlab['gitlab_rails']['redis_port'] ||= redis['port'] + end + end + def generate_hash results = { "gitlab" => {} } [ @@ -166,6 +173,7 @@ module Gitlab parse_external_url parse_git_data_dir parse_udp_log_shipping + parse_redis_settings # The last step is to convert underscores to hyphens in top-level keys generate_hash end diff --git a/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb b/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb index 5544196..5ccc7bc 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb @@ -84,6 +84,7 @@ template_symlink File.join(gitlab_rails_etc_dir, "resque.yml") do owner "root" group "root" mode "0644" + variables(node['gitlab']['gitlab-rails'].to_hash) restarts dependent_services end diff --git a/files/gitlab-cookbooks/gitlab/recipes/gitlab-shell.rb b/files/gitlab-cookbooks/gitlab/recipes/gitlab-shell.rb index 6bc3ec7..a04f442 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/gitlab-shell.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/gitlab-shell.rb @@ -82,7 +82,8 @@ template_symlink File.join(gitlab_shell_var_dir, "config.yml") do :api_url => api_url, :repositories_path => repositories_path, :authorized_keys => authorized_keys, - :redis_port => node['gitlab']['redis']['port'], + :redis_host => node['gitlab']['gitlab-rails']['redis_host'], + :redis_port => node['gitlab']['gitlab-rails']['redis_port'], :log_file => File.join(log_directory, "gitlab-shell.log") ) end diff --git a/files/gitlab-cookbooks/gitlab/templates/default/gitlab-shell-config.yml.erb b/files/gitlab-cookbooks/gitlab/templates/default/gitlab-shell-config.yml.erb index 7a69b47..6acb2dc 100644 --- a/files/gitlab-cookbooks/gitlab/templates/default/gitlab-shell-config.yml.erb +++ b/files/gitlab-cookbooks/gitlab/templates/default/gitlab-shell-config.yml.erb @@ -27,7 +27,7 @@ auth_file: "<%= @authorized_keys %>" # Redis settings used for pushing commit notices to gitlab redis: bin: /opt/gitlab/embedded/bin/redis-cli - host: 127.0.0.1 + host: <%= @redis_host %> port: <%= @redis_port %> # socket: /tmp/redis.socket # Only define this if you want to use sockets namespace: resque:gitlab diff --git a/files/gitlab-cookbooks/gitlab/templates/default/resque.yml.erb b/files/gitlab-cookbooks/gitlab/templates/default/resque.yml.erb index e22f6a5..ee4c202 100644 --- a/files/gitlab-cookbooks/gitlab/templates/default/resque.yml.erb +++ b/files/gitlab-cookbooks/gitlab/templates/default/resque.yml.erb @@ -1 +1 @@ -production: redis://localhost:<%= node['gitlab']['redis']['port'] %> +production: redis://<%= @redis_host %>:<%= @redis_port %> -- libgit2 0.21.2