{"id":15013940,"url":"https://github.com/voxpupuli/puppet-gitlab","last_synced_at":"2025-12-11T21:44:51.418Z","repository":{"id":32897685,"uuid":"36492291","full_name":"voxpupuli/puppet-gitlab","owner":"voxpupuli","description":"Puppet module to manage Gitlab (Omnibus)","archived":false,"fork":false,"pushed_at":"2025-12-05T09:52:58.000Z","size":889,"stargazers_count":77,"open_issues_count":30,"forks_count":167,"subscribers_count":49,"default_branch":"master","last_synced_at":"2025-12-07T18:25:58.438Z","etag":null,"topics":["centos-puppet-module","debian-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module","ubuntu-puppet-module"],"latest_commit_sha":null,"homepage":"https://forge.puppet.com/puppet/gitlab/","language":"Puppet","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxpupuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2015-05-29T08:46:28.000Z","updated_at":"2025-12-05T09:53:01.000Z","dependencies_parsed_at":"2024-02-27T00:43:35.951Z","dependency_job_id":"05c65bb9-a6d9-4524-95f9-5467efdf2db0","html_url":"https://github.com/voxpupuli/puppet-gitlab","commit_stats":{"total_commits":547,"total_committers":100,"mean_commits":5.47,"dds":0.8281535648994516,"last_synced_commit":"df3a0c4a123f7e27f43c4ca5437daabfcff5d8d5"},"previous_names":["vshn/puppet-gitlab"],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/voxpupuli/puppet-gitlab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gitlab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gitlab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gitlab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gitlab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-gitlab/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-gitlab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27670638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-11T02:00:11.302Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["centos-puppet-module","debian-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module","ubuntu-puppet-module"],"created_at":"2024-09-24T19:44:58.922Z","updated_at":"2025-12-11T21:44:51.364Z","avatar_url":"https://github.com/voxpupuli.png","language":"Puppet","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":[],"sub_categories":[],"readme":"# GitLab module for Puppet\n\n[![Build Status](https://github.com/voxpupuli/puppet-gitlab/actions/workflows/ci.yml/badge.svg)](https://github.com/voxpupuli/puppet-gitlab/actions/workflows/ci.yml)\n[![Release](https://github.com/voxpupuli/puppet-gitlab/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet-gitlab/actions/workflows/release.yml)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/gitlab.svg)](https://forge.puppetlabs.com/puppet/gitlab)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/gitlab.svg)](https://forge.puppetlabs.com/puppet/gitlab)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/gitlab.svg)](https://forge.puppetlabs.com/puppet/gitlab)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/gitlab.svg)](https://forge.puppetlabs.com/puppet/gitlab)\n\n## Table of Contents\n\n1. [Overview](#overview)\n1. [Module Description - What the module does and why it is useful](#module-description)\n1. [Setup - The basics of getting started with GitLab](#setup)\n    * [What GitLab affects](#what-gitlab-affects)\n    * [Setup requirements](#setup-requirements)\n    * [Beginning with GitLab](#beginning-with-gitlab)\n1. [Usage - Configuration options and additional functionality](#usage)\n1. [Reference - An under-the-hood peek at what the module is doing and how](#reference)\n1. [Limitations - OS compatibility, etc.](#limitations)\n1. [Development - Guide for contributing to the module](#development)\n\n## Overview\n\nThis Puppet module installs and manages [GitLab][1]. It makes use of the\nprovided [Omnibus][2] packages and the [packagecloud][3] package repositories.\n\nPlease note: The module [vshn/gitlab][4] has been deprecated and is now\navailable under Vox Pupuli [puppet/gitlab][5].\n\n## Module Description\n\nThe module installs the GitLab package from the provided repositories and\ncreates the configuration file which is then used by `gitlab-ctl reconfigure` to\nconfigure all the services. *Fun fact: This really uses Chef to configure all\nthe services.*\n\nSupported are Debian based (Ubuntu, Debian) and RedHat based (CentOS, RHEL)\noperating systems.\n\nBeaker acceptance tests are run in Travis for supported versions of CentOS and\nUbuntu.\n\nThis module is designed to support the most recent versions of the\ngitlab-omnibus package (both ce and ee). GitLab will support and release patches\nfor the last 3 releases. This module can typically support the most recent major\nversion, as well as the previous major version, but is currently only tested in\nthe gitlab-supported versions of the module.\n\nIf you find configurations or features in gitlab-omnibus that are not supported\nby this module, please open an issue or submit a pull request.\n\nCurrent Support Status\n\n| gitlab-omnibus version | support of gitlab.rb configurations |\n| --- | --- |\n| 11.x | Mostly implemented, supported configs are stable | will implement any needed enhancements |\n| 10.x | All configs implemented and stable | Will implement any enhancements that aren't deprecated or breaking for gitlab 11+ |\n\nFor older versions of GitLab, you may find an older version of this module to\nwork better for you, as this module changes over time to support the valid\nconfiguration of versions of the gitlab-omnibus supported by the gitlab\nengineering team. The oldest versions of this puppet module were designed to\nsupport gitlab-omnibus 7.10, and may be unstable even then.\n\n## Setup\n\n### What GitLab affects\n\n* Package repository (APT or YUM)\n* Omnibus gitlab package, typically `gitlab-ce` or `gitlab-ee`\n* Configuration file `/etc/gitlab/gitlab.rb`\n* System service `gitlab-runsvdir`\n* GitLab configuration using `gitlab-ctl reconfigure`\n\n### Setup Requirements\n\nHave a look at the official [download page][6] for the required prerequisits\n(f.e. Postfix). This module doesn't handle them, that's the job of the specific\nmodules.\n\nIt requires only the [puppetlabs/apt][7] module when using it under a Debian\nbased OS and the parameter `manage_package_repo` is not false. Furthermore the\n`stdlib` module is required.\n\nAt least on RedHat based OS versions, it's required that Puppet is configured\nwith the [`stringify_facts`][8] setting set to `false` (Puppet \u003c 4.0), otherwise\nthe `$::os` fact used in `install.pp` doesn't work as expected.\n\n### Beginning with GitLab\n\nJust include the class and specify at least `external_url`. If `external_url` is\nnot specified it will default to the FQDN fact of the system.\n\n```puppet\nclass { 'gitlab':\n  external_url =\u003e 'http://gitlab.mydomain.tld',\n}\n```\n\nThe module also supports Hiera, here comes an example:\n\n```yaml\ngitlab::external_url: 'http://gitlab.mydomain.tld'\ngitlab::gitlab_rails:\n  time_zone: 'UTC'\n  gitlab_email_enabled: false\n  gitlab_default_theme: 4\n  gitlab_email_display_name: 'GitLab'\ngitlab::sidekiq:\n  shutdown_timeout: 5\n```\n\nIf one wants to install GitLab Enterprise Edition, just define the parameter\n`manage_upstream_edition` with the value `ee`:\n\n```puppet\nclass { 'gitlab':\n  external_url =\u003e 'http://gitlab.mydomain.tld',\n  manage_upstream_edition      =\u003e 'ee',\n}\n```\n\n*Note*: This works only for GitLab version 7.11 and greater. See this blog\nentry: [GitLab 7.11 released with Two-factor Authentication and a publicly\nviewable Enterprise Edition][9]\n\n## Usage\n\nThe main class (`init.pp`) exposes the configuration sections from the\n`gitlab.rb` configuration file as hashes. So if there are any parameter changes\nin future versions of GitLab, the module should support them right out of the\nbox. Only if there would be bigger changes to sections, the module would need\nsome updates.\n\nAll possible parameters for `gitlab.rb` can be found here: [gitlab.rb.template][10]\n\nSome examples:\n\n```puppet\nclass { 'gitlab':\n  external_url =\u003e 'http://gitlab.mydomain.tld',\n  gitlab_rails =\u003e {\n    'webhook_timeout' =\u003e 10,\n    'gitlab_default_theme' =\u003e 2,\n  },\n  logging      =\u003e {\n    'svlogd_size' =\u003e '200 * 1024 * 1024',\n  },\n}\n```\n\n### Service management\n\nGitLab Omnibus is designed to manage it's own services internally. The\n`gitlab-runsvdir` service isn't a typical service that you would manage with\npuppet, it is a monitoring service for the other services gitlab will create\nbased on your selected configuration. Starting, stopping and restarting the\n`gitlab-runsvdir` service should only be done by `gitlab-ctl` commands. Service\nrestart is also handled implicitly during installation and upgrades, and does\nnot normally need to be triggered by puppet.\n\nIf you find yourself needing to modify this behavior, you can set\n`service_manage =\u003e true` to have puppet ensure the service is running.\n\nSetting `service_provider_restart =\u003e true` will cause puppet to trigger a\n`gitlab-ctl restart` command to be issued following any configuration change\nmanaged by puppet.\n\n### Package \u0026 Repository Configuration\n\n#### Repository Resource Configuration\n\nThis module allows you a great range of options when configuring the repository\nand package sources on your host. By default, the gitlab repository will be\nconfigured to use the upstream source from [packagecloud][3]. However, if you\nwish to use a different repository source, you can provide your own `yumrepo`,\n`apt` or any other package/repository configuration you wish.\n\nThis module does this by iterating through configurations provided to\n`gitlab::omnibus_package_repository::repository_configuration`. You can provide\nany number of repository resource types and configurations you want, as long as\nthe dependent modules are installed on your basemodulepath.\n\nThis approach provides the following advantages:\n\n* means any and all parameters supported by your repository manager module are\n  inherently supported by the `gitlab` module\n* you aren't required to use a version of a dependency we specify, supporting a\n  wide range of versions for modules like `apt`\n* you can easily add more required repositories and packages as needed by your\n  infrastructure, and ensure ordering is managed within the `gitlab` module\n  before any GitLab related packages are installed\n\nIn order to provide your own repository configurations, you are required to set\n`manage_upstream_edition =\u003e disabled`, and provide a hash of repository resource\ntype configurations in the following format:\n\n```yaml\ngitlab::repository_configuration:\n  repository_resource_type: #ex... 'apt::source` or `apt::pin` or `yumrepo`\n    repository_resource_title:\n      repository_resource_attribute1: 'value'\n      repository_resource_attribute2: 'value'\n```\n\nExamples/defaults for `yumrepo` can be found at `data/RedHat.yaml`, and for\n`apt` at `data/Debian.yaml`.\n\nYou could also do things like:\n\n* add an additional repository at the same level as\n  `internal_mirror_of_gitlab_official_ce` (for example if you wanted to use your\n  own package `nginx` instead of the one provided in omnibus-gitlab)\n* add any other high level resource types from the `apt` module at the level of\n  `apt:source`. (`apt::pin`, `apt::key`, etc...)\n\nEach unique resource provided to the `repository_configuration` setup:\n\n* gets tagged with `gitlab_omnibus_package_resource`\n* gets the `before =\u003e Class['gitlab::install']` metaparameter.\n\nYou can use these tags to further customize ordering within your own catalogs.\n\n#### Selecting Version, edition, package name and holding\n\nThe `package_ensure` parameter is used to control which version of the package\ninstalled. It expects either a version string, or one of the `ensure` values for\nthe `Package` resource type. Default is `installed`. This value works with the\n`package_name` parameter to install the correct package.\n\nIf you are using upstream package source, the package name automatically\nswitches between `gitlab-ce` and `gitlab-ee` depending on the value you have\nprovided to `manage_upstream_edition`. If `manage_upstream_edition` is set to\n`disabled`, you will need to provide the appropriate value to `package_name`\nyourself.\n\nThis approach of package management has the following advantages:\n\n* more easily adaptable if GitLab changes package naming based on editions\n  (won't require you to install new puppet-gitlab module if you're not ready)\n* allows you to install custom built packages for gitlab-omnibus that have\n  different package name on your host\n\nThe `package_hold` parameter allows you to hold the package version in the APT\npackage manager. This is useful when you intend to update the host with\n'apt upgrade' (or the bolt task `apt action=upgrade` from puppetlabs-apt) and\nkeep your gitlab instance at the intended version. This prevents unintended\nupgrading gitlab and perhaps skipping important upgrade path steps.\nTo learn more about gitlab upgrading please visit the [upgrade path page.](https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/)\n\n#### Custom Repository \u0026 Package configuration example\n\nAs an expanded example of repository and package configuration, let's assume you're:\n\n* using a private mirror of the upstream GitLab‚ package channel\n* hosted inside your organizations firewall\n* installing gitlab-omnibus enterprise edition\n\n```puppet\nclass { 'gitlab':\n  external_url =\u003e 'http://gitlab.mydomain.tld',\n  manage_upstream_edition =\u003e 'disabled',\n  package_name =\u003e 'gitlab-ee',\n  repository_configuration =\u003e {\n    'apt::source' =\u003e {\n      'internal_mirror_of_gitlab_official_ce' =\u003e {\n        'comment' =\u003e 'Internal mirror of upstream GitLab package repository',\n        'location' =\u003e 'https://my.internal.url/repository/packages.gitlab.com/gitlab/gitlab-ce/debian',\n        'key' =\u003e {\n          'id' =\u003e 'F6403F6544A38863DAA0B6E03F01618A51312F3F',\n          'source' =\u003e 'https://my.internal.url/repository/package.gitlab.com/gpg.key'\n        }\n      },\n    }\n  }\n}\n```\n\n### GitLab secrets\n\n*Note:* `gitlab::secrets` parameter was removed in v3.0.0. See: [Issues#213 -\nRemove support for setting content of `gitlab-secrets.json`][11]\n\nWhen using HA role `application_role`, make sure to add the [appropriate shared\nsecrets][12] to your `gitlab_rails` and `gitlab_shell` hashes to ensure\nfront-end nodes are configured to access all backend data-sources and\nrepositories. If you receive 500 errors on your HA setup, this is one of the\nprimary causes.\n\n### LDAP configuration example\n\nHere is an example how to configure LDAP using Hiera:\n\n```yaml\ngitlab::gitlab_rails:\n  ldap_enabled: true\n  ldap_servers:\n    myldapserver:\n      label: 'Company LDAP'\n      host: 'ldap.company.tld'\n      port: 389\n      uid: 'uid'\n      method: 'plain' # \"tls\" or \"ssl\" or \"plain\"\n      bind_dn: 'MYBINDDN'\n      password: 'MYBINDPW'\n      active_directory: false\n      allow_username_or_email_login: false\n      block_auto_created_users: false\n      base: 'MYBASEDN'\n      group_base: 'MYGROUPBASE'\n      user_filter: ''\n```\n\n### NGINX Configuration\n\nConfiguration of the embedded NGINX instance is handled by the\n`/etc/gitlab/gitlab.rb` file. Details on available configuration options are\navailable at [https://docs.gitlab.com/omnibus/settings/nginx.html][NGINX settings].\nOptions listed there can be passed in to the `nginx` parameter as a hash.\nFor example, to enable redirection from HTTP to HTTPS:\n\n```puppet\nclass { 'gitlab':\n  external_url =\u003e 'https://gitlab.mydomain.tld',\n  nginx        =\u003e {\n    redirect_http_to_https =\u003e true,\n  },\n}\n```\n\nSimilarly, the certificate and key location can be configured as follows:\n\n```puppet\nclass { 'gitlab':\n  external_url =\u003e 'https://gitlab.mydomain.tld',\n  nginx        =\u003e {\n    ssl_certificate     =\u003e '/etc/gitlab/ssl/gitlab.example.com.crt',\n    ssl_certificate_key =\u003e '/etc/gitlab/ssl/gitlab.example.com.key'\n  },\n}\n```\n\n### Skip Auto Reconfigure (formerly Skip Auto Migrations)\n\nIn order to achieve [Zero Downtime Upgrades][14] of your GitLab instance, GitLab\nwill need to skip the post-install step of the omnibus package that\nautomatically calls `gitlab-ctl reconfigure` for you. In GitLab \u003c 10.5, GitLab\ncheck for the presence of a file at `/etc/gitlab/skip-auto-migrations`. As of\nGitLab `10.6`, this is deprecated, and you are warned to use\n`/etc/gitlab/skip-auto-reconfigure` going forward.\n\nBoth of these are currently supported in this module, and you should be aware of\nwhich option is right for you based on the version of GitLab Omnibus you are\nrunning.  You will be presented with a deprecation notice in you puppet client\nif using the deprecated form.\n\n```puppet\n# use 'absent' or 'present' for the skip_auto_reconfigure param\nclass { 'gitlab':\n  skip_auto_reconfigure =\u003e 'present'\n}\n\n# use true/false for the skip_auto_migrations param\nclass { 'gitlab':\n  skip_auto_migrations =\u003e true\n}\n```\n\n### GitLab Custom Hooks\n\nManage custom hook files within a GitLab project. Custom hooks can be created as\na pre-receive, post-receive, or update hook. It's possible to create different\ncustom hook types for the same project - one each for pre-receive, post-receive\nand update.\n\n```puppet\ngitlab::custom_hook { 'my_custom_hook':\n  namespace       =\u003e 'my_group',\n  project         =\u003e 'my_project',\n  type            =\u003e 'post-receive',\n  source          =\u003e 'puppet:///modules/my_module/post-receive',\n}\n```\n\nor via hiera\n\n```yaml\ngitlab::custom_hooks:\n  my_custom_hook:\n    namespace: my_group\n    project: my_project\n    type: post-receive\n    source: 'puppet:///modules/my_module/post-receive'\n```\n\nSince GitLab Shell 4.1.0 and GitLab 8.15 Chained hooks are supported. You can\ncreate global hooks which will run for each repository on your server. Global\nhooks can be created as a pre-receive, post-receive, or update hook.\n\n```puppet\ngitlab::global_hook { 'my_custom_hook':\n  type            =\u003e 'post-receive',\n  source          =\u003e 'puppet:///modules/my_module/post-receive',\n}\n```\n\nor via hiera\n\n```yaml\ngitlab::global_hooks:\n  my_custom_hook:\n    type: post-receive\n    source: 'puppet:///modules/my_module/post-receive'\n```\n\n### Gitlab System Hooks\n\nA [file hook][22] will run on each event so it's up to you to filter events or\nprojects within a file hook code. You can have as many file hooks as you want.\nEach file hook will be triggered by GitLab asynchronously in case of an event.\nFor a list of events see the [system hooks documentation][21].\n\n```puppet\ngitlab::system_hook { 'my_custom_hook':\n  source          =\u003e 'puppet:///modules/my_module/file-hook',\n}\n```\n\nor via hiera\n\n```yaml\ngitlab::system_hooks:\n  my_custom_hook:\n    source: 'puppet:///modules/my_module/file-hook'\n```\n\n### Fast Lookup of SSH keys\n\nGitLab instances with a large number of users may notice slowdowns when making\ninitial connections for ssh operations. GitLab has created a feature that allows\nauthorized ssh keys to be stored in the db (instead of the `authorized_keys`\nfile for the `git` user)\n\nYou can enable this feature in GitLab using the `store_git_keys_in_db` parameter,\nor by enabling `gitlab-sshd` as it is configured to use fast lookup automatically.\n\nPlease note, while you can manage [gitlab-sshd][23] (Gitlab's standalone SSH server)\nwith this module, you can not manage openssh and the sshd service as it is outside\nthe scope of the module. You will need to configure the AuthorizedKeysCommand\nfor the `git` user in sshd.server yourself. Instructions for this are provided by\nGitLab at [Fast lookup of authorized SSH keys in the databasse][15]\n\n### Setting up GitLab HA\n\n#### pgbouncer Authentication\n\nFor use in HA configurations, or when using postgres replication in a\nsingle-node setup, this module supports automated configuration of pgbouncer\nauthentication. To set this up, set `pgpass_file_ensure =\u003e 'present'` and\nprovide a valid value for `pgbouncer_password`.\n\n```puppet\nclass {'gitlab':\n  pgpass_file_ensure =\u003e 'present',\n  pgbouncer_password =\u003e 'YourPassword'\n}\n```\n\nBy default, this creates a file at `/home/gitlab-consul/.pgpass`, which gitlab\nuses to authenticate to the pgbouncer database as the `gitlab-consul` _database_\nuser. This _does not_ refer to the `gitlab-consul` system user. The location of\nthe `.pgpass` file can be changed based on how you manage homedirs or based on\nyour utilization of NFS. This location should be set to be the home directory\nyou have configured for the `gitlab-consul` system user.\n\n```puppet\nclass {'gitlab':\n  pgpass_file_location =\u003e '/homedir/for/gitlab-consul-system-user/.pgpass'\n}\n```\n\n## Tasks\n\nThe GitLab module has a task that allows a user to upgrade the pgsql database\nGitLab uses if upgrading from version 9.2.18, which is required to upgrade\nGitLab past 10.  When running the tasks on the command line, you will need to\nuse the `--sudo`, `--run-as-root`, and `--tty` flags to execute the commands as\nneeded for your environment.\n\nPlease refer to to the [PE documentation][16] or [Bolt documentation][17] on how\nto execute a task.\n\n## Development\n\n1. Fork on [Github][18]\n1. Create your feature branch (`git checkout -b my-new-feature`)\n1. Commit your changes (`git commit -am 'Add some feature'`)\n1. Push to the branch (`git push origin my-new-feature`)\n1. Create a new Pull Request\n\nMake sure your PR passes the Rspec tests.\n\n## Contributors\n\nHave a look at [Github contributors][19] to see a list of all the awesome\ncontributors to this Puppet module. \u003c3 This module was created and maintained by\n[VSHN AG][20] until the end of 2017. It was then donated to Voxpupuli so that a\nbroader community is able to maintain the module.‚\n\n[1]: https://about.gitlab.com\n[2]: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md\n[3]: https://packages.gitlab.com/gitlab\n[4]: https://forge.puppet.com/vshn/gitlab\n[5]: https://forge.puppet.com/puppet/gitlab\n[6]: https://about.gitlab.com/downloads\n[7]: https://forge.puppetlabs.com/puppetlabs/apt\n[8]: https://docs.puppetlabs.com/references/3.stable/configuration.html#stringifyfacts\n[9]: https://about.gitlab.com/2015/05/22/gitlab-7-11-released\n[10]: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template\n[11]: https://github.com/voxpupuli/puppet-gitlab/issues/213\n[12]: https://docs.gitlab.com/ee/administration/high_availability/gitlab.html#extra-configuration-for-additional-gitlab-application-servers\n[13]: https://docs.gitlab.com/omnibus/settings/nginx.html\n[14]: https://docs.gitlab.com/omnibus/update/README.html#zero-downtime-updates\n[15]: https://docs.gitlab.com/ee/administration/operations/fast_ssh_key_lookup.html\n[16]: https://puppet.com/docs/pe/2017.3/orchestrator/running_tasks.html\n[17]: https://puppet.com/docs/bolt/latest/bolt.html\n[18]: https://github.com/voxpupuli/puppet-gitlab/fork\n[19]: https://github.com/voxpupuli/puppet-gitlab/graphs/contributors\n[20]: https://vshn.ch\n[21]: https://docs.gitlab.com/ee/system_hooks/system_hooks.html\n[22]: https://docs.gitlab.com/ee/administration/file_hooks.html\n[23]: https://docs.gitlab.com/ee/administration/operations/gitlab_sshd.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-gitlab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-gitlab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-gitlab/lists"}