diff --git a/files/gitlab-config-template/gitlab.rb.template b/files/gitlab-config-template/gitlab.rb.template index 11f4f203bc72c57c43488cdf48fe133a9a1f79cd_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU=..86b2aea5704ced2676c483205c67844f44e6f4dd_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU= 100644 --- a/files/gitlab-config-template/gitlab.rb.template +++ b/files/gitlab-config-template/gitlab.rb.template @@ -1152,6 +1152,10 @@ # gitlab_workhorse['redis_sentinel_master_ip'] = nil # gitlab_workhorse['redis_sentinel_master_port'] = nil + +##! Command to generate extra configuration +# gitlab_workhorse['extra_config_command'] = nil + ################################################################################ ## GitLab User Settings ##! Modify default git user. diff --git a/files/gitlab-cookbooks/gitlab/attributes/default.rb b/files/gitlab-cookbooks/gitlab/attributes/default.rb index 11f4f203bc72c57c43488cdf48fe133a9a1f79cd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvYXR0cmlidXRlcy9kZWZhdWx0LnJi..86b2aea5704ced2676c483205c67844f44e6f4dd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvYXR0cmlidXRlcy9kZWZhdWx0LnJi 100644 --- a/files/gitlab-cookbooks/gitlab/attributes/default.rb +++ b/files/gitlab-cookbooks/gitlab/attributes/default.rb @@ -831,6 +831,8 @@ default['gitlab']['gitlab_workhorse']['redis_sentinel_master_ip'] = nil default['gitlab']['gitlab_workhorse']['redis_sentinel_master_port'] = nil +default['gitlab']['gitlab_workhorse']['extra_config_command'] = nil + #### # mailroom #### diff --git a/files/gitlab-cookbooks/gitlab/recipes/gitlab-workhorse.rb b/files/gitlab-cookbooks/gitlab/recipes/gitlab-workhorse.rb index 11f4f203bc72c57c43488cdf48fe133a9a1f79cd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvcmVjaXBlcy9naXRsYWItd29ya2hvcnNlLnJi..86b2aea5704ced2676c483205c67844f44e6f4dd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvcmVjaXBlcy9naXRsYWItd29ya2hvcnNlLnJi 100644 --- a/files/gitlab-cookbooks/gitlab/recipes/gitlab-workhorse.rb +++ b/files/gitlab-cookbooks/gitlab/recipes/gitlab-workhorse.rb @@ -95,6 +95,7 @@ image_scaler_max_filesize = node['gitlab']['gitlab_workhorse']['image_scaler_max_filesize'] trusted_cidrs_for_propagation = node['gitlab']['gitlab_workhorse']['trusted_cidrs_for_propagation'] trusted_cidrs_for_x_forwarded_for = node['gitlab']['gitlab_workhorse']['trusted_cidrs_for_x_forwarded_for'] +extra_config_command = node['gitlab']['gitlab_workhorse']['extra_config_command'] template config_file_path do source "workhorse-config.toml.erb" @@ -114,7 +115,8 @@ image_scaler_max_filesize: image_scaler_max_filesize, trusted_cidrs_for_propagation: trusted_cidrs_for_propagation, trusted_cidrs_for_x_forwarded_for: trusted_cidrs_for_x_forwarded_for, - object_store_toml: workhorse_helper.object_store_toml + object_store_toml: workhorse_helper.object_store_toml, + extra_config_command: extra_config_command ) notifies :restart, "runit_service[gitlab-workhorse]" notifies :run, 'bash[Set proper security context on ssh files for selinux]', :delayed if SELinuxHelper.enabled? diff --git a/files/gitlab-cookbooks/gitlab/templates/default/workhorse-config.toml.erb b/files/gitlab-cookbooks/gitlab/templates/default/workhorse-config.toml.erb index 11f4f203bc72c57c43488cdf48fe133a9a1f79cd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvdGVtcGxhdGVzL2RlZmF1bHQvd29ya2hvcnNlLWNvbmZpZy50b21sLmVyYg==..86b2aea5704ced2676c483205c67844f44e6f4dd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvdGVtcGxhdGVzL2RlZmF1bHQvd29ya2hvcnNlLWNvbmZpZy50b21sLmVyYg== 100644 --- a/files/gitlab-cookbooks/gitlab/templates/default/workhorse-config.toml.erb +++ b/files/gitlab-cookbooks/gitlab/templates/default/workhorse-config.toml.erb @@ -11,6 +11,10 @@ trusted_cidrs_for_x_forwarded_for = <%= @trusted_cidrs_for_x_forwarded_for.to_json %> <%- end %> +<%- if @extra_config_command %> +config_command = "<%= @extra_config_command %>" +<%- end %> + <% if @workhorse_keywatcher %> [redis] Password = "<%= @password %>" diff --git a/spec/chef/cookbooks/gitlab/recipes/gitlab-workhorse_spec.rb b/spec/chef/cookbooks/gitlab/recipes/gitlab-workhorse_spec.rb index 11f4f203bc72c57c43488cdf48fe133a9a1f79cd_c3BlYy9jaGVmL2Nvb2tib29rcy9naXRsYWIvcmVjaXBlcy9naXRsYWItd29ya2hvcnNlX3NwZWMucmI=..86b2aea5704ced2676c483205c67844f44e6f4dd_c3BlYy9jaGVmL2Nvb2tib29rcy9naXRsYWIvcmVjaXBlcy9naXRsYWItd29ya2hvcnNlX3NwZWMucmI= 100644 --- a/spec/chef/cookbooks/gitlab/recipes/gitlab-workhorse_spec.rb +++ b/spec/chef/cookbooks/gitlab/recipes/gitlab-workhorse_spec.rb @@ -60,6 +60,12 @@ expect(content).not_to match(/propagateCorrelationID/) } end + + it 'does not include config_command' do + expect(chef_run).to render_file(config_file).with_content { |content| + expect(content).not_to match(/config_command/) + } + end end context 'user and group' do @@ -765,5 +771,21 @@ end end + context 'with config_command specified' do + before do + stub_gitlab_rb( + gitlab_workhorse: { + extra_config_command: "/opt/workhorse-redis-config.sh" + } + ) + end + + it 'specifies config_command in the config file' do + expect(chef_run).to render_file(config_file).with_content { |content| + expect(content).to match(%r(config_command = "/opt/workhorse-redis-config.sh")) + } + end + end + include_examples "consul service discovery", "gitlab_workhorse", "workhorse" end