Integrando o GitLab no Active Directory (LDAP)

gitlab

Olá pessoal, bom dia (bom dia num blog que pode ser lido em qualquer hora, francamente, tsc…).

Hoje vou deixar uma dica para quem quer integrar a ferramenta GitLab no Active Directory.

fonte: http://matigado.wordpress.com

Para quem não conhece o GitLab, deixarei uma breve citação sobre o mesmo:

O GitLab compete com várias outras plataformas de gerenciamento de código para equipes de desenvolvimento – como o GitHub e Atlassian – mas atraiu investidores devido à sua torção open source no repositório de código e no modelo de ferramenta de colaboração, que permite aos usuários adaptar a plataforma para melhor atender às suas necessidades.

O texto acima também quer dizer que você pode baixar a ferramenta e instalar na sua empresa tendo uma espécie de GitHub lá dentro, mas sua instalação não será abordada aqui porque depende de várias dependências online e que do meu ponto de vista podem variar, portanto para ter acesso ao passo da instalação do GitLab localmente aconselho procurar no próprio site do GitLab (lembrando que instalei no Linux Debian 8).

Definições para o arquivo de configuração

Para a nossa configuração junto ao Active Directory vamos supor que tenhamos um servidor com as seguintes informações:

  • Nome do servidor do AD: meu_servidor_do_ad
  • Nome do domínio: dominio.central
  • Local onde está localizado o usuário administrador do AD: CN=Users
  • Base onde estão os usuários do AD: OU=PESSOAS,OU=USUARIOS,OU=ATIVOS,DC=dominio,DC=central.
  • Meu usuário admin do AD: Jair Rodrigues.

Vale lembrar uma observação feita por um usuário no site do Viva o Linux de que você não deve tentar reidentar o código, mas apenas descomentar e alterar o conteúdo do que está dentro das aspas. Eis a observação feita por ele:

ATENÇÃO: este arquivo gitlab.rb tem indentação (yaml), sendo assim não mude os espaços, não use tab, cada linha que você descomentar, deixe os espaços exatamente como estavam, não tente deixar mais para esquerda, mais para direita, não mexa na formatação, apenas apague o “#”, mude os atributos e pronto.

Portanto depois de instalado o Gitlab devemos editar suas configurações para integrá-lo ao AD de acordo com o que está descrito abaixo.

   nano /etc/gitlab/gitlab.rb
   gitlab_rails['ldap_enabled'] = true

###! **remember to close this block with 'EOS' below**
   gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
      main: # 'main' is the GitLab 'provider ID' of this LDAP server
      label: 'LDAP'
      host: 'meu_servidor_do_ad.dominio.central'
      port: 389
      uid: 'sAMAccountName'
      method: 'plain' # "tls" or "ssl" or "plain"
      bind_dn: 'CN=Jair Rodrigues,CN=Users,DC=dominio,DC=central'
      password: 'xererenenen'
      active_directory: true
      allow_username_or_email_login: true
      block_auto_created_users: false
      base: 'OU=PESSOAS,OU=USUARIOS,OU=ATIVOS,DC=dominio,DC=central'
# user_filter: ''
      attributes:
         username: ['uid', 'userid', 'sAMAccountName']
         email: ['mail', 'email', 'userPrincipalName']
         name: 'cn'
         first_name: 'givenName'
         last_name: 'sn'
EOS

Algumas observações acerca desta configuração

Sobre o atributo base:

Na empresa que trabalho, os usuários do AD estão sob a seguinte hierarquia de pastas: ATIVOS > USUARIOS > PESSOAS, mas quando você utiliza um utilitário chamado ADSI (que está lá instalado no Active Directory) o programa te dá o caminho escrito ao contrário, portanto será assim mesmo, de trás de frente que você irá escrever na configuração do GitLab.


base: 'OU=PESSOAS,OU=USUARIOS,OU=ATIVOS,DC=dominio,DC=central'

Para entrar no aplicativo ADSI você deve seguir o caminho abaixo.

E para localizar o caminho dos seus usuários siga a árvore até ela lhe mostrar por completo.


