Commit 33d1e2e0 authored by Kirill Smelkov's avatar Kirill Smelkov

X Separate parameters + buildout -> jinja2

parent 16deac2b
[gitlab-parameters]
# gitlab instance parameters
# ( parameter names and advanced defaults taken from omnibus-gitlab
# files/gitlab-config-template/gitlab.rb.template.
#
# last updated for omnibus-gitlab 8.1.0+rc1.ce.0-24-g3021ed9
# TODO recheck )
configuration.rate_limit_requests_per_period = 10
configuration.rate_limit_period = 60
# XXX not used yet
configuration.initial_root_password = password
configuration.email_enabled = true
configuration.email_from = lab@example.com
configuration.email_display_name = GitLab
configuration.email_reply_to = noreply@example.com
# FIXME XXX smtp_enable not used yet
configuration.smtp_enable = true
configuration.smtp_address = smtp.server
configuration.smtp_port = 456
configuration.smtp_user_name = smtp user
configuration.smtp_password = smtp password
configuration.smtp_domain = lab.example.com
configuration.smtp_authentication = login
configuration.smtp_enable_starttls_auto = true
configuration.smtp_openssl_verify_mode = peer
configuration.default_can_create_group = true
configuration.username_changing_enabled = true
configuration.default_theme = 2
configuration.default_projects_features.issues = true
configuration.default_projects_features.merge_requests = true
configuration.default_projects_features.wiki = true
configuration.default_projects_features.snippets = true
# NOTE can be public|private|internal
configuration.default_projects_features.visibility_level= public
configuration.webhook_timeout = 10
# # XXX empty ok (gitlab substitutes its own default ?)
# # XXX or better explicitly make it 30 (omnibus default) ?
# # TODO -> remove
# configuration.satellites_timeout =
# 0 means forever (seconds)
configuration.backup_keep_time = 0
# NOTE empty = default gitlab limits
configuration.git_max_size =
configuration.git_timeout =
# unicorn
configuration.unicorn_worker_timeout = 60
configuration.unicorn_worker_processes = 2
# unicorn advanced
configuration.unicorn_tcp_nopush = true
# nginx
configuration.nginx_proxy_read_timeout = 300
configuration.nginx_proxy_connect_timeout = 300
# nginx advanced
configuration.nginx_worker_processes = 4
configuration.nginx_worker_connections = 10240
configuration.nginx_sendfile = on
configuration.nginx_tcp_nopush = on
configuration.nginx_tcp_nodelay = on
configuration.nginx_gzip = on
configuration.nginx_gzip_http_version = 1.0
configuration.nginx_gzip_comp_level = 2
configuration.nginx_gzip_proxied = any
configuration.nginx_gzip_types = text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json
configuration.nginx_keepalive_timeout = 65
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
# NOTE instance/software layout is inspired by gitlab omnibus # NOTE instance/software layout is inspired by gitlab omnibus
# TODO last updated for gitlab-omnibus vXXXX # TODO last updated for gitlab-omnibus vXXXX
[buildout] [buildout]
extends = {{ gitlab_parameters_cfg }}
parts = parts =
directory directory
# promise TODO # promise TODO
...@@ -35,85 +36,11 @@ url = ${slap-connection:server-url} ...@@ -35,85 +36,11 @@ url = ${slap-connection:server-url}
key = ${slap-connection:key-file} key = ${slap-connection:key-file}
cert = ${slap-connection:cert-file} cert = ${slap-connection:cert-file}
# gitlab instance parameters # autogenerated gitlab instance parameters
# ( parameter names and advanced defaults taken from omnibus-gitlab <= gitlab-parameters
# files/gitlab-config-template/gitlab.rb.template.
#
# last updated for omnibus-gitlab 8.1.0+rc1.ce.0-24-g3021ed9
# TODO recheck )
configuration.rate_limit_requests_per_period = 10
configuration.rate_limit_period = 60
# XXX not used yet
configuration.initial_root_password = "password"
configuration.email_enabled = true
configuration.email_from = lab@example.com
configuration.email_display_name = GitLab
configuration.email_reply_to = noreply@example.com
# FIXME XXX smtp_enable not used yet
configuration.smtp_enable = true
configuration.smtp_address = smtp.server
configuration.smtp_port = 456
configuration.smtp_user_name = smtp user
configuration.smtp_password = smtp password
configuration.smtp_domain = lab.example.com
configuration.smtp_authentication = login
configuration.smtp_enable_starttls_auto = true
configuration.smtp_openssl_verify_mode = peer
configuration.default_can_create_group = true
configuration.username_changing_enabled = true
configuration.default_theme = 2
configuration.default_projects_features.issues = true
configuration.default_projects_features.merge_requests = true
configuration.default_projects_features.wiki = true
configuration.default_projects_features.snippets = true
# NOTE can be public|private|internal
configuration.default_projects_features.visibility_level= public
configuration.webhook_timeout = 10
# # XXX empty ok (gitlab substitutes its own default ?)
# # XXX or better explicitly make it 30 (omnibus default) ?
# # TODO -> remove
# configuration.satellites_timeout =
# 0 means forever (seconds)
configuration.backup_keep_time = 0
# NOTE empty = default gitlab limits
configuration.git_max_size =
configuration.git_timeout =
# unicorn
configuration.unicorn_worker_timeout = 60
configuration.unicorn_worker_processes = {{ multiprocessing.cpu_count() + 1 }}
# unicorn advanced
configuration.unicorn_tcp_nopush = true
# nginx
configuration.nginx_proxy_read_timeout = 300
configuration.nginx_proxy_connect_timeout = 300
# nginx advanced
configuration.nginx_worker_processes = 4
configuration.nginx_worker_connections = 10240
configuration.nginx_sendfile = on
configuration.nginx_tcp_nopush = on
configuration.nginx_tcp_nodelay = on
configuration.nginx_gzip = on
configuration.nginx_gzip_http_version = 1.0
configuration.nginx_gzip_comp_level = 2
configuration.nginx_gzip_proxied = any
configuration.nginx_gzip_types = text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json
configuration.nginx_keepalive_timeout = 65
# adjust/override some default settings
configuration.unicorn_worker_processes = {{ multiprocessing.cpu_count() + 1 }}
# for convenience # for convenience
......
...@@ -28,6 +28,7 @@ context = ...@@ -28,6 +28,7 @@ context =
key eggs_directory buildout:eggs-directory key eggs_directory buildout:eggs-directory
key develop_eggs_directory buildout:develop-eggs-directory key develop_eggs_directory buildout:develop-eggs-directory
key software_release_url slap-connection:software-release-url key software_release_url slap-connection:software-release-url
raw gitlab_parameters_cfg ${gitlab-parameters.cfg:target}
raw gitlab_repository_location ${gitlab-repository:location} raw gitlab_repository_location ${gitlab-repository:location}
raw bundler_4gitlab ${bundler-4gitlab:bundle} raw bundler_4gitlab ${bundler-4gitlab:bundle}
raw git ${git:location}/bin/git raw git ${git:location}/bin/git
......
...@@ -173,6 +173,10 @@ url = ${:_profile_base_location_}/template/${:_buildout_section_name_} ...@@ -173,6 +173,10 @@ url = ${:_profile_base_location_}/template/${:_buildout_section_name_}
<= download-file <= download-file
# md5sum = TODO # md5sum = TODO
[gitlab-parameters.cfg]
<= download-file
# md5sum = TODO
[instance-nginx.cfg.in] [instance-nginx.cfg.in]
<= download-file <= download-file
# md5sum = TODO # md5sum = TODO
......
...@@ -13,8 +13,8 @@ upstream gitlab-git-http-server { ...@@ -13,8 +13,8 @@ upstream gitlab-git-http-server {
server unix:<%= node['gitlab']['gitlab-git-http-server']['listen_addr'] %>; server unix:<%= node['gitlab']['gitlab-git-http-server']['listen_addr'] %>;
} }
# TODO do always # TODO -> conf parameters
<% if @https && @redirect_http_to_https %> {% if cfg('https') && cfg('redirect_http_to_https') %}
## Redirects all HTTP traffic to the HTTPS host ## Redirects all HTTP traffic to the HTTPS host
server { server {
<% @listen_addresses.each do |listen_address| %> <% @listen_addresses.each do |listen_address| %>
...@@ -26,10 +26,10 @@ server { ...@@ -26,10 +26,10 @@ server {
access_log <%= @log_directory %>/gitlab_access.log gitlab_access; access_log <%= @log_directory %>/gitlab_access.log gitlab_access;
error_log <%= @log_directory %>/gitlab_error.log; error_log <%= @log_directory %>/gitlab_error.log;
} }
<% end %> {% endif %}
server { server {
listen ${gitlab-backend:host}:${gitlab-backend:port}<% if @https %> ssl spdy<% end %>; listen {{ gitlab_backend.host }}:{{ gitlab_backend.port }}{% if cfg('https') %} ssl spdy{% endif %};
# we don't use: kerbeeros # we don't use: kerbeeros
# <% if @kerberos_enabled && @kerberos_use_dedicated_port %> # <% if @kerberos_enabled && @kerberos_use_dedicated_port %>
...@@ -41,37 +41,35 @@ server { ...@@ -41,37 +41,35 @@ server {
server_tokens off; ## Don't show the nginx version number, a security best practice server_tokens off; ## Don't show the nginx version number, a security best practice
root ${gitlab-root-shadow:location}/public; root ${gitlab-root-shadow:location}/public;
# XXX max body size
## Increase this if you want to upload large attachments ## Increase this if you want to upload large attachments
## Or if you want to accept large git objects over http ## Or if you want to accept large git objects over http
client_max_body_size <%= @client_max_body_size %>; client_max_body_size {{ cfg('client_max_body_size') }};
# TODO ssl {% if cfg('https') %}
# <% if @https %> ## Strong SSL Security
# ## Strong SSL Security ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/
# ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html & https://cipherli.st/ ssl on;
# ssl on; ssl_certificate {{ cfg('ssl_certificate') }};
# ssl_certificate <%= @ssl_certificate %>; ssl_certificate_key <%= @ssl_certificate_key %>;
# ssl_certificate_key <%= @ssl_certificate_key %>; {% if cfg('ssl_client_certificate') %}
# <% if @ssl_client_certificate %> ssl_client_certificate <%= @ssl_client_certificate%>;
# ssl_client_certificate <%= @ssl_client_certificate%>; <% end %>
# <% end %>
# # GitLab needs backwards compatible ciphers to retain compatibility with Java IDEs
# # GitLab needs backwards compatible ciphers to retain compatibility with Java IDEs ssl_ciphers '<%= @ssl_ciphers %>';
# ssl_ciphers '<%= @ssl_ciphers %>'; ssl_protocols <%= @ssl_protocols %>;
# ssl_protocols <%= @ssl_protocols %>; ssl_prefer_server_ciphers <%= @ssl_prefer_server_ciphers %>;
# ssl_prefer_server_ciphers <%= @ssl_prefer_server_ciphers %>; ssl_session_cache <%= @ssl_session_cache %>;
# ssl_session_cache <%= @ssl_session_cache %>; ssl_session_timeout <%= @ssl_session_timeout %>;
# ssl_session_timeout <%= @ssl_session_timeout %>;
# <% if @ssl_dhparam %>
# <% if @ssl_dhparam %> ssl_dhparam <%= @ssl_dhparam %>;
# ssl_dhparam <%= @ssl_dhparam %>; {% endif %}
# <% end %> {% endif %}
# <% end %>
## Individual nginx logs for this GitLab vhost ## Individual nginx logs for this GitLab vhost
access_log ${nginx:log}/gitlab_access.log gitlab_access; access_log {{ nginx.log }}/gitlab_access.log gitlab_access;
error_log ${nginx:log}/gitlab_error.log; error_log {{ nginx.log }}/gitlab_error.log;
location / { location / {
## Serve static files from defined root folder. ## Serve static files from defined root folder.
...@@ -82,22 +80,21 @@ server { ...@@ -82,22 +80,21 @@ server {
location /uploads/ { location /uploads/ {
## If you use HTTPS make sure you disable gzip compression ## If you use HTTPS make sure you disable gzip compression
## to be safe against BREACH attack. ## to be safe against BREACH attack.
#<%= 'gzip off;' if @https %> # TODO {{ 'gzip off' if cfg('https') }}
## https://github.com/gitlabhq/gitlabhq/issues/694 ## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds. ## Some requests take more than 30 seconds.
proxy_read_timeout ${instance-parameter:nginx_proxy_read_timeout}; proxy_read_timeout {{ cfg('nginx_proxy_read_timeout') }};
proxy_connect_timeout ${instance-parameter:nginx_proxy_connect_timeout}; proxy_connect_timeout {{ cfg('nginx_proxy_connect_timeout') }};
proxy_redirect off; proxy_redirect off;
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
# TODO https {% if cfg('https') %}
#<% if @https %> proxy_set_header X-Forwarded-Ssl on;
#proxy_set_header X-Forwarded-Ssl on; {% endif %}
#<% end %>
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http; # TODO <%= @https ? "https" : "http" %>; proxy_set_header X-Forwarded-Proto {{ "https" if cfg('https') else "http" }};
proxy_set_header X-Frame-Options SAMEORIGIN; proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab; proxy_pass http://gitlab;
...@@ -108,22 +105,21 @@ server { ...@@ -108,22 +105,21 @@ server {
location @gitlab { location @gitlab {
## If you use HTTPS make sure you disable gzip compression ## If you use HTTPS make sure you disable gzip compression
## to be safe against BREACH attack. ## to be safe against BREACH attack.
# <%= 'gzip off;' if @https %> # TODO {{ 'gzip off' if cfg('https') }}
## https://github.com/gitlabhq/gitlabhq/issues/694 ## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds. ## Some requests take more than 30 seconds.
proxy_read_timeout ${instance-parameter:nginx_proxy_read_timeout}; proxy_read_timeout {{ cfg('nginx_proxy_read_timeout') }};
proxy_connect_timeout ${instance-parameter:nginx_proxy_connect_timeout}; proxy_connect_timeout {{ cfg('nginx_proxy_connect_timeout') }};
proxy_redirect off; proxy_redirect off;
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
# TODO https {% if cfg('https') %}
#<% if @https %> proxy_set_header X-Forwarded-Ssl on;
#proxy_set_header X-Forwarded-Ssl on; {% endif %}
#<% end %>
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http; # TODO <%= @https ? "https" : "http" %>; proxy_set_header X-Forwarded-Proto {{ "https" if cfg('https') else "http" }};
proxy_set_header X-Frame-Options SAMEORIGIN; proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab; proxy_pass http://gitlab;
...@@ -150,23 +146,21 @@ server { ...@@ -150,23 +146,21 @@ server {
location @gitlab-git-http-server { location @gitlab-git-http-server {
## If you use HTTPS make sure you disable gzip compression ## If you use HTTPS make sure you disable gzip compression
## to be safe against BREACH attack. ## to be safe against BREACH attack.
# TODO {{ 'gzip off' if cfg('https') }}
# <%= 'gzip off;' if @https %>
## https://github.com/gitlabhq/gitlabhq/issues/694 ## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds. ## Some requests take more than 30 seconds.
proxy_read_timeout ${instance-parameter:nginx_proxy_read_timeout}; proxy_read_timeout {{ cfg('nginx_proxy_read_timeout') }};
proxy_connect_timeout ${instance-parameter:nginx_proxy_connect_timeout}; proxy_connect_timeout {{ cfg('nginx_proxy_connect_timeout') }};
proxy_redirect off; proxy_redirect off;
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
# TODO {% if cfg('https') %}
# <% if @https %> proxy_set_header X-Forwarded-Ssl on;
# proxy_set_header X-Forwarded-Ssl on; {% endif %}
# <% end %>
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http; # TODO <%= @https ? "https" : "http" %>; proxy_set_header X-Forwarded-Proto {{ "https" if cfg('https') else "http" }};
proxy_pass http://gitlab-git-http-server; proxy_pass http://gitlab-git-http-server;
} }
...@@ -177,7 +171,7 @@ server { ...@@ -177,7 +171,7 @@ server {
## See config/application.rb under "Relative url support" for the list of ## See config/application.rb under "Relative url support" for the list of
## other files that need to be changed for relative url support ## other files that need to be changed for relative url support
location ~ ^/(assets)/ { location ~ ^/(assets)/ {
root ${gitlab-root-shadow:location}/public; root {{ gitlab_root_shadow.location }}/public;
gzip_static on; # to serve pre-gzipped version gzip_static on; # to serve pre-gzipped version
expires max; expires max;
add_header Cache-Control public; add_header Cache-Control public;
......
...@@ -4,15 +4,19 @@ ...@@ -4,15 +4,19 @@
# https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/nginx.conf.erb # https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/templates/default/nginx.conf.erb
# (last updated for omnibus-gitlab 8.1.0+rc1.ce.0-24-g3021ed9) # (last updated for omnibus-gitlab 8.1.0+rc1.ce.0-24-g3021ed9)
user ${gitlab-backend:user}; {# cfg(name) -> instance_parameter:configuration.<name> #}
worker_processes ${instance-parameter:configuration.nginx_worker_processes} {# XXX dup -> import from gitlab.yml.in ? #}
{% macro cfg(name) %}{{ instance_parameter[str("configuration." + name)] }}{% endmacro %}
user {{ gitlab_backend.user }};
worker_processes {{ cfg('nginx_worker_processes') }}
error_log stderr; error_log stderr;
pid nginx.pid; pid nginx.pid;
daemon off; daemon off;
events { events {
worker_connections ${instance-parameter:configuration.nginx_worker_connections}; worker_connections {{ cfg('nginx_worker_connections') }};
} }
http { http {
...@@ -21,19 +25,19 @@ http { ...@@ -21,19 +25,19 @@ http {
# log_format gitlab_ci_access '<%= @gitlab_ci_access_log_format %>'; # log_format gitlab_ci_access '<%= @gitlab_ci_access_log_format %>';
# log_format gitlab_mattermost_access '<%= @gitlab_mattermost_access_log_format %>'; # log_format gitlab_mattermost_access '<%= @gitlab_mattermost_access_log_format %>';
sendfile ${instance-parameter:configuration.nginx_sendfile}; sendfile {{ cfg('nginx_sendfile') }};
tcp_nopush ${instance-parameter:configuration.nginx_tcp_nopush}; tcp_nopush {{ cfg('nginx_tcp_nopush') }};
tcp_nodelay ${instance-parameter:configuration.nginx_tcp_nodelay}; tcp_nodelay {{ cfg('nginx_tcp_nodelay') }};
keepalive_timeout ${instance-parameter:configuration.nginx_keepalive_timeout}; keepalive_timeout {{ cfg('nginx_keepalive_timeout') }};
gzip ${instance-parameter:configuration.nginx_gzip}; gzip {{ cfg('nginx_gzip') }};
gzip_http_version ${instance-parameter:configuration.nginx_http_version}; gzip_http_version {{ cfg('nginx_http_version') }};
gzip_comp_level ${instance-parameter:configuration.nginx_gzip_comp_level}; gzip_comp_level {{ cfg('nginx_gzip_comp_level') }};
gzip_proxied ${instance-parameter:configuration.nginx_gzip_proxied}; gzip_proxied {{ cfg('nginx_gzip_proxied') }};
gzip_types ${instance-parameter:configuration.nginx_gzip_types}; gzip_types {{ cfg('nginx_gzip_types') }};
include ${nginx-output:mime} include {{ nginx_output.mime }}
include <gitlab_http_config> include <gitlab_http_config>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment