Для генерации лицензии, нам потребуется ruby и gitlab-license:
1link$apt install ruby openssl
2link$gem install gitlab-license
Теперь создадим простенький скрипт license.rb для генерации при помощи gitlab-license самоподписанной лицензии:
1linkrequire 'openssl'
2linkrequire 'gitlab/license'
3link
4linkkey_pair = OpenSSL::PKey::RSA.generate(2048)
5linkFile.open("license_key", "w") { |f| f.write(key_pair.to_pem) }
6linkpublic_key = key_pair.public_key
7linkFile.open("license_key.pub", "w") { |f| f.write(public_key.to_pem) }
8link
9linkprivate_key = OpenSSL::PKey::RSA.new File.read("license_key")
10linkGitlab::License.encryption_key = private_key
11link
12linklicense = Gitlab::License.new
13linklicense.licensee = {
14link "Name" => "admin",
15link "Company" => "acme",
16link "Email" => "admin@acme.com"
17link}
18linklicense.starts_at = Date.new(2022, 4, 7)
19linklicense.expires_at = Date.new(2032, 4, 7)
20linklicense.notify_admins_at = Date.new(2034, 3, 1)
21linklicense.notify_users_at = Date.new(2034, 3, 1)
22linklicense.block_changes_at = Date.new(2032, 4, 7)
23linklicense.restrictions = {
24link active_user_count: 200
25link}
26link
27linkdata = license.export
28link
29linkFile.open("GitLabBV.gitlab-license", "w") { |f| f.write(data) }
30link
31linkputs("Complete!")
Запустим его:
1link$ruby license.rb
В результате получатся следующие файлы:
Заменить на серверах Gitlab публичный ключ сгенерированным:
1link$cp license_key.pub /opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub
Чуть поправим код Gitlab в файле /opt/gitlab/embedded/service/gitlab-rails/ee/app/models/license.rb для изменения уровня лицензии.
Для этого в функции plan необходимо поменять STARTER_PLAN на ULTIMATE_PLAN:
1link def plan
2link #restricted_attr(:plan).presence STARTER_PLAN
3link restricted_attr(:plan).presence ULTIMATE_PLAN
4link end
В случае если уже была установлена лицензия - её необходимо удалить из БД вручную.
Перезапустим Gitlab:
1link$gitlab-ctl reconfigure
2link$gitlab-ctl restart
Теперь сгенерированный ранее файл лицензии GitLabBV.gitlab-license можно добавить в Gitlab через веб-интерфейс по пути https://gitlab.local/admin/license/new