Giter VIP home page Giter VIP logo

voxpupuli / puppet-gitlab Goto Github PK

View Code? Open in Web Editor NEW
74.0 50.0 167.0 835 KB

Puppet module to manage Gitlab (Omnibus)

Home Page: https://forge.puppet.com/puppet/gitlab/

License: BSD 3-Clause "New" or "Revised" License

Ruby 33.67% Puppet 43.44% HTML 21.71% Shell 1.18%
linux-puppet-module puppet hacktoberfest centos-puppet-module debian-puppet-module oraclelinux-puppet-module redhat-puppet-module scientific-puppet-module ubuntu-puppet-module

puppet-gitlab's Introduction

GitLab module for Puppet

Build Status Release Puppet Forge Puppet Forge - downloads Puppet Forge - endorsement Puppet Forge - scores

Table of Contents

  1. Overview
  2. Module Description - What the module does and why it is useful
  3. Setup - The basics of getting started with GitLab
  4. Usage - Configuration options and additional functionality
  5. Reference - An under-the-hood peek at what the module is doing and how
  6. Limitations - OS compatibility, etc.
  7. Development - Guide for contributing to the module

Overview

This Puppet module installs and manages GitLab. It makes use of the provided Omnibus packages and the packagecloud package repositories.

Please note: The module vshn/gitlab has been deprecated and is now available under Vox Pupuli puppet/gitlab.

Module Description

The module installs the GitLab package from the provided repositories and creates the configuration file which is then used by gitlab-ctl reconfigure to configure all the services. Fun fact: This really uses Chef to configure all the services.

Supported are Debian based (Ubuntu, Debian) and RedHat based (CentOS, RHEL) operating systems.

Beaker acceptance tests are run in Travis for supported versions of CentOS and Ubuntu.

This module is designed to support the most recent versions of the gitlab-omnibus package (both ce and ee). GitLab will support and release patches for the last 3 releases. This module can typically support the most recent major version, as well as the previous major version, but is currently only tested in the gitlab-supported versions of the module.

If you find configurations or features in gitlab-omnibus that are not supported by this module, please open an issue or submit a pull request.

Current Support Status

gitlab-omnibus version support of gitlab.rb configurations
11.x Mostly implemented, supported configs are stable
10.x All configs implemented and stable

For older versions of GitLab, you may find an older version of this module to work better for you, as this module changes over time to support the valid configuration of versions of the gitlab-omnibus supported by the gitlab engineering team. The oldest versions of this puppet module were designed to support gitlab-omnibus 7.10, and may be unstable even then.

Setup

What GitLab affects

  • Package repository (APT or YUM)
  • Omnibus gitlab package, typically gitlab-ce or gitlab-ee
  • Configuration file /etc/gitlab/gitlab.rb
  • System service gitlab-runsvdir
  • GitLab configuration using gitlab-ctl reconfigure

Setup Requirements

Have a look at the official download page for the required prerequisits (f.e. Postfix). This module doesn't handle them, that's the job of the specific modules.

It requires only the puppetlabs/apt module when using it under a Debian based OS and the parameter manage_package_repo is not false. Furthermore the stdlib module is required.

At least on RedHat based OS versions, it's required that Puppet is configured with the stringify_facts setting set to false (Puppet < 4.0), otherwise the $::os fact used in install.pp doesn't work as expected.

Beginning with GitLab

Just include the class and specify at least external_url. If external_url is not specified it will default to the FQDN fact of the system.

class { 'gitlab':
  external_url => 'http://gitlab.mydomain.tld',
}

The module also supports Hiera, here comes an example:

gitlab::external_url: 'http://gitlab.mydomain.tld'
gitlab::gitlab_rails:
  time_zone: 'UTC'
  gitlab_email_enabled: false
  gitlab_default_theme: 4
  gitlab_email_display_name: 'GitLab'
gitlab::sidekiq:
  shutdown_timeout: 5

If one wants to install GitLab Enterprise Edition, just define the parameter manage_upstream_edition with the value ee:

class { 'gitlab':
  external_url => 'http://gitlab.mydomain.tld',
  manage_upstream_edition      => 'ee',
}

Note: This works only for GitLab version 7.11 and greater. See this blog entry: GitLab 7.11 released with Two-factor Authentication and a publicly viewable Enterprise Edition

Usage

The main class (init.pp) exposes the configuration sections from the gitlab.rb configuration file as hashes. So if there are any parameter changes in future versions of GitLab, the module should support them right out of the box. Only if there would be bigger changes to sections, the module would need some updates.

All possible parameters for gitlab.rb can be found here: gitlab.rb.template

Some examples:

class { 'gitlab':
  external_url => 'http://gitlab.mydomain.tld',
  gitlab_rails => {
    'webhook_timeout' => 10,
    'gitlab_default_theme' => 2,
  },
  logging      => {
    'svlogd_size' => '200 * 1024 * 1024',
  },
}

Service management

GitLab Omnibus is designed to manage it's own services internally. The gitlab-runsvdir service isn't a typical service that you would manage with puppet, it is a monitoring service for the other services gitlab will create based on your selected configuration. Starting, stopping and restarting the gitlab-runsvdir service should only be done by gitlab-ctl commands. Service restart is also handled implicitly during installation and upgrades, and does not normally need to be triggered by puppet.

If you find yourself needing to modify this behavior, you can set service_manage => true to have puppet ensure the service is running.

Setting service_provider_restart => true will cause puppet to trigger a gitlab-ctl restart command to be issued following any configuration change managed by puppet.

Package & Repository Configuration

Repository Resource Configuration

This module allows you a great range of options when configuring the repository and package sources on your host. By default, the gitlab repository will be configured to use the upstream source from packagecloud. However, if you wish to use a different repository source, you can provide your own yumrepo, apt or any other package/repository configuration you wish.

