Puppet Class: gitlab

Inherits:
gitlab::params
Defined in:
manifests/init.pp

Overview

Class: gitlab

init manifest for gitlab class

Parameters

puppet_manage_config

default => true /etc/gitlab/gitlab.rb will be managed by puppet

puppet_manage_backups

default => true Includes backup.pp which sets cron job to run rake task

external_url

default => undef Required parameter, specifies the url that end user will navigate to Example: ‘gitlab.example.com

gitlab_branch

default => undef Required parameter, specifies which gitlab branch to download and install Example: ‘7.0.0’

gitlab_release

default => ‘basic’ specifies ‘basic’ or ‘enterprise’ version to download, some parameters are disabled if basid Example: ‘enterprise’

gitlab_download_link

default => undef specifies url to download gitlab from, optional if gitlab_release = basic Example: ‘secret_url/ubuntu-12.04/gitlab_7.0.0-omnibus-1_amd64.deb

external_url

default => undef Required paramter, the url configured in nginx Example: ‘gitlab.example.com

  1. Gitlab app settings

gitlab_email_from

default => undef Example: ‘gitlab@example.com’

gitlab_default_projects_limit

default => undef How many projects a user can create Example: 42

gitlab_default_can_create_group

default => undef Allow users to make own groups, (gitlab default: true) Example: false

gitlab_username_changing_enabled

default => undef Allow users to change own username, not suggested if running ldap Example: false

gitlab_default_theme

default => undef Color Theme: 1=Basic, 2=Mars, 3=Modern, 4=Gray, 5=Color (gitlab default: 2) Example: 3

gitlab_signup_enabled

default => undef Anyone can create an account (gitlab default: true) Example: false

gitlab_signin_enabled

default => undef Sign in with shortname, eg. ‘steve’ vs ‘steve@apple.com’ (gitlab default: true) Example: false

gitlab_default_projects_features_issues

default => undef Enables light weight issue tracker on projects (gitlab default: true) Example: false

gitlab_default_projects_features_merge_requests

default => undef Enables merge requests on projects (gitlab default: true) Example: false

gitlab_default_projects_features_wiki

default => undef Enables light weight wiki on projects (gitlab default: true) Example: false

gitlab_default_projects_features_snippets

default => undef Like github ‘gits’ (default: true) Example: false

gitlab_default_projects_features_visibility_level

default => undef Project visibility [‘public’ | ‘internal’ | ‘private’] (gitlab default: ‘private’) Example: false

issues_tracker_redmine

default => undef Integrate with redmine issue tracker (gitlab default: false) Example: false

issues_tracker_redmine_title

default => undef Example: ‘title’

issues_tracker_redmine_project_url

default => undef Example: ‘foo.example.com

issues_tracker_redmine_issues_url

default => undef Example: ‘foo.example.com

issues_tracker_redmine_new_issue_url

default => undef Example: ‘foo.example.com

issues_tracker_jira

default => undef Example: false

issues_tracker_jira_title

default => undef Example: ‘foo’

issues_tracker_jira_project_url

default => undef Example: ‘foo.example.com

issues_tracker_jira_project_url

default => undef Example: ‘foo.example.com

issues_tracker_jira_new_issue_url

default => undef Example: ‘foo.example.com

gravatar_enabled

default => undef Use user avatar image from Gravatar.com (gitlab default: true) Example: true

gravatar_plain_url

default => undef Example: ‘www.gravatar.com/avatar/%hash?s=%size&d=identicon’

gravatar_ssl_url

default => undef Example: ‘secure.gravatar.com/avatar/%hash?s=%size&d=identicon’

  1. Auth settings

ldap_enabled

default => false

ldap_host

default => ‘server.example.com’

ldap_port

default => 636 Example: 389

ldap_uid

default => ‘sAMAccountName’ Example: ‘uid’

ldap_method

default => ‘ssl’ Example: ‘ssl’

ldap_bind_dn

default => ‘CN=query user,CN=Users,DC=mycorp,DC=com’

ldap_password

default => ‘correct-horse-battery-staple’

ldap_allow_username_or_email_login

default => true Login with email prefix or full email. e.g. steve vs steve@apple.com

ldap_base

default => DC=mycorp,DC=com

ldap_sync_time

default => undef Prevent clicks from taking long time, see bit.ly/1qxpWQr

ldap_group_base

default => ” Enterprise only feature, Ldap groups map to gitlab groups Example: ‘OU=groups,DC=mycorp,DC=com’

ldap_user_filter

