ruby 如何合并来自多个gitlab.rb文件的相等散列?

1l5u6lss  于 2023-04-20  发布在  Ruby
关注(0)|答案(1)|浏览(110)

在GitLab配置文件(gitlab.rc)中,可以引用一个额外的配置文件:

from_file "/home/admin/external_gitlab.rb"

文件说明如下:
包含from_file之后在/etc/gitlab/gitlab.rb中设置的任何配置都优先于包含的文件中的配置。
这是否意味着同名的hash(例如gitlab_rails ['env'])会被覆盖?还是只有键会被覆盖?

用例

我想做一个额外的proxy_gitlab.rb,它是从gitlab.rb引用的,带有一些代理设置:

gitlab_rails['env'] = {
    "http_proxy" => "http://USERNAME:PASSWORD@example.com:8080",
    "https_proxy" => "http://USERNAME:PASSWORD@example.com:8080"
#    "no_proxy" => ".yourdomain.com"  # Wildcard syntax if you need your internal domain to bypass proxy
}

但是,如果在主gitlab.rb中定义了gitlab_rails['env'],如果主gitlab.rb的哈希覆盖了proxy_gitlab.rb的哈希,这些设置将不会出现在最终配置中。但是,如果将两个哈希组合在一起,则此解决方案将有效。

j8yoct9x

j8yoct9x1#

散列不合并:最新加载的哈希优先。

我尝试了以下方法:
gitlab.rb

gitlab_rails['ldap_servers'] = {
  'main' => {
    'label' => 'LDAP',
    'host' =>  'ldap.mydomain.com',
    'port' => 636,
    'uid' => 'sAMAccountName',
    'encryption' => 'simple_tls',
    'base' => 'dc=example,dc=com',
  }
}

from_file '/etc/gitlab/gitlab-secret.rb'

gitlab-secret.rb

gitlab_rails['ldap_servers'] = {
  'main' => {
    'password' => 'secret',
  }
}

使用gitlab-ctl show-config检查配置时,显示以下结果:

gitlab_rails['ldap_servers'] = {
  'main' => {
    'password' => 'secret',
  }
}

注意:我尝试做的是将配置和秘密分开。这可以在文档中描述的LDAP中完成。

相关问题