Sobre o atributo bind_dn:

Uma das coisas que me confundiu bastante foi o fato de nessa configuração do Gitlab eu não ter de colocar o login do meu usuário administrador, mas sim o nome dele. Portanto preste atenção a isso porque meu usuário tem login jair.rodrigues, mas seu nome é Jair Rodrigues lá no AD.


bind_dn: 'CN=Jair Rodrigues,CN=Users,DC=dominio,DC=central'

Comandos úteis para ocasiões inesperadas ou desesperadas

Para caso você precise consultar as informações sobre sua versão do GitLab instalada


gitlab-rake gitlab:env:info

Para editar o arquivo de configuração do GitLab


nano /etc/gitlab/gitlab.rb

Para configurar uma URL para seu Gitlab

Altere a linha onde está o atributo external_url

Para reconfigurar seu GitLab logo após ter editado o arquivo de configuração acima

gitlab-ctl reconfigure

Para reiniciar o serviço do Gitlab logo após tê-lo reconfigurado

service gitlab-runsvdir restart

Para abrir um console rails no intuito de alterar alguns parâmetros

gitlab-rails console

Para abrir um console rails e desbloquear um usuarío (o usuário pode ser bloqueado no GitLab após tentar logar digitando a senha errada repetidamente)

gitlab-rails console
user = User.find_by_email("myuser@example.com")
user.state = "active"
user.save
exit

Para instalar o Gitlab CE (Community Edition) no Debian

Siga no link abaixo para orientações diversas e continue neste poste caso precise de alguma informação complementar.

https://packages.gitlab.com/gitlab/gitlab-ce/install

E em seguida digite os códigos a seguir.

apt-get update

Tente instalar os pacotes abaixo (caso precise)

apt-get install ca-certificates curl openssh-server postfix

E de acordo com a página do Gitlab CE adicione seu repositório (lembrando que este comando abaixo pode mudar, portanto sempre consulte o link oficial informado logo acima)

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash

Instale o pacote que já existe no Debian

apt-get install gitlab-ce

E para iniciar sua instância

gitlab-ctl reconfigure

Para desinstalar o seu Gitlab

Primeiro remova todos os serviços

gitlab-ctl uninstall

Limpe todos os dados gerados

gitlab-ctl cleanse

Execute isso para o caso de querer remover as contas configuradas

gitlab-ctl remove-accounts

E por último execute este se quiser remover o pacote gitlab-ce

dpkg -P gitlab-ce

Observação:

Fiz um pdf do tutorial da Digital Ocean (que achei muito bom) para o caso do link sair do ar

https://mega.nz/#!0QVBgYBA!7SNSffIFa32zNaGsJpAstWmnkv7IUq5bsxUBq8TtfjU

Para caso seu Gitlab dê Erro 502

Edite o arquivo de configuração do Gitlab

/etc/gitlab/gitlab.rb

Descomente as linhas abaixo

unicorn['worker_processes'] = 3
unicorn['worker_timeout'] = 60

Reconfigure o Gitlab

gitlab-ctl reconfigure

fonte: http://matigado.wordpress.com

fonte: https://forum.gitlab.com/t/how-to-reset-the-admin-password-via-the-rails-console/223

fonte: https://gitlab.com/gitlab-org/gitlab-ce/issues/13179

fonte: https://www.vivaolinux.com.br/artigo/Instalacao-do-Gitlab-e-introducao-ao-Git?pagina=3

fonte: http://blog.dimaj.net/content/updated-howto-enable-ldap-filters-gitlab

fonte: https://www.digitalocean.com/community/tutorials/como-instalar-e-configurar-o-gitlab-no-ubuntu-16-04-pt

fonte: https://askubuntu.com/questions/824696/is-it-fine-to-remove-the-opt-gitlab-directory-manually-after-removing-the-gitl

Erro 502 no Git lab
fonte: https://gitlab.com/gitlab-org/gitlab-ce/issues/30095

fonte: https://docs.gitlab.com/omnibus/settings/unicorn.html