This module does this by iterating through configurations provided to gitlab::omnibus_package_repository::repository_configuration. You can provide any number of repository resource types and configurations you want, as long as the dependent modules are installed on your basemodulepath.

This approach provides the following advantages:

  • means any and all parameters supported by your repository manager module are inherently supported by the gitlab module
  • you aren't required to use a version of a dependency we specify, supporting a wide range of versions for modules like apt
  • you can easily add more required repositories and packages as needed by your infrastructure, and ensure ordering is managed within the gitlab module before any GitLab related packages are installed

In order to provide your own repository configurations, you are required to set manage_upstream_edition => disabled, and provide a hash of repository resource type configurations in the following format:

gitlab::repository_configuration:
  repository_resource_type: #ex... 'apt::source` or `apt::pin` or `yumrepo`
    repository_resource_title:
      repository_resource_attribute1: 'value'
      repository_resource_attribute2: 'value'

Examples/defaults for yumrepo can be found at data/RedHat.yaml, and for apt at data/Debian.yaml.

You could also do things like:

  • add an additional repository at the same level as internal_mirror_of_gitlab_official_ce (for example if you wanted to use your own package nginx instead of the one provided in omnibus-gitlab)
  • add any other high level resource types from the apt module at the level of apt:source. (apt::pin, apt::key, etc...)

Each unique resource provided to the repository_configuration setup:

  • gets tagged with gitlab_omnibus_package_resource
  • gets the before => Class['gitlab::install'] metaparameter.

You can use these tags to further customize ordering within your own catalogs.

Selecting Version, edition, and package name

The package_ensure parameter is used to control which version of the package installed. It expects either a version string, or one of the ensure values for the Package resource type. Default is installed. This value works with the package_name parameter to install the correct package.

If you are using upstream package source, the package name automatically switches between gitlab-ce and gitlab-ee depending on the value you have provided to manage_upstream_edition. If manage_upstream_edition is set to disabled, you will need to provide the appropriate value to package_name yourself.

This approach of package management has the following advantages:

  • more easily adaptable if GitLab changes package naming based on editions (won't require you to install new puppet-gitlab module if you're not ready)
  • allows you to install custom built packages for gitlab-omnibus that have different package name on your host

Custom Repository & Package configuration example

As an expanded example of repository and package configuration, let's assume you're:

  • using a private mirror of the upstream GitLab‚ package channel
  • hosted inside your organizations firewall
  • installing gitlab-omnibus enterprise edition
class { 'gitlab':
  external_url => 'http://gitlab.mydomain.tld',
  manage_upstream_edition => 'disabled',
  package_name => 'gitlab-ee',
  repository_configuration => {
    'apt::source' => {
      'internal_mirror_of_gitlab_official_ce' => {
        'comment' => 'Internal mirror of upstream GitLab package repository',
        'location' => 'https://my.internal.url/repository/packages.gitlab.com/gitlab/gitlab-ce/debian',
        'key' => {
          'id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F',
          'source' => 'https://my.internal.url/repository/package.gitlab.com/gpg.key'
        }
      },
    }
  }
}

GitLab secrets

Note: gitlab::secrets parameter was removed in v3.0.0. See: Issues#213 - Remove support for setting content of gitlab-secrets.json

When using HA role application_role, make sure to add the appropriate shared secrets to your gitlab_rails and gitlab_shell hashes to ensure front-end nodes are configured to access all backend data-sources and repositories. If you receive 500 errors on your HA setup, this is one of the primary causes.

LDAP configuration example

Here is an example how to configure LDAP using Hiera:

gitlab::gitlab_rails:
  ldap_enabled: true
  ldap_servers:
    myldapserver:
      label: 'Company LDAP'
      host: 'ldap.company.tld'
      port: 389
      uid: 'uid'
      method: 'plain' # "tls" or "ssl" or "plain"
      bind_dn: 'MYBINDDN'
      password: 'MYBINDPW'
      active_directory: false
      allow_username_or_email_login: false
      block_auto_created_users: false
      base: 'MYBASEDN'
      group_base: 'MYGROUPBASE'
      user_filter: ''

NGINX Configuration

