diff --git a/files/gitlab-cookbooks/package/libraries/config/gitlab.rb b/files/gitlab-cookbooks/package/libraries/config/gitlab.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvZ2l0bGFiLnJi..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvZ2l0bGFiLnJi 100644 --- a/files/gitlab-cookbooks/package/libraries/config/gitlab.rb +++ b/files/gitlab-cookbooks/package/libraries/config/gitlab.rb @@ -28,4 +28,6 @@ git_data_dirs ConfigMash.new ## Roles + + # Roles that depend on gitlab_rails['enable'] should be processed first role('application').use { ApplicationRole } @@ -31,7 +33,10 @@ role('application').use { ApplicationRole } + role('sidekiq').use { SidekiqRole } + role('postgres').use { PostgresRole } + role('patroni').use { PatroniRole } role('redis_sentinel').use { RedisSentinelRole } role('redis_master').use { RedisMasterRole } role('redis_replica') role('geo_primary', manage_services: false).use { GeoPrimaryRole } role('geo_secondary', manage_services: false).use { GeoSecondaryRole } role('monitoring').use { MonitoringRole } @@ -32,8 +37,7 @@ role('redis_sentinel').use { RedisSentinelRole } role('redis_master').use { RedisMasterRole } role('redis_replica') role('geo_primary', manage_services: false).use { GeoPrimaryRole } role('geo_secondary', manage_services: false).use { GeoSecondaryRole } role('monitoring').use { MonitoringRole } - role('postgres').use { PostgresRole } role('pgbouncer').use { PgbouncerRole } @@ -39,4 +43,3 @@ role('pgbouncer').use { PgbouncerRole } - role('patroni').use { PatroniRole } role('consul').use { ConsulRole } role('pages').use { PagesRole } @@ -41,6 +44,5 @@ role('consul').use { ConsulRole } role('pages').use { PagesRole } - role('sidekiq').use { SidekiqRole } role('spamcheck').use { SpamcheckRole } ## Attributes directly on the node diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/application.rb b/files/gitlab-cookbooks/package/libraries/config/roles/application.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvYXBwbGljYXRpb24ucmI=..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvYXBwbGljYXRpb24ucmI= 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/application.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/application.rb @@ -18,6 +18,7 @@ def self.load_role return unless Gitlab['application_role']['enable'] + # Run GitLab Rails related recipes unless explicitly disabled Gitlab['gitlab_rails']['enable'] = true if Gitlab['gitlab_rails']['enable'].nil? Gitlab['nginx']['enable'] = true if Gitlab['nginx']['enable'].nil? diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/consul.rb b/files/gitlab-cookbooks/package/libraries/config/roles/consul.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvY29uc3VsLnJi..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvY29uc3VsLnJi 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/consul.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/consul.rb @@ -18,6 +18,9 @@ def self.load_role return unless Gitlab['consul_role']['enable'] + # Do not run GitLab Rails related recipes unless explicitly enabled + Gitlab['gitlab_rails']['enable'] ||= false + Services.enable_group('consul_role') end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/geo_secondary.rb b/files/gitlab-cookbooks/package/libraries/config/roles/geo_secondary.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvZ2VvX3NlY29uZGFyeS5yYg==..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvZ2VvX3NlY29uZGFyeS5yYg== 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/geo_secondary.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/geo_secondary.rb @@ -29,4 +29,9 @@ Gitlab['postgresql']['max_standby_archive_delay'] ||= '60s' Gitlab['postgresql']['max_standby_streaming_delay'] ||= '60s' Gitlab['postgresql']['hot_standby'] ||= 'on' + + # Run GitLab Rails related recipes only if required + Gitlab['gitlab_rails']['enable'] = rails_needed? + + # Do not attempt to run DB migrations unless explicitly specified to Gitlab['gitlab_rails']['auto_migrate'] ||= false @@ -32,5 +37,5 @@ Gitlab['gitlab_rails']['auto_migrate'] ||= false - Gitlab['gitlab_rails']['enable'] = rails_needed? + Gitlab[WebServerHelper.service_name]['worker_processes'] ||= number_of_worker_processes end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/monitoring.rb b/files/gitlab-cookbooks/package/libraries/config/roles/monitoring.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvbW9uaXRvcmluZy5yYg==..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvbW9uaXRvcmluZy5yYg== 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/monitoring.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/monitoring.rb @@ -18,7 +18,9 @@ def self.load_role return unless Gitlab['monitoring_role']['enable'] - Gitlab['gitlab_rails']['auto_migrate'] ||= false + # Do not run GitLab Rails related recipes unless explicitly enabled + Gitlab['gitlab_rails']['enable'] ||= false + Services.enable_group('monitoring_role') end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/pages.rb b/files/gitlab-cookbooks/package/libraries/config/roles/pages.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcGFnZXMucmI=..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcGFnZXMucmI= 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/pages.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/pages.rb @@ -18,7 +18,7 @@ def self.load_role return unless Gitlab['pages_role']['enable'] - # Turning off GitLab Rails unless explicitly enabled. + # Do not run GitLab Rails related recipes unless explicitly enabled Gitlab['gitlab_rails']['enable'] ||= false Services.enable_group('pages_role') diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/patroni.rb b/files/gitlab-cookbooks/package/libraries/config/roles/patroni.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcGF0cm9uaS5yYg==..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcGF0cm9uaS5yYg== 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/patroni.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/patroni.rb @@ -18,6 +18,11 @@ def self.load_role return unless Gitlab['patroni_role']['enable'] + # We need to set Gitlab['gitlab_rails']['enable'] to true because DB + # creation in database_objects resource is gated on whether Rails is + # enabled or not. + Gitlab['gitlab_rails']['enable'] = true if Gitlab['gitlab_rails']['enable'].nil? + Services.enable_group('patroni_role') end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/pgbouncer.rb b/files/gitlab-cookbooks/package/libraries/config/roles/pgbouncer.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcGdib3VuY2VyLnJi..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcGdib3VuY2VyLnJi 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/pgbouncer.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/pgbouncer.rb @@ -18,6 +18,9 @@ def self.load_role return unless Gitlab['pgbouncer_role']['enable'] + # Do not run GitLab Rails related recipes unless explicitly enabled + Gitlab['gitlab_rails']['enable'] ||= false + Services.enable_group('pgbouncer_role') end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/postgres.rb b/files/gitlab-cookbooks/package/libraries/config/roles/postgres.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcG9zdGdyZXMucmI=..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcG9zdGdyZXMucmI= 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/postgres.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/postgres.rb @@ -18,6 +18,11 @@ def self.load_role return unless Gitlab['postgres_role']['enable'] + # We need to set Gitlab['gitlab_rails']['enable'] to true because DB + # creation in database_objects resource is gated on whether Rails is + # enabled or not. + Gitlab['gitlab_rails']['enable'] = true if Gitlab['gitlab_rails']['enable'].nil? + Services.enable_group('postgres_role') end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/redis_master.rb b/files/gitlab-cookbooks/package/libraries/config/roles/redis_master.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcmVkaXNfbWFzdGVyLnJi..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcmVkaXNfbWFzdGVyLnJi 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/redis_master.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/redis_master.rb @@ -19,5 +19,7 @@ master_role = Gitlab['redis_master_role']['enable'] replica_role = Gitlab['redis_replica_role']['enable'] + return unless master_role || replica_role + raise 'Cannot define both redis_master_role and redis_replica_role in the same machine.' if master_role && replica_role @@ -22,5 +24,8 @@ raise 'Cannot define both redis_master_role and redis_replica_role in the same machine.' if master_role && replica_role + # Do not run GitLab Rails related recipes unless explicitly enabled + Gitlab['gitlab_rails']['enable'] ||= false + Services.enable_group('redis_node') if master_role || replica_role end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/redis_sentinel.rb b/files/gitlab-cookbooks/package/libraries/config/roles/redis_sentinel.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcmVkaXNfc2VudGluZWwucmI=..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvcmVkaXNfc2VudGluZWwucmI= 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/redis_sentinel.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/redis_sentinel.rb @@ -16,6 +16,11 @@ module RedisSentinelRole def self.load_role - Services.enable('sentinel') if Gitlab['redis_sentinel_role']['enable'] + return unless Gitlab['redis_sentinel_role']['enable'] + + # Do not run GitLab Rails related recipes unless explicitly enabled + Gitlab['gitlab_rails']['enable'] ||= false + + Services.enable('sentinel') end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/sidekiq.rb b/files/gitlab-cookbooks/package/libraries/config/roles/sidekiq.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvc2lkZWtpcS5yYg==..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvc2lkZWtpcS5yYg== 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/sidekiq.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/sidekiq.rb @@ -18,4 +18,5 @@ def self.load_role return unless Gitlab['sidekiq_role']['enable'] + # Do not run any DB migrations Gitlab['gitlab_rails']['auto_migrate'] ||= false @@ -21,4 +22,5 @@ Gitlab['gitlab_rails']['auto_migrate'] ||= false + Services.enable_group('sidekiq_role') end end diff --git a/files/gitlab-cookbooks/package/libraries/config/roles/spamcheck.rb b/files/gitlab-cookbooks/package/libraries/config/roles/spamcheck.rb index c5757ee7c0b7742560e1f9d006296c285e9e6d35_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvc3BhbWNoZWNrLnJi..634455a2a9f36e291d8d5c93113fd6cb8f186739_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9jb25maWcvcm9sZXMvc3BhbWNoZWNrLnJi 100644 --- a/files/gitlab-cookbooks/package/libraries/config/roles/spamcheck.rb +++ b/files/gitlab-cookbooks/package/libraries/config/roles/spamcheck.rb @@ -18,7 +18,7 @@ def self.load_role return unless Gitlab['spamcheck_role']['enable'] - # Turning off GitLab Rails unless explicitly enabled. + # Do not run GitLab Rails related recipes unless explicitly enabled Gitlab['gitlab_rails']['enable'] ||= false Services.enable_group('spamcheck_role')