default => ” Enterprise only feature, filter ldap group Example: ‘(memberOf=CN=my department,OU=groups,DC=mycorp,DC=com)’

ldap_sync_ssh_keys

default => undef Enterprise only feature, The bject name in ldap where ssh keys are stored Example: ‘sshpublickey’

ldap_admin_group

default => undef Enterprise only feature, The object name in ldap that matches administrators Example: ‘GitLab administrators’

omniauth_enabled

default => undef Allows login via Google, twitter, Github ect.. Example: true

omniauth_allow_single_sign_on

default => false CAUTION: Lets anyone with twitter/github/google account to authenticate. bit.ly/Uimqh9 Example: ‘sshpublickey’

omniauth_block_auto_created_users

default => true Lockdown new omniauth accounts until they are approved Example: true

omniauth_providers

default => undef Allows user to authenticate with Twitter, Google, Github ect… Example: [ ‘{

  "name"   => "google_oauth2",
  "app_id" => "YOUR APP ID",
  "app_secret" => "YOUR APP SECRET",
  "args"   => { "access_type" => "offline", "approval_prompt" => "" }
}',
',',
'{
  "name"   => "twitter",
  "app_id" => "YOUR APP ID",
  "app_secret" =>  "YOUR APP SECRET"
}',
',',
'{ "name"   => "github",
  "app_id" => "YOUR APP ID",
  "app_secret" =>  "YOUR APP SECRET",
  "args"  => { "scope" =>  "user:email" }
}'

], See tests/ominiauth.pp for more information

  1. Advanced settings

satellites_path

default => undef Where satellite scripts are run Example: /var/opt/gitlab/git-data/gitlab-satellites

satellites_timeout

default => undef Increase if merge requests timeout (gitlab default: 30) Example: 120

backup_path

default => undef Location for backups (relative to rails root) Example: ‘/var/opt/gitlab/backups’

backup_keep_time

default => undef Number of seconds to keep backups. gitlab default: 0 (forever) Example: 604800 # 1 week

gitlab_shell_path

default => undef Where gitlab-shell is located Example: /opt/gitlab/embedded/service/gitlab-shell/

gitlab_shell_repos_path

default => undef Path where gitlab shell repos are stored Example: ‘/var/opt/gitlab/git-data/repositories’ # Cannot be a symlink

gitlab_shell_hooks_path

default => undef Path for git hooks Example: ‘/opt/gitlab/embedded/service/gitlab-shell/hooks/’ # Cannot be a symlink

gitlab_shell_upload_pack

default => undef Run shell upload pack on git repos Example: true

gitlab_shell_receive_pack

default => undef Run shell recieve pack on git repos Example: true

gitlab_shell_ssh_port

default => undef Port ssh runs on Example: 22

git_bin_path

default => undef Path to git repo, Make sure you know what you are doing Example: ‘/opt/bin/gitlab/embedded/bin/git’

git_max_size