Configuration of the embedded NGINX instance is handled by the /etc/gitlab/gitlab.rb file. Details on available configuration options are available at [https://docs.gitlab.com/omnibus/settings/nginx.html][NGINX settings]. Options listed there can be passed in to the nginx parameter as a hash. For example, to enable redirection from HTTP to HTTPS:

class { 'gitlab':
  external_url => 'https://gitlab.mydomain.tld',
  nginx        => {
    redirect_http_to_https => true,
  },
}

Similarly, the certificate and key location can be configured as follows:

class { 'gitlab':
  external_url => 'https://gitlab.mydomain.tld',
  nginx        => {
    ssl_certificate     => '/etc/gitlab/ssl/gitlab.example.com.crt',
    ssl_certificate_key => '/etc/gitlab/ssl/gitlab.example.com.key'
  },
}

Skip Auto Reconfigure (formerly Skip Auto Migrations)

In order to achieve Zero Downtime Upgrades of your GitLab instance, GitLab will need to skip the post-install step of the omnibus package that automatically calls gitlab-ctl reconfigure for you. In GitLab < 10.5, GitLab check for the presence of a file at /etc/gitlab/skip-auto-migrations. As of GitLab 10.6, this is deprecated, and you are warned to use /etc/gitlab/skip-auto-reconfigure going forward.

Both of these are currently supported in this module, and you should be aware of which option is right for you based on the version of GitLab Omnibus you are running. You will be presented with a deprecation notice in you puppet client if using the deprecated form.

# use 'absent' or 'present' for the skip_auto_reconfigure param
class { 'gitlab':
  skip_auto_reconfigure => 'present'
}

# use true/false for the skip_auto_migrations param
class { 'gitlab':
  skip_auto_migrations => true
}

GitLab Custom Hooks

Manage custom hook files within a GitLab project. Custom hooks can be created as a pre-receive, post-receive, or update hook. It's possible to create different custom hook types for the same project - one each for pre-receive, post-receive and update.

gitlab::custom_hook { 'my_custom_hook':
  namespace       => 'my_group',
  project         => 'my_project',
  type            => 'post-receive',
  source          => 'puppet:///modules/my_module/post-receive',
}

or via hiera

gitlab::custom_hooks:
  my_custom_hook:
    namespace: my_group
    project: my_project
    type: post-receive
    source: 'puppet:///modules/my_module/post-receive'

Since GitLab Shell 4.1.0 and GitLab 8.15 Chained hooks are supported. You can create global hooks which will run for each repository on your server. Global hooks can be created as a pre-receive, post-receive, or update hook.

gitlab::global_hook { 'my_custom_hook':
  type            => 'post-receive',
  source          => 'puppet:///modules/my_module/post-receive',
}

or via hiera

gitlab::global_hooks:
  my_custom_hook:
    type: post-receive
    source: 'puppet:///modules/my_module/post-receive'

Gitlab System Hooks

A file hook will run on each event so it's up to you to filter events or projects within a file hook code. You can have as many file hooks as you want. Each file hook will be triggered by GitLab asynchronously in case of an event. For a list of events see the system hooks documentation.

gitlab::system_hook { 'my_custom_hook':
  source          => 'puppet:///modules/my_module/file-hook',
}

or via hiera

gitlab::system_hooks:
  my_custom_hook:
    source: 'puppet:///modules/my_module/file-hook'

Fast Lookup of SSH keys

GitLab instances with a large number of users may notice slowdowns when making initial connections for ssh operations. GitLab has created a feature that allows authorized ssh keys to be stored in the db (instead of the authorized_keys file for the git user)

You can enable this feature in GitLab using the store_git_keys_in_db parameter, or by enabling gitlab-sshd as it is configured to use fast lookup automatically.

Please note, while you can manage gitlab-sshd (Gitlab's standalone SSH server) with this module, you can not manage openssh and the sshd service as it is outside the scope of the module. You will need to configure the AuthorizedKeysCommand for the git user in sshd.server yourself. Instructions for this are provided by GitLab at Fast lookup of authorized SSH keys in the databasse

Setting up GitLab HA

pgbouncer Authentication

For use in HA configurations, or when using postgres replication in a single-node setup, this module supports automated configuration of pgbouncer authentication. To set this up, set pgpass_file_ensure => 'present' and provide a valid value for pgbouncer_password.

class {'gitlab':
  pgpass_file_ensure => 'present',
  pgbouncer_password => 'YourPassword'
}

By default, this creates a file at /home/gitlab-consul/.pgpass, which gitlab uses to authenticate to the pgbouncer database as the gitlab-consul database user. This does not refer to the gitlab-consul system user. The location of the .pgpass file can be changed based on how you manage homedirs or based on your utilization of NFS. This location should be set to be the home directory you have configured for the gitlab-consul system user.

class {'gitlab':
  pgpass_file_location => '/homedir/for/gitlab-consul-system-user/.pgpass'
}

Tasks

The GitLab module has a task that allows a user to upgrade the pgsql database GitLab uses if upgrading from version 9.2.18, which is required to upgrade GitLab past 10. When running the tasks on the command line, you will need to use the --sudo, --run-as-root, and --tty flags to execute the commands as needed for your environment.

Please refer to to the PE documentation or Bolt documentation on how to execute a task.

Development

  1. Fork on Github
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Make sure your PR passes the Rspec tests.

Contributors

Have a look at Github contributors to see a list of all the awesome contributors to this Puppet module. <3 This module was created and maintained by VSHN AG until the end of 2017. It was then donated to Voxpupuli so that a broader community is able to maintain the module.‚

puppet-gitlab's People

Contributors

alexjfisher avatar andrekeller avatar b4ldr avatar bastelfreak avatar baurmatt avatar bgshacklett avatar dan33l avatar dandunckelman avatar davidgubler avatar dhoppe avatar ekohl avatar gfokkema avatar ghoneycutt avatar jkroepke avatar juniorsysadmin avatar kenyon avatar liger1978 avatar longlivechief avatar minoroffense avatar mterzo avatar nekototori avatar pazmarianoj avatar petems avatar smortex avatar tdb avatar tequeter avatar tobru avatar willtome avatar yakatz avatar zilchms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

puppet-gitlab's Issues

Upgrade from CE to EE doesn't work without manual work

At least on RHEL, as you use a single yumrepo resource with the same name for 2 different repos, when upgrading from CE to EE edition the Yum repo is not being updated and upgrade does not happen until you manually remove the old repo and do a yum clean.

I think it would be enough to add edition to yumrepo resource name but unfortunately I don't have time to create a PR right now, sorry.

More detail on configuring NGINX?

I'm looking for more information on how to configure the embedded NGINX instance that comes with the GitLab Omnibus package. I can see that there's an option for providing a hash of configuration options, but I can't find anything on what options are supported and the exact data structure for the hash. My most immediate interest is configuring HTTPS.

Thanks!

Issues with Puppet 4.5.3 and Rspec-Puppet

Some strange issues with Puppet 4.5.3 and Rspec-Puppet:

Failures:

  1) gitlab supported operating systems gitlab class without any parameters on Debian (Jessie) should contain Class[gitlab::install] that comes before gitlab::config

     Failure/Error: it { is_expected.to contain_class('gitlab::install').that_comes_before('gitlab::config') }



     ArgumentError:

       No title provided and "gitlab::config" is not a valid resource reference

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:544:in `extract_type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:529:in `type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource/catalog.rb:353:in `resource'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:204:in `block in check_befores'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:203:in `each'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:203:in `check_befores'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:99:in `matches?'

     # ./spec/classes/init_spec.rb:17:in `block (4 levels) in <top (required)>'

  2) gitlab supported operating systems gitlab class without any parameters on Debian (Jessie) should contain Class[gitlab::service] that subscribes to gitlab::config

     Failure/Error: it { is_expected.to contain_class('gitlab::service').that_subscribes_to('gitlab::config') }



     ArgumentError:

       No title provided and "gitlab::config" is not a valid resource reference

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:544:in `extract_type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:529:in `type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource/catalog.rb:353:in `resource'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:228:in `block in check_subscribes'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:227:in `each'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:227:in `check_subscribes'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:102:in `matches?'

     # ./spec/classes/init_spec.rb:19:in `block (4 levels) in <top (required)>'

  3) gitlab supported operating systems gitlab class without any parameters on RedHat (CentOS) should contain Class[gitlab::install] that comes before gitlab::config

     Failure/Error: it { is_expected.to contain_class('gitlab::install').that_comes_before('gitlab::config') }



     ArgumentError:

       No title provided and "gitlab::config" is not a valid resource reference

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:544:in `extract_type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:529:in `type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource/catalog.rb:353:in `resource'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:204:in `block in check_befores'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:203:in `each'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:203:in `check_befores'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:99:in `matches?'

     # ./spec/classes/init_spec.rb:53:in `block (4 levels) in <top (required)>'

  4) gitlab supported operating systems gitlab class without any parameters on RedHat (CentOS) should contain Class[gitlab::service] that subscribes to gitlab::config

     Failure/Error: it { is_expected.to contain_class('gitlab::service').that_subscribes_to('gitlab::config') }



     ArgumentError:

       No title provided and "gitlab::config" is not a valid resource reference

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:544:in `extract_type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource.rb:529:in `type_and_title'

     # /home/travis/.rvm/gems/ruby-2.3.0/gems/puppet-4.5.3/lib/puppet/resource/catalog.rb:353:in `resource'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:228:in `block in check_subscribes'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:227:in `each'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:227:in `check_subscribes'

     # /home/travis/.rvm/gems/ruby-2.3.0/bundler/gems/rspec-puppet-79d5373dcbfa/lib/rspec-puppet/matchers/create_generic.rb:102:in `matches?'

     # ./spec/classes/init_spec.rb:55:in `block (4 levels) in <top (required)>'

