gitlab:
  pkg.installed
mariadb:
  pkg.installed
gitlab_nginx:
  pkg.installed:
    - name: nginx

#managed files
/etc/webapps/gitlab/gitlab.yml:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/gitlab.yml
    - user: root
    - group: root
    - mode: 644
/etc/webapps/gitlab/database.yml:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/database.yml
    - user: gitlab
    - group: gitlab
    - mode: 600
    - template: jinja
/etc/webapps/gitlab/resque.yml:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/resque.yml
    - user: root
    - group: root
    - mode: 644
/etc/webapps/gitlab-shell/config.yml:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/config.yml
    - user: gitlab
    - group: gitlab
    - mode: 600
/usr/share/webapps/gitlab/config/initializers/smtp_settings.rb:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/smtp_settings.rb
    - user: root
    - group: root
    - mode: 644
    - template: jinja
/usr/share/webapps/gitlab/config/environments/production.rb:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/production.rb
    - user: root
    - group: root
    - mode: 644
/etc/redis.conf:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/redis.conf
    - user: root
    - group: root
    - mode: 644
/etc/tempfiles.d/redis.conf:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/tmp_redis.conf
    - user: root
    - group: root
    - mode: 644
    - makedirs: true
/etc/nginx/conf.d/gitlab.conf:
  file.managed:
    - source: salt://roles/maintain/gitlab/conf_files/gitlab.conf
    - user: root
    - group: root
    - makedirs: true
    - dir_mode: 755
    - mode: 644

#add users git and gitlab to redis group
git_user:
  user.present:
    - name: git
    - groups:
      - redis
gitlab_user:
  user.present:
    - name: gitlab
    - groups:
      - redis

#migrate redis database as gitlab user if necessary
redis-running:
  service.running:
    - name: redis
    - enable: true
    - watch:
      - file: /etc/redis.conf
      - file: /etc/tempfiles.d/redis.conf
gitlab_rake_db:
  cmd.run:
    - name: "bundle-2.3 exec rake db:migrate RAILS_ENV=production"
    - cwd: "/usr/share/webapps/gitlab"
    - runas: gitlab
    - watch:
      - pkg: gitlab

#global git configuration
gitlab_git_name:
  git.config_set:
    - name: user.name
    - value: "Actaeus Curabitur"
    - user: gitlab
    - global: true
gitlab_git_email:
  git.config_set:
    - name: user.email
    - value: "actcur@actcur.com"
    - user: gitlab
    - global: true
gitlab_git_crlf:
  git.config_set:
    - name: core.autocrlf
    - value: "input"
    - user: gitlab
    - global: true

#create symlink
symlink_repos:
  file.symlink:
    - name: /var/lib/gitlab/repositories
    - target: /mnt/repos
    - force: true
#verify perms for repos are right
/var/lib/gitlab/repositories/:
  file.directory:
    - user: gitlab
    - group: gitlab
    - dir_mode: 4770

#start services
gitlab.target:
  service.running:
    - enable: true
    - watch:
      - file: /etc/webapps/gitlab/gitlab.yml
      - file: /etc/webapps/gitlab/database.yml
      - file: /etc/webapps/gitlab/resque.yml
      - file: /etc/webapps/gitlab-shell/config.yml
      - file: /etc/nginx/conf.d/gitlab.conf
      - file: /usr/share/webapps/gitlab/config/initializers/smtp_settings.rb
      - file: /usr/share/webapps/gitlab/config/environments/production.rb
gitlab-workhorse:
  service.running:
    - enable: true
    - watch:
      - file: /etc/webapps/gitlab/gitlab.yml
      - file: /etc/webapps/gitlab/database.yml
      - file: /etc/webapps/gitlab/resque.yml
      - file: /etc/webapps/gitlab-shell/config.yml
      - file: /etc/nginx/conf.d/gitlab.conf
      - file: /usr/share/webapps/gitlab/config/initializers/smtp_settings.rb
      - file: /usr/share/webapps/gitlab/config/environments/production.rb
gitlab-unicorn:
  service.running:
    - enable: true
    - watch:
      - file: /etc/webapps/gitlab/gitlab.yml
      - file: /etc/webapps/gitlab/database.yml
      - file: /etc/webapps/gitlab/resque.yml
      - file: /etc/webapps/gitlab-shell/config.yml
      - file: /etc/nginx/conf.d/gitlab.conf
      - file: /usr/share/webapps/gitlab/config/initializers/smtp_settings.rb
      - file: /usr/share/webapps/gitlab/config/environments/production.rb
gitlab-sidekiq:
  service.running:
    - enable: true
    - watch:
      - file: /etc/webapps/gitlab/gitlab.yml
      - file: /etc/webapps/gitlab/database.yml
      - file: /etc/webapps/gitlab/resque.yml
      - file: /etc/webapps/gitlab-shell/config.yml
      - file: /etc/nginx/conf.d/gitlab.conf
      - file: /usr/share/webapps/gitlab/config/initializers/smtp_settings.rb
      - file: /usr/share/webapps/gitlab/config/environments/production.rb