default => undef Maximum size of https packets. Increase if large commits fail. (git default 5242880 [5mb) Example: 25600

git_timeout

default => undef Timeout (in seconds) for git shell Example: 10

  1. Extra customization

extra_google_analytics_id

default => undef

extra_piwik_url

default => undef

extra_sign_in_text

default => undef Allows for company logo/name on login page. See ‘tests/sign_in_text.pp’ for an example

  1. Omnibus customization

redis_port

default => undef Deprecated in 7.3: Port redis runs on Example: 6379

postgresql_port

default => undef Port postgres runs on Example: 5432

unicorn_port

default => undef Port unicorn runs on Example: 8080

git_data_dir

default => undef Example: ‘/var/opt/gitlab/git-data’

gitlab_username

default => undef Local username Example: ‘gitlab’

gitlab_group

default => undef Local groupname Example: ‘gitlab’

redirect_http_to_https

default => undef Sets nginx 301 redirect from http to https urls. Requires ssl be enabled (gitlab default: false) Example: true

ssl_certificate

default => ‘/etc/gitlab/ssl/gitlab.crt’ Location of ssl certificate Example: ‘/etc/gitlab/ssl/gitlab.crt’

ssl_certificate_key

default => ‘/etc/gitlab/ssl/gitlab.key’ Location of ssl key Example: ‘/etc/gitlab/ssl/gitlab.key’

listen_addres

default => undef Array of ipv4 and ipv6 address nginx listens on Example: [“0.0.0.0”,“”]

git_uid

default => undef uid of git user, (the user gitlab-shell runs under) Example: 42

git_gid

default => undef gid of git user, (the user gitlab-shell runs under) Example: 42

gitlab_redis_uid

default => undef Example: 42

gitlab_redis_gid

default => undef Example: 42

gitlab_psql_uid

default => undef Example: 42

gitlab_psql_gid

default => undef Example: 42

aws_enable

default => false Store images on amazon Example: true

aws_access_key_id

default => undef Example: ‘AKIA1111111111111UA’

aws_secret_access_key

default => undef Example: ‘secret’

aws_bucket

default => undef Example: ‘my_gitlab_bucket’

aws_region

default => undef Example: ‘us-east-1’

smtp_enable

default => false Connect to external smtp server Example: true

smtp_address

default => undef smtp server hostname Example: ‘smtp.example.com’

smtp_port

default => undef Example: 456

smtp_user_name

default => undef Example: ‘smtp user’

smtp_password

default => undef Example: ‘correct-horse-battery-staple’

smtp_domain

default => undef Example: ‘example.com’

smtp_authentication

default => undef How smtp authorizes Example: ‘login’

smtp_enable_starttls_auto

default => true Use tls on smtp server Example: true

svlogd_size

default => 200 * 1024 * 1024 Rotate after x number of bytes Example: 200 * 1024 * 1024 # 200MB

svlogd_num

default => 30 Number of rotated logs to keep Example: 60

svlogd_timeout

default => 24 * 60 * 60 How long between log rotations (minutes) Example: 24 * 60 * 60 # 24hours

svlogd_filter

default => ‘gzip’ Compress logs

svlogd_udp

default => undef Transmit logs via UDP Example: #TODO: find example

svlogd_prefix

default => undef Custom prefix for log messages Example: #TODO: find example

udp_log_shipping_host

default => undef Enterprise Edition Only - ip of syslog server Example: ‘192.0.2.0’

udp_log_shipping_port

default => undef Enterprise Edition Only - port of syslog server Example: 514

high_availability_mountpoint

default => undef Prevents omnibus-gitlab services (nginx, redis, unicorn etc.) from starting before a given filesystem is mounted Example: ‘/tmp’

Examples

Basic Example with https class { ‘gitlab’ :

gitlab_branch          => '7.0.0',
external_url           => 'http://foo.bar',
ssl_certificate        => '/etc/gitlab/ssl/gitlab.crt',
ssl_certificate_key    => '/etc/gitlab/ssl/gitlab.key',
redirect_http_to_https => true,
puppet_manage_backups  => true,
backup_keep_time       => 5184000, # In seconds, 5184000 = 60 days
gitlab_default_projects_limit => 100,

}

Authors

Spencer Owen <owenspencer@gmail.com>

Copyright 2014 Spencer Owen, unless otherwise noted.

Parameters:

  • puppet_manage_config (Any) (defaults to: $::gitlab::params::puppet_manage_config)
  • puppet_manage_backups (Any) (defaults to: $::gitlab::params::puppet_manage_backups)
  • puppet_manage_packages (Any) (defaults to: $::gitlab::params::puppet_manage_packages)
  • gitlab_branch (Any) (defaults to: $::gitlab::params::gitlab_branch)
  • gitlab_release (Any) (defaults to: $::gitlab::params::gitlab_release)
  • gitlab_download_link (Any) (defaults to: $::gitlab::params::gitlab_download_link)
  • external_url (Any) (defaults to: $::gitlab::params::external_url)
  • gitlab_email_from (Any) (defaults to: $::gitlab::params::gitlab_email_from)
  • gitlab_default_projects_limit (Any) (defaults to: $::gitlab::params::gitlab_default_projects_limit)
  • gitlab_default_can_create_group (Any) (defaults to: $::gitlab::params::gitlab_default_can_create_group)
  • gitlab_username_changing_enabled (Any) (defaults to: $::gitlab::params::gitlab_username_changing_enabled)
  • gitlab_default_theme (Any) (defaults to: $::gitlab::params::gitlab_default_theme)
  • gitlab_signup_enabled (Any) (defaults to: $::gitlab::params::gitlab_signup_enabled)
  • gitlab_signin_enabled (Any) (defaults to: $::gitlab::params::gitlab_signin_enabled)
  • gitlab_default_projects_features_issues (Any) (defaults to: $::gitlab::params::gitlab_default_projects_features_issues)
  • gitlab_default_projects_features_merge_requests (Any) (defaults to: $::gitlab::params::gitlab_default_projects_features_merge_requests)
  • gitlab_default_projects_features_wiki (Any) (defaults to: $::gitlab::params::gitlab_default_projects_features_wiki)
  • gitlab_default_projects_features_snippets (Any) (defaults to: $::gitlab::params::gitlab_default_projects_features_snippets)
  • gitlab_default_projects_features_visibility_level (Any) (defaults to: $::gitlab::params::gitlab_default_projects_features_visibility_level)
  • issues_tracker_redmine (Any) (defaults to: $::gitlab::params::issues_tracker_redmine)
  • issues_tracker_redmine_title (Any) (defaults to: $::gitlab::params::issues_tracker_redmine_title)
  • issues_tracker_redmine_project_url (Any) (defaults to: $::gitlab::params::issues_tracker_redmine_project_url)
  • issues_tracker_redmine_issues_url (Any) (defaults to: $::gitlab::params::issues_tracker_redmine_issues_url)
  • issues_tracker_redmine_new_issue_url (Any) (defaults to: $::gitlab::params::issues_tracker_redmine_new_issue_url)
  • issues_tracker_jira (Any) (defaults to: $::gitlab::params::issues_tracker_jira)
  • issues_tracker_jira_title (Any) (defaults to: $::gitlab::params::issues_tracker_jira_title)
  • issues_tracker_jira_project_url (Any) (defaults to: $::gitlab::params::issues_tracker_jira_project_url)
  • issues_tracker_jira_issues_url (Any) (defaults to: $::gitlab::params::issues_tracker_jira_issues_url)
  • issues_tracker_jira_new_issue_url (Any) (defaults to: $::gitlab::params::issues_tracker_jira_new_issue_url)
  • gravatar_enabled (Any) (defaults to: $::gitlab::params::gravatar_enabled)
  • gravatar_plain_url (Any) (defaults to: $::gitlab::params::gravatar_plain_url)
  • gravatar_ssl_url (Any) (defaults to: $::gitlab::params::gravatar_ssl_url)
  • ldap_enabled (Any) (defaults to: $::gitlab::params::ldap_enabled)
  • ldap_host (Any) (defaults to: $::gitlab::params::ldap_host)
  • ldap_port (Any) (defaults to: $::gitlab::params::ldap_port)
  • ldap_uid (Any) (defaults to: $::gitlab::params::ldap_uid)
  • ldap_method (Any) (defaults to: $::gitlab::params::ldap_method)
  • ldap_bind_dn (Any) (defaults to: $::gitlab::params::ldap_bind_dn)
  • ldap_password (Any) (defaults to: $::gitlab::params::ldap_password)
  • ldap_sync_time (Any) (defaults to: $::gitlab::params::ldap_sync_time)
  • ldap_allow_username_or_email_login (Any) (defaults to: $::gitlab::params::ldap_allow_username_or_email_login)
  • ldap_base (Any) (defaults to: $::gitlab::params::ldap_base)
  • ldap_group_base (Any) (defaults to: $::gitlab::params::ldap_group_base)
  • ldap_user_filter (Any) (defaults to: $::gitlab::params::ldap_user_filter)
  • ldap_sync_ssh_keys (Any) (defaults to: $::gitlab::params::ldap_sync_ssh_keys)
  • ldap_admin_group (Any) (defaults to: $::gitlab::params::ldap_admin_group)
  • omniauth_enabled (Any) (defaults to: $::gitlab::params::omniauth_enabled)
  • omniauth_allow_single_sign_on (Any) (defaults to: $::gitlab::params::omniauth_allow_single_sign_on)
  • omniauth_block_auto_created_users (Any) (defaults to: $::gitlab::params::omniauth_block_auto_created_users)
  • omniauth_providers (Any) (defaults to: $::gitlab::params::omniauth_providers)
  • satellites_path (Any) (defaults to: $::gitlab::params::satellites_path)
  • satellites_timeout (Any) (defaults to: $::gitlab::params::satellites_timeout)
  • backup_path (Any) (defaults to: $::gitlab::params::backup_path)
  • backup_keep_time (Any) (defaults to: $::gitlab::params::backup_keep_time)
  • gitlab_shell_path (Any) (defaults to: $::gitlab::params::gitlab_shell_path)
  • gitlab_shell_repos_path (Any) (defaults to: $::gitlab::params::gitlab_shell_repos_path)
  • gitlab_shell_hooks_path (Any) (defaults to: $::gitlab::params::gitlab_shell_hooks_path)
  • gitlab_shell_upload_pack (Any) (defaults to: $::gitlab::params::gitlab_shell_upload_pack)
  • gitlab_shell_receive_pack (Any) (defaults to: $::gitlab::params::gitlab_shell_receive_pack)
  • gitlab_shell_ssh_port (Any) (defaults to: $::gitlab::params::gitlab_shell_ssh_port)
  • git_bin_path (Any) (defaults to: $::gitlab::params::git_bin_path)
  • git_max_size (Any) (defaults to: $::gitlab::params::git_max_size)
  • git_timeout (Any) (defaults to: $::gitlab::params::git_timeout)
  • extra_google_analytics_id (Any) (defaults to: $::gitlab::params::extra_google_analytics_id)
  • extra_piwik_url (Any) (defaults to: $::gitlab::params::extra_piwik_url)
  • extra_piwik_site_id (Any) (defaults to: $::gitlab::params::extra_piwik_site_id)
  • extra_sign_in_text (Any) (defaults to: $::gitlab::params::extra_sign_in_text)
  • redis_port (Any) (defaults to: $::gitlab::params::redis_port)
  • postgresql_port (Any) (defaults to: $::gitlab::params::postgresql_port)
  • unicorn_port (Any) (defaults to: $::gitlab::params::unicorn_port)
  • git_data_dir (Any) (defaults to: $::gitlab::params::git_data_dir)
  • gitlab_username (Any) (defaults to: $::gitlab::params::gitlab_username)
  • gitlab_group (Any) (defaults to: $::gitlab::params::gitlab_group)
  • redirect_http_to_https (Any) (defaults to: $::gitlab::params::redirect_http_to_https)
  • ssl_certificate (Any) (defaults to: $::gitlab::params::ssl_certificate)
  • ssl_certificate_key (Any) (defaults to: $::gitlab::params::ssl_certificate_key)
  • listen_addresses (Any) (defaults to: $::gitlab::params::listen_addresses)
  • git_uid (Any) (defaults to: $::gitlab::params::git_uid)
  • git_gid (Any) (defaults to: $::gitlab::params::git_gid)
  • gitlab_redis_uid (Any) (defaults to: $::gitlab::params::gitlab_redis_uid)
  • gitlab_redis_gid (Any) (defaults to: $::gitlab::params::gitlab_redis_gid)
  • gitlab_psql_uid (Any) (defaults to: $::gitlab::params::gitlab_psql_uid)
  • gitlab_psql_gid (Any) (defaults to: $::gitlab::params::gitlab_psql_gid)
  • aws_enable (Any) (defaults to: $::gitlab::params::aws_enable)
  • aws_access_key_id (Any) (defaults to: $::gitlab::params::aws_access_key_id)
  • aws_secret_access_key (Any) (defaults to: $::gitlab::params::aws_secret_access_key)
  • aws_bucket (Any) (defaults to: $::gitlab::params::aws_bucket)
  • aws_region (Any) (defaults to: $::gitlab::params::aws_region)
  • smtp_enable (Any) (defaults to: $::gitlab::params::smtp_enable)
  • smtp_address (Any) (defaults to: $::gitlab::params::smtp_address)
  • smtp_port (Any) (defaults to: $::gitlab::params::smtp_port)
  • smtp_user_name (Any) (defaults to: $::gitlab::params::smtp_user_name)
  • smtp_password (Any) (defaults to: $::gitlab::params::smtp_password)
  • smtp_domain (Any) (defaults to: $::gitlab::params::smtp_domain)
  • smtp_authentication (Any) (defaults to: $::gitlab::params::smtp_authentication)
  • smtp_enable_starttls_auto (Any) (defaults to: $::gitlab::params::smtp_enable_starttls_auto)
  • svlogd_size (Any) (defaults to: $::gitlab::params::svlogd_size)
  • svlogd_num (Any) (defaults to: $::gitlab::params::svlogd_num)
  • svlogd_timeout (Any) (defaults to: $::gitlab::params::svlogd_timeout)
  • svlogd_filter (Any) (defaults to: $::gitlab::params::svlogd_filter)
  • svlogd_udp (Any) (defaults to: $::gitlab::params::svlogd_udp)
  • svlogd_prefix (Any) (defaults to: $::gitlab::params::svlogd_prefix)
  • udp_log_shipping_host (Any) (defaults to: $::gitlab::params::udp_log_shipping_host)
  • udp_log_shipping_port (Any) (defaults to: $::gitlab::params::udp_log_shipping_port)
  • high_availability_mountpoint (Any) (defaults to: $::gitlab::params::high_availability_mountpoint)


535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
# File 'manifests/init.pp', line 535

class gitlab (

  $puppet_manage_config    = $::gitlab::params::puppet_manage_config,
  $puppet_manage_backups   = $::gitlab::params::puppet_manage_backups,
  $puppet_manage_packages  = $::gitlab::params::puppet_manage_packages,


  $gitlab_branch           = $::gitlab::params::gitlab_branch,
  $gitlab_release          = $::gitlab::params::gitlab_release,
  $gitlab_download_link    = $::gitlab::params::gitlab_download_link,

  $external_url   = $::gitlab::params::external_url,

  #
  # 1. GitLab app settings
  # ==========================

  $gitlab_email_from                = $::gitlab::params::gitlab_email_from,
  $gitlab_default_projects_limit    = $::gitlab::params::gitlab_default_projects_limit,
  $gitlab_default_can_create_group  = $::gitlab::params::gitlab_default_can_create_group,
  $gitlab_username_changing_enabled = $::gitlab::params::gitlab_username_changing_enabled,
  $gitlab_default_theme             = $::gitlab::params::gitlab_default_theme,
  $gitlab_signup_enabled            = $::gitlab::params::gitlab_signup_enabled,
  $gitlab_signin_enabled            = $::gitlab::params::gitlab_signin_enabled,

  $gitlab_default_projects_features_issues           = $::gitlab::params::gitlab_default_projects_features_issues,
  $gitlab_default_projects_features_merge_requests   = $::gitlab::params::gitlab_default_projects_features_merge_requests,
  $gitlab_default_projects_features_wiki             = $::gitlab::params::gitlab_default_projects_features_wiki,
  $gitlab_default_projects_features_snippets         = $::gitlab::params::gitlab_default_projects_features_snippets,
  $gitlab_default_projects_features_visibility_level = $::gitlab::params::gitlab_default_projects_features_visibility_level,

  $issues_tracker_redmine               = $::gitlab::params::issues_tracker_redmine,
  $issues_tracker_redmine_title         = $::gitlab::params::issues_tracker_redmine_title,
  $issues_tracker_redmine_project_url   = $::gitlab::params::issues_tracker_redmine_project_url,
  $issues_tracker_redmine_issues_url    = $::gitlab::params::issues_tracker_redmine_issues_url,
  $issues_tracker_redmine_new_issue_url = $::gitlab::params::issues_tracker_redmine_new_issue_url,

  $issues_tracker_jira               = $::gitlab::params::issues_tracker_jira,
  $issues_tracker_jira_title         = $::gitlab::params::issues_tracker_jira_title,
  $issues_tracker_jira_project_url   = $::gitlab::params::issues_tracker_jira_project_url,
  $issues_tracker_jira_issues_url    = $::gitlab::params::issues_tracker_jira_issues_url,
  $issues_tracker_jira_new_issue_url = $::gitlab::params::issues_tracker_jira_new_issue_url,

  $gravatar_enabled    = $::gitlab::params::gravatar_enabled,
  $gravatar_plain_url  = $::gitlab::params::gravatar_plain_url,
  $gravatar_ssl_url    = $::gitlab::params::gravatar_ssl_url,

  #
  # 2. Auth settings
  # ==========================

  $ldap_enabled   = $::gitlab::params::ldap_enabled,
  $ldap_host      = $::gitlab::params::ldap_host,
  $ldap_port      = $::gitlab::params::ldap_port,
  $ldap_uid       = $::gitlab::params::ldap_uid,
  $ldap_method    = $::gitlab::params::ldap_method,
  $ldap_bind_dn   = $::gitlab::params::ldap_bind_dn,
  $ldap_password  = $::gitlab::params::ldap_password,
  
  $ldap_sync_time = $::gitlab::params::ldap_sync_time,

  $ldap_allow_username_or_email_login = $::gitlab::params::ldap_allow_username_or_email_login,
  $ldap_base                          = $::gitlab::params::ldap_base,

  $ldap_group_base  = $::gitlab::params::ldap_group_base,
  $ldap_user_filter = $::gitlab::params::ldap_user_filter,

  $ldap_sync_ssh_keys = $::gitlab::params::ldap_sync_ssh_keys,
  $ldap_admin_group   = $::gitlab::params::ldap_admin_group,

  $omniauth_enabled                   = $::gitlab::params::omniauth_enabled,
  $omniauth_allow_single_sign_on      = $::gitlab::params::omniauth_allow_single_sign_on,
  $omniauth_block_auto_created_users  = $::gitlab::params::omniauth_block_auto_created_users,
  $omniauth_providers                 = $::gitlab::params::omniauth_providers,

  #
  # 3. Advanced settings
  # ==========================

  $satellites_path             = $::gitlab::params::satellites_path,
  $satellites_timeout          = $::gitlab::params::satellites_timeout,

  $backup_path                 = $::gitlab::params::backup_path,
  $backup_keep_time            = $::gitlab::params::backup_keep_time,
  $gitlab_shell_path           = $::gitlab::params::gitlab_shell_path,
  $gitlab_shell_repos_path     = $::gitlab::params::gitlab_shell_repos_path,
  $gitlab_shell_hooks_path     = $::gitlab::params::gitlab_shell_hooks_path,
  $gitlab_shell_upload_pack    = $::gitlab::params::gitlab_shell_upload_pack,
  $gitlab_shell_receive_pack   = $::gitlab::params::gitlab_shell_receive_pack,
  $gitlab_shell_ssh_port       = $::gitlab::params::gitlab_shell_ssh_port,
  $git_bin_path                = $::gitlab::params::git_bin_path,
  $git_max_size                = $::gitlab::params::git_max_size,
  $git_timeout                 = $::gitlab::params::git_timeout,

  #
  # 4. Extra customization
  # ==========================

  $extra_google_analytics_id = $::gitlab::params::extra_google_analytics_id,
  $extra_piwik_url           = $::gitlab::params::extra_piwik_url,
  $extra_piwik_site_id       = $::gitlab::params::extra_piwik_site_id,
  $extra_sign_in_text        = $::gitlab::params::extra_sign_in_text,

  #
  # 5. Omnibus customization
  # ==========================

  $redis_port       = $::gitlab::params::redis_port,
  $postgresql_port  = $::gitlab::params::postgresql_port,
  $unicorn_port     = $::gitlab::params::unicorn_port,
  
  $git_data_dir     = $::gitlab::params::git_data_dir,
  $gitlab_username  = $::gitlab::params::gitlab_username,
  $gitlab_group     = $::gitlab::params::gitlab_group,
  
  $redirect_http_to_https   = $::gitlab::params::redirect_http_to_https,
  $ssl_certificate          = $::gitlab::params::ssl_certificate,
  $ssl_certificate_key      = $::gitlab::params::ssl_certificate_key,
  $listen_addresses         = $::gitlab::params::listen_addresses,
  
  $git_uid            = $::gitlab::params::git_uid,
  $git_gid            = $::gitlab::params::git_gid,
  $gitlab_redis_uid   = $::gitlab::params::gitlab_redis_uid,
  $gitlab_redis_gid   = $::gitlab::params::gitlab_redis_gid,
  $gitlab_psql_uid    = $::gitlab::params::gitlab_psql_uid,
  $gitlab_psql_gid    = $::gitlab::params::gitlab_psql_gid,
  
  $aws_enable               = $::gitlab::params::aws_enable,
  $aws_access_key_id        = $::gitlab::params::aws_access_key_id,
  $aws_secret_access_key    = $::gitlab::params::aws_secret_access_key,
  $aws_bucket               = $::gitlab::params::aws_bucket,
  $aws_region               = $::gitlab::params::aws_region,
  
  $smtp_enable               = $::gitlab::params::smtp_enable,
  $smtp_address              = $::gitlab::params::smtp_address,
  $smtp_port                 = $::gitlab::params::smtp_port,
  $smtp_user_name            = $::gitlab::params::smtp_user_name,
  $smtp_password             = $::gitlab::params::smtp_password,
  $smtp_domain               = $::gitlab::params::smtp_domain,
  $smtp_authentication       = $::gitlab::params::smtp_authentication,
  $smtp_enable_starttls_auto = $::gitlab::params::smtp_enable_starttls_auto,
  
  $svlogd_size      = $::gitlab::params::svlogd_size,
  $svlogd_num       = $::gitlab::params::svlogd_num,
  $svlogd_timeout   = $::gitlab::params::svlogd_timeout,
  $svlogd_filter    = $::gitlab::params::svlogd_filter,
  $svlogd_udp       = $::gitlab::params::svlogd_udp,
  $svlogd_prefix    = $::gitlab::params::svlogd_prefix,

  $udp_log_shipping_host = $::gitlab::params::udp_log_shipping_host,
  $udp_log_shipping_port = $::gitlab::params::udp_log_shipping_port,

  $high_availability_mountpoint = $::gitlab::params::high_availability_mountpoint,

  ) inherits gitlab::params {

  # Verify required parameters are provided. 
  if !$external_url {
    fail ("\$external_url parameter required. \
    https://github.com/spuder/puppet-gitlab/blob/master/README.md")
  }
  if !$gitlab_branch {
    fail ("\$gitlab_branch parameter required. \
    https://github.com/spuder/puppet-gitlab/blob/master/README.md")
  }

  if versioncmp($::puppetversion, '3.0.0') < 0 {
    fail("Gitlab requires puppet 3.0.0 or greater, found: \'${::puppetversion}\'")
  }

  # Verify prameters are valid for the version of gitlab
  if versioncmp($gitlab_branch, '7.1.0') < 0 {
    if $ldap_sync_ssh_keys {
      fail("\$ldap_sync_ssh_keys is only available in gitlab 7.1.0 or greater, found: \'${gitlab_branch}\'")
    }
    if $ldap_admin_group {
      fail("\$ldap_admin_group is only available in gitlab 7.1.0 or greater, found: \'${gitlab_branch}\'")
    }
  }

  # Verify parameters are valid for the release of gitlab
  if $gitlab_release != 'enterprise' {
    if $ldap_sync_ssh_keys {
      fail("\$ldap_sync_ssh_keys is only available in enterprise edtition, gitlab_release is: \'${gitlab_release}\'")
    }
    if $ldap_admin_group {
      fail("\$ldap_admin_group is only available in enterprise edtition, gitlab_release is: \'${gitlab_release}\'")
    }
  }

  # Verify external_url includes http:// or https://
  if $external_url {
    validate_re($external_url, 'http(s)?://', 'external_url must contain string http:// or https://')
  }

  # Gitlab only supplies omnibus downloads for few select operating systems.
  # Warn the user they may be using an unsupported OS
  # https://about.gitlab.com/downloads/
  case $::operatingsystemrelease {
    '12.04': {}
    '14.04': {}
    '7.6':   {}
    '6.5':   {}
    '7.0':   {}
    default: { warning("\'${::operatingsystem}\' \'${::operatingsystemrelease}\' is not on approved list,\
      download may fail. See https://about.gitlab.com/downloads/ for supported OS's")
    }
  }

  # Set the order that the manifests are executed in
  if $puppet_manage_config  == true {
    notice('Puppet will manage the configuration file because $puppet_manage_config is true')
    include ::gitlab::install
    include ::gitlab::config
    Class['::gitlab::install'] -> Class['::gitlab::config']
  }
  else {
    info('Puppet is not managing /opt/gitlab/gitlab.rb because $puppet_manage_config is false')
  }

  if $puppet_manage_packages == true {
    notice('Puppet will manage packages because $puppet_manage_packages is true')
    include ::gitlab::install
    include ::gitlab::packages
    Class['::gitlab::packages'] -> Class['::gitlab::install']
  }
  else {
    warning('$puppet_manage_packages is false, assuming postfix and openssl are already present ')
  }

  if $puppet_manage_backups == true {
    notice('Puppet will manage backups because $puppet_manage_backups is true')
    include ::gitlab::install
    include ::gitlab::backup
    Class['::gitlab::install'] -> Class['::gitlab::backup']
  }
  else {
    warning('Puppet is not creating gitlab backups, recommend setting $puppet_manage_backups => true')
  }

  # Ensure high_availability_mountpoint is only used with gitlab > 7.2.x
  if $high_availability_mountpoint {
    if versioncmp( $gitlab_branch, '7.2.0') < 0 {
      fail("high_availability_mountpoint is only available in gitlab >= 7.2.0, found \'${gitlab_branch}\'")
    }
  }

  # Ensure listen_addresses is only used with gitlab > 7.2.x
  if $listen_addresses {
    if versioncmp( $gitlab_branch, '7.2.0') < 0 {
      fail("listen_addresses is only available in gitlab >= 7.2.0, found \'${gitlab_branch}\'")
    }
  }

  # Ensure ldap_sync_time is only used with gitlab > 7.2.x
  if $ldap_sync_time {
    if versioncmp( $gitlab_branch, '7.2.0') < 0 {
      fail("ldap_sync_time is only available in gitlab >= 7.2.0, found \'${gitlab_branch}\'")
    }
  }

  # Warn if redis_port is defined, and using gitlab > 7.3
  if $redis_port {
    if versioncmp( $gitlab_branch, '7.3.0') >= 0 {
      warn('$redis_port has been deprecated in gitlab 7.3, please remove. http://bit.ly/1DEI9m2')
    }
  }

  # If all 3 $puppet_manage_* parameters are false, then just install gitlab
  include ::gitlab::install

}