Finished in 16.74 seconds (files took 1 second to load)

44 examples, 4 failures

Failed examples:

rspec ./spec/classes/init_spec.rb:17 # gitlab supported operating systems gitlab class without any parameters on Debian (Jessie) should contain Class[gitlab::install] that comes before gitlab::config

rspec ./spec/classes/init_spec.rb:19 # gitlab supported operating systems gitlab class without any parameters on Debian (Jessie) should contain Class[gitlab::service] that subscribes to gitlab::config

rspec ./spec/classes/init_spec.rb:53 # gitlab supported operating systems gitlab class without any parameters on RedHat (CentOS) should contain Class[gitlab::install] that comes before gitlab::config

rspec ./spec/classes/init_spec.rb:55 # gitlab supported operating systems gitlab class without any parameters on RedHat (CentOS) should contain Class[gitlab::service] that subscribes to gitlab::config

yum repo is incompatible for Amazon Linux

Although Amazon Linux is based on RHEL, they're using different release naming schema than RHEL and therefor this module seems incompatible for Amazon AMI.

I think, OS selection case should be modified as includes Amazon Linux $::operatingsystemmajrelease value.

Here is an example facter output from an Amazon AMI:

operatingsystem => Amazon
operatingsystemmajrelease => 2015
operatingsystemrelease => 2015.09

500 error on initial login?

Hi,

I just did a fresh install of Gitlab on RHEL 6.5 / Puppet 3.8.1 using the module, and I'm getting a 500 error when trying to access /users/sign_in (see below). I found a lot of references to this type of error for upgrades / database migrations, but less for new installations. I'm assuming that the "projects" table would be a default (since I don't have any data that I've added to gitlab yet)?

I'll keep digging, but I thought it was worth asking in case you've seen this error before after an install.

The production.log file says:

Started GET "/users/sign_in" for 127.0.0.1 at 2015-10-27 17:20:15 -0400
Processing by SessionsController#new as HTML
PG::UndefinedTable: ERROR: relation "projects" does not exist
LINE 5: WHERE a.attrelid = '"projects"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"projects"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum

Completed 500 Internal Server Error in 15ms (ActiveRecord: 9.7ms)


When I tried to troubleshoot by running gitlab-ci-rake commands, it complained about not being able to load files under /opt/gitlab/etc/gitlab-ci - that directory does not appear to exist.

[root@linvm2346 gitlab-rails]# gitlab-ci-rake db:migrate:status
/usr/bin/gitlab-ci-rake error: could not load /opt/gitlab/etc/gitlab-ci/gitlab-ci-rc
Either you are not allowed to read the file, or it does not exist yet.
You can generate it with: sudo gitlab-ctl reconfigure

[root@linvm2346 gitlab-rails]# cd /opt/gitlab/etc
[root@linvm2346 etc]# ls -la
total 48
drwxrwxr-x 3 root root 4096 Oct 27 17:01 .
drwxrwxr-x 9 root root 4096 Oct 27 17:01 ..
drwx------ 3 git root 4096 Oct 27 17:01 gitlab-rails
-rw-rw-r-- 1 root root 35191 Oct 27 08:43 gitlab.rb.template

I tried running gitlab-ctl reconfigure by hand to look for errors, etc., but there weren't any obvious issues (and it still didn't create the gitlab-ci directory).

Not working on RHEL7?

I'm having some issues with this module on RHEL (not CentOS, real RHEL).

This module defines the repo baseurl as https://packages.gitlab.com/gitlab/gitlab-ce/el/$releasever/$basearch

However, on real RHEL, that evaluates as https://packages.gitlab.com/gitlab/gitlab-ce/el/7Server/x86_64/, however https://packages.gitlab.com/gitlab/gitlab-ce/el/7Server/x86_64/repodata/repomd.xml is 404.

It seems to me that when calculating the repository URL on RedHat-based systems, the module should probably just use the OS major release in Puppet, instead of relying on $releasever in yum.

Updating Gitlab CE

Hi !

Thanks for your awesome module ! It works really nice and my only problem is how to manage Gitlab upgrade proccess ? Right now I have version 8.12.6 on my server. Version 8.13 is released and I want to upgrade my installation.

Any chance that i can do it with help of this module or should i do it manually ?

Puppet 3.8.7 causes issues with allowed_clock_drift values

The way that YAML generation is done in the gitlab.rb template runs into a big flaw when it comes to Omniauth - SAML data in particular;

A manifest like;

# ...
  class { '::gitlab':
    gitlab_rails => {
      'omniauth_enabled'                                    => $_saml_enabled,
      'omniauth_providers'                                  => [
        {
          'name'  => 'saml',
          'label' => '<Company ID>',
          'args'  => {
            'allowed_clock_drift'            => 5,
            'assertion_customer_service_url' => "${external_url}/users/auth/saml/callback",
            'idp_cert_fingerprint'           => '00:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F:10:11:12:13',
            'idp_sso_target_url'             => '<ADFS endpoint>',
            'issuer'                         => $external_url,
            'name_identifier_format'         => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
          },
        },
      ],
    },
  }

Will generate ruby code alike the following:

# gitlab.rb

#...
gitlab_rails["omniauth_providers"] => [
  {
    "args" => {
      "allowed_clock_drift" => "5",
      "assertion_consumer_service_url" => "<external url>/users/auth/saml/callback",
      "idp_cert_fingerprint" => "00:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F:10:11:12:13",
      "idp_sso_target_url" => "<ADFS endpoint>",
      "issuer" => "<external url>",
      "name_identifier_format" => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
    },
    "label" => "<Company ID>",
    "name" => "saml"
  }
]

Causing OmniAuth SAML to fail its authentication attempt when trying to use the allowed_clock_drift string value as a numeral.

Reading into the compiled catalog reveals that Puppet is actually sending the value as a string literal. In fact, all numerals are strings in the catalog.

One possible way to prevent this could be to hard-code certain keys as guaranteed plain numerals in the template, might also not be a problem with newer Puppet versions.

gitlab-secrets.json is destroyed and recreated on every puppet run

Sample dump at http://pastebin.com/v3J98Az2

Basically, the http secret, cert and internal key, plus all the mattermost salts and keys, all get removed with every puppet run and immediately new ones are generated and added by the reconfigure, which was triggered by the fact the file was edited. this seems to me like a serious bug, the entire omnibus should not need to rerun and restart on every run.
Also, does that mean mattermost is getting installed? should I be able to access it? it's not linked in the gitlab UI and I don't see any service that looks like it's related getting started.

support for omniauth configuration

I didn't see support for oauth configuration and backup providers in your wiki on puppetforge, if it's already supported, my apologies, but I did not find it.

unrecognized option '--version'

Not an error but just wanted to make note:

==> gitlab: Notice: /Stage[main]/Gitlab::Config/Exec[gitlab_reconfigure]/returns: /sbin/init: unrecognized option '--version'
==> gitlab: Notice: /Stage[main]/Gitlab::Config/Exec[gitlab_reconfigure]/returns: -.mount                                                                                   loaded active mounted   /
==> gitlab: Notice: /Stage[main]/Gitlab::Config/Exec[gitlab_reconfigure]/returns: gitlab Reconfigured!
==> gitlab: Notice: /Stage[main]/Gitlab::Config/Exec[gitlab_reconfigure]: Triggered 'refresh' from 1 events

Error: Execution of '/usr/sbin/update-rc.d gitlab-runsvdir defaults' returned 1: update-rc.d: error: unable to read /etc/init.d/gitlab-runsvdir

Hi,

On Debian Wheezy (7) after installing the error on each puppet run:

Error: Execution of '/usr/sbin/update-rc.d gitlab-runsvdir defaults' returned 1: update-rc.d: error: unable to read /etc/init.d/gitlab-runsvdir

I have tried purging the package and running from scratch with the same result. The file /etc/init.d/gitlab-runsvdir does not exist.

Hiera data:

gitlab::external_url: 'http://gitlab.XXXX'
gitlab::gitlab_rails:
time_zone: 'UTC'
gitlab_email_enabled: false
gitlab_default_theme: 4
gitlab_email_display_name: 'Gitlab'
gitlab_email_from: 'github@XXXX'
gitlab::sidekiq:
shutdown_timeout: 5

Class call:

class { '::gitlab':
external_url => 'http://gitlab.XXXX',
}

Please let me know if you need any more info.

Thanks

gitlab-runsvdir.service not enabled running on CentOS 7

Hi,
Using vshn/gitlab v1.5.0 on CentOS 7 with gitlab-ce 7.14.1 omnibus package it seems that the gitlab-runsvdir systemd service is not running, and /usr/bin/gitlab-ctl seems not able to start the gitlab services without having it running. As gitlab-runsvdir systemd service is not enabled gitlab also does not start automatically on boot.

root@sources ~ # /usr/bin/gitlab-ctl status
fail: ci-redis: runsv not running
fail: ci-sidekiq: runsv not running
fail: ci-unicorn: runsv not running
fail: logrotate: runsv not running
fail: nginx: runsv not running
fail: postgresql: runsv not running
fail: redis: runsv not running
fail: sidekiq: runsv not running
fail: unicorn: runsv not running
root@sources ~ # /usr/bin/gitlab-ctl start
fail: ci-redis: runsv not running
fail: ci-sidekiq: runsv not running
fail: ci-unicorn: runsv not running
fail: logrotate: runsv not running
fail: nginx: runsv not running
fail: postgresql: runsv not running
fail: redis: runsv not running
fail: sidekiq: runsv not running
fail: unicorn: runsv not running
root@sources ~ # systemctl status gitlab-runsvdir.service                                                                                                      
gitlab-runsvdir.service - GitLab Runit supervision process
   Loaded: loaded (/usr/lib/systemd/system/gitlab-runsvdir.service; disabled)
   Active: inactive (dead)

root@sources ~ # systemctl enable gitlab-runsvdir.service                                                                                                      
ln -s '/usr/lib/systemd/system/gitlab-runsvdir.service' '/etc/systemd/system/basic.target.wants/gitlab-runsvdir.service'
root@sources ~ # /usr/bin/gitlab-ctl start                                                                                                                     
fail: ci-redis: runsv not running
fail: ci-sidekiq: runsv not running
fail: ci-unicorn: runsv not running
fail: logrotate: runsv not running
fail: nginx: runsv not running
fail: postgresql: runsv not running
fail: redis: runsv not running
fail: sidekiq: runsv not running
fail: unicorn: runsv not running
root@sources ~ # systemctl start gitlab-runsvdir.service                                                                                                       
root@sources ~ # /usr/bin/gitlab-ctl status                                                                                                                    
run: ci-redis: (pid 1533) 4s; run: log: (pid 1530) 4s
run: ci-sidekiq: (pid 1537) 4s; run: log: (pid 1534) 4s
run: ci-unicorn: (pid 1547) 4s; run: log: (pid 1541) 4s
run: logrotate: (pid 1544) 4s; run: log: (pid 1539) 4s
run: nginx: (pid 1536) 4s; run: log: (pid 1532) 4s
run: postgresql: (pid 1545) 4s; run: log: (pid 1542) 4s
run: redis: (pid 1535) 4s; run: log: (pid 1531) 4s
run: sidekiq: (pid 1540) 4s; run: log: (pid 1538) 4s
run: unicorn: (pid 1546) 4s; run: log: (pid 1543) 4s

It looks like that the service is explicitely disabled in manifest/params.pp and is using custom start/stop commands directly calling /usr/bin/gitlab-ctl that seems not to be working without the systemd service, is this the expected result am I the only having a problem with this configuration?

Enabling and starting the service manually does fix the problems, gitlab-ctl will be able to restart the services and gitlab will run on boot as expected.

Best,
Baptiste

Feature: re-enable signup disable

In omnibus this was deprecated but using puppet manually configuring options via UI probably isn't the best solution:

7.9.0

DEPRECATION: 'gitlab_signup_enabled', 'gitlab_signin_enabled', 'gitlab_default_projects_limit', 'gravatar_enabled' are deprecated, settings can be changed in admin section of GitLab UI

parametirize the repo path

Got my gitlab on /, and I want it on a diffrerent partition, say /data. going over the code I don't see a way to pass that parameter to the omnibus. I'd move and symlink it, but gitlab would not run on a path with any part of the path being a symlink.

On that matter, can I get the entire /var/opt/gitlab move into /opt/gitlab/githome or any random path as needed?

rails vs gitlab_rails?

You seem to have two parameters, rails and gitlab_rails. I expected to use gitlab_rails, but looking at the template it uses rails. This is confusing. I expect rails should be deprecated in favour of gitlab_rails.

Add 'db_key_base' for Gitlab CI 7.13

Excerpt from https://about.gitlab.com/2015/07/22/gitlab-7-13-released/:

GitLab CI now uses symmetric encryption to share ‘secure variables’ (provided by your users) in the SQL database. Symmetric encryption needs a secret key, which GitLab CI will generate for you when you install / upgrade to 7.13.

The key is called db_key_base and can be found in /etc/gitlab/gitlab-secrets.json (in Omnibus packages) or config/secrets.yml (in installations from source). If you lose this secret key during a backup restore or a server migration, your users will lose their ‘secure variables’.

Don’t store the secret key in the same place as your database backups. If you do, somebody who steals your backup also gets your users' secure variables.

If you use configuration management (Chef, Puppet etc.) you should store the secret key securely in your configuration management system. This way, your CI server uses the correct DB secret key after a server rebuild.

registry_external_url not recognised in hiera

Can this be confirmed as working or not?

Every hiera directive for gitlab.rb I need works for me except
gitlab::registry_external_url: 'somedomain.com:4567'
and
gitlab::registry_nginx:
ssl_certificate: '/etc/gitlab/ssl/somedomain.com.crt'
ssl_certificate_key: '/etc/gitlab/ssl/somedomain.com.key'

Before I keep on digging with my local instance I need to know that it does actually work.

thanks.

gitlab ldap_servers

Tried to use common.yaml to put the gitlab::gitlab_rails ldap settings as described and they didn't work.
Not one value was populated into gitlab.rb

Is this still working as documented in README?


---
gitlab::gitlab_rails:
  ldap_enabled: true
  ldap_servers:
    myldapserver:
      label: 'Company LDAP'
      host: 'ldap.company.tld'
      port: 389
      uid: 'uid'
      method: 'plain' # "tls" or "ssl" or "plain"
      bind_dn: 'MYBINDDN'
      password: 'MYBINDPW'
      active_directory: false
      allow_username_or_email_login: false
      block_auto_created_users: false
      base: 'MYBASEDN'
      group_base: 'MYGROUPBASE'
      user_filter: ''

Also can you provide detail of how to use the puppet config where hiera doesn't work to load the ldap configuration?

ldap_servers hash order

After adding an ldap_server to my gitlab hiera config every couple puppet run will trigger a reconfig. Looking into it the puppet output is shwoing a change in the gitlab.rb file. But the diff only shows a difference in the way the ldap_server hash is written to the file.

--- /etc/gitlab/gitlab.rb   2016-01-06 16:11:16.191974903 -0800
+++ /tmp/puppet-file20160106-23945-3txlqb   2016-01-06 16:20:42.223501596 -0800
@@ -21,7 +21,7 @@
 gitlab_rails['gitlab_email_display_name'] = ' Gitlab'
 gitlab_rails['gitlab_email_enabled'] = true
 gitlab_rails['ldap_enabled'] = true
-gitlab_rails['ldap_servers'] = {"myldapserver"=>{"host"=>"ldap.", "block_auto_created_users"=>false, "uid"=>"sAMAccountName", "active_directory"=>true, "label"=>"LDAP", "password"=>"", "bind_dn"=>"cn=", "base"=>"dc=", "allow_username_or_email_login"=>false, "method"=>"plain", "port"=>389}}
+gitlab_rails['ldap_servers'] = {"myldapserver"=>{"password"=>"", "block_auto_created_users"=>false, "uid"=>"sAMAccountName", "bind_dn"=>"cn=", "base"=>"dc=", "method"=>"plain", "allow_username_or_email_login"=>false, "port"=>389, "label"=>"LDAP", "host"=>"ldap.", "active_directory"=>true}}
 gitlab_rails['time_zone'] = 'america/los_angeles'

*removed content, but you can see the keys are in a different order.

Will this puppet module be maintained?

@tobru I'm the author of the spuder/puppet-gitlab puppet module as mentioned here:

https://about.gitlab.com/installation/

Because of the new onibus packaging. my puppet module is currently broken.

I was planning on rewriting it, however it appears that you have already rewritten puppet gitlab to work with the new package cloud repos.

I'm evaluating if I want to deprecate my module, and instead refer people to your module. What are your thoughts on referring people to your module?

When specifying LDAP configuration, puppet creates a gitlab.rb file with the wrong syntax

The format of the LDAP parameters in gitlab.rb which are generated by Puppet using this module are incorrect.

Correct format as shown in the docu and the example gitlab.rb file :
( The following example is of the puppetrun deleting the right format within the original gitlab.rb: )
-# gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
-# main: # 'main' is the GitLab 'provider ID' of this LDAP server
-# label: 'LDAP'
-# host: '_your_ldap_server'
-# port: 389
-# uid: 'sAMAccountName'
-# method: 'plain' # "tls" or "ssl" or "plain"
-# bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
-# password: '_the_password_of_the_bind_user'
-# active_directory: true
-# allow_username_or_email_login: false
-# block_auto_created_users: false
-# base: ''
-# user_filter: ''
-# attributes:
-# username: ['uid', 'userid', 'sAMAccountName']
-# email: ['mail', 'email', 'userPrincipalName']
-# name: 'cn'
-# first_name: 'givenName'
-# last_name: 'sn'
-# ## EE only
-# group_base: ''
-# admin_group: ''
-# sync_ssh_keys: false
-#
-# secondary: # 'secondary' is the GitLab 'provider ID' of second LDAP server
-# label: 'LDAP'
-# host: '_your_ldap_server'
-# port: 389
-# uid: 'sAMAccountName'
-# method: 'plain' # "tls" or "ssl" or "plain"
-# bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
-# password: '_the_password_of_the_bind_user'
-# active_directory: true
-# allow_username_or_email_login: false
-# block_auto_created_users: false
-# base: ''
-# user_filter: ''
-# attributes:
-# username: ['uid', 'userid', 'sAMAccountName']
-# email: ['mail', 'email', 'userPrincipalName']
-# name: 'cn'
-# first_name: 'givenName'
-# last_name: 'sn'
-# ## EE only
-# group_base: ''
-# admin_group: ''
-# sync_ssh_keys: false
-# EOS

Wrong format as stored in gitlab.rb after the puppetrun:
+gitlab_rails['ldap_servers'] = {"active_directory"=>true, "base"=>"DC=com", "bind_dn"=>"", "host"=>"ldap.com", "label"=>"LDAP", "method"=>"plain", "password"=>"Ikwilkaas1", "port"=>389, "user_filter"=>"OU=Amsterdam,DC=com"}

Puppet should store the configuration as the

$var = YAML.load <<-'EOS'
...
 var: arg
...
EOS

Decorator Creates to many quotes

Hiera Code:

gitlab::gitlab_rails:
  omniauth_enabled: true
  omniauth_allow_single_sign_on: false
  block_auto_created_users: true
  omniauth_providers:
    - name: "github"
      app_id: "9a6161e2354332d5b5f5"
      app_secret: "ec032383e83fb59205a381f3ac9ec98a9a2bb486"
      url: "https://github.com/"
      args:
       scope: "user:email"

The result in /etc/gitlab/gitlab.rb

gitlab_rails['omniauth_providers'] = ["{"name"=>"github", "app_id"=>"9a6161e2354332d5b5f5", "app_secret"=>"ec032383e83fb59205a381f3ac9ec98a9a2bb486", "url"=>"https://github.com/", "args"=>{"scope"=>"user:email"}}"]

The quote in the Array is not needed.

Cleanup CI parameters

After integrating CI into Gitlab there are maybe some deprecated config parameters in gitlab.rb -> clean this up

Invalid parameter registry_external_url on Class[Gitlab]

Could not find option how to add "registry_external_url" to gitlab.rb config.

  class { 'gitlab':
    external_url => "https://git-ig.cz.avg.com",
    registry_external_url => "https://git-ig.cz.avg.com:4567",
...
  }

with Hiera

  • ignored:
gitlab:
  registry_external_url: "https://git-ig.cz.avg.com:4567"

This affect rails hash, but of course is not valid for gitlab setup

gitlab::gitlab_rails:
  webhook_timeout: 10
  gitlab_default_theme: 2
  registry_external_url: "https://git-ig.cz.avg.com:4567"
 ...

creates:

gitlab_rails['registry_external_url'] = 'https://git-ig.cz.avg.com:4567'

Expected result:

  • /etc/gitlab/gitlab.rb
external_url 'https://git-ig.cz.avg.com'
registry_external_url "https://git-ig.cz.avg.com:4567"

############################
# gitlab.yml configuration #
############################

gitlab_rails['gitlab_default_theme'] = 2
...

Config

  • 1.8.0 puppet module version
  • centos 7, latest Gitlab CE

Service enabled check fails on CentOS 6

Error: Could not enable gitlab-runsvdir: Execution of '/sbin/chkconfig --add gitlab-runsvdir' returned 1: service gitlab-runsvdir does not support chkconfig
Error: /Stage[main]/Gitlab::Service/Service[gitlab-runsvdir]/enable: change from false to true failed: Could not enable gitlab-runsvdir: Execution of '/sbin/chkconfig --add gitlab-runsvdir' returned 1: service gitlab-runsvdir does not support chkconfig

It seems that this is enabled by default on CentOS 6, is this correct?

Failed to call refresh: Could not restart Service[gitlab-runsvdir]

Gitlab 8.5.5
Module 1.8.0 release

On a fresh provision:

==> gitlab: Error: /Stage[main]/Gitlab::Service/Service[gitlab-runsvdir]: Failed to call refresh: Could not restart Service[gitlab-runsvdir]: Execution of '/usr/bin/gitlab-ctl restart' returned 1: ok: run: gitlab-workhorse: (pid 7493) 1s
==> gitlab: ok: run: logrotate: (pid 7499) 0s
==> gitlab: timeout: down: nginx: 0s, normally up, want up
==> gitlab: ok: run: postgresql: (pid 7573) 0s
==> gitlab: ok: run: redis: (pid 7582) 1s
==> gitlab: ok: run: sidekiq: (pid 7594) 0s
==> gitlab: ok: run: unicorn: (pid 7599) 0s
==> gitlab: Error: /Stage[main]/Gitlab::Service/Service[gitlab-runsvdir]: Could not restart Service[gitlab-runsvdir]: Execution of '/usr/bin/gitlab-ctl restart' returned 1: ok: run: gitlab-workhorse: (pid 7493) 1s
==> gitlab: ok: run: logrotate: (pid 7499) 0s
==> gitlab: timeout: down: nginx: 0s, normally up, want up
==> gitlab: ok: run: postgresql: (pid 7573) 0s
==> gitlab: ok: run: redis: (pid 7582) 1s
==> gitlab: ok: run: sidekiq: (pid 7594) 0s
==> gitlab: ok: run: unicorn: (pid 7599) 0s

Second provision is okay

shortcut to SSL, anyone?

since this is a private gitlab on a publicly hosted machine (out on AWS) I want SSL out of the box, so I thought I'd go with a module that will use Let's Encrypt to create my certificates. however there's a chicken and egg here - nginx won't run till I create the certs and the certs can't be created without a working webserver (that will also serve files from the disk), so unless I'm missing something...?

in order to automate this, I'd have to patch this module and make a PR. I'll happily do it on a less busy week. for now I'd love it if there's a shortcut solution that I'm missing (or I'll just manually bootstrap the first cert and fix this in June)

Thanks in advance!

Gitlab EE SMTP Config

Hi there,

I was just wondering if this module is able to configure gitlab such that it uses SMTP for a mail server rather than postfix?

I can't see where gitlab_rails is pulling values from, I just want to be able to implement the instructions here: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md

I've tried passing the following as a gitlab_rails entry as per the readme:


{
    'smtp_enable' => true,
    'smtp_address' => 'mail.example.internal',
    'smtp_port' => 25,
    'smtp_domain' => example.net,
    'gitlab_email_from' => '[email protected]',
    'gitlab_email_reply_to' => '[email protected]',
  },

But puppet returns that it's a string and not a hash. I don't understand why it has said that as this is the same as

{
    'webhook_timeout' => 10,
    'gitlab_default_theme' => 2,
  },

which is in the readme.

Have I missed something?

Cheers

Alex

bump puppetlabs-apt supported version

This module should be made compatibile with more recent version of the apt module to play nice with other module. (eg. if you "puppet module install puppetlabs-postgresql" before this you'll get an error due to an incompatible apt module being installed)

Bump version to > 1.8.0

I didn't change the version number in the metadata.json, which means that the new additions from #76 will not propagate (especially when my local metadata.json says "version": "1.8.0-1" :)

Make config file management configurable

Their is an unfortunate use case scenario where one would want to install the package, repo etc, however not manage the service/config file.

So it's partially managed by puppet.

Currently, the service management by puppet is configurable however the config file management is not.

Would be useful if the config file management was optional/configurable.

Release soon?

It looks like a several pull requests have been merged in since the last release. Any chance a new release can be published?

Manage concurrent setting for gitlab-runner

Currently the default setting for concurrent is 4 for gitlab-runner.

There doesn't see to be a way from within the module to set it.

Because there's no template to manage, not sure of the best way to send a PR.

Thoughts?

gitlab version support

Will there be Version support in the module?
Currently latest works but see few caveats:

  1. if someone wants to lock to a particular version and not update
  2. with a version parameter you can update on next puppet run, now you have to do a full "update" at the system level

Question: Would this module work with puppet 3.6.2?

We were running spuder's gitlab module, and really want to leap to this module, but we are running puppet enterprise 3.6.2. Upgrading is on the roadmap, but not in the immediate future. Is it possible that the module is compatible with 3.6.2, but untested? Or did you use some 3.7-specific functionality (which is what I'm guessing).

Wrong package url for Debian

For Debian (instead of Ubuntu) location in init.pp is wrong

it should be

location => "https://packages.gitlab.com/gitlab/gitlab-${edition}/debian/",

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.