Instalação do Gitlab e introdução ao Git

Neste tutorial vamos instalar o GitLab Community Edition (CE) - Omnibus package e aprender alguns comandos básicos do GIT.

[ Hits: 39.415 ]

Por: Leonardo Macedo Cerqueira em 24/02/2016 | Blog: http://devopslab.com.br/


Backup do Gitlab



Após você ter criado o Gitlab, colocado em produção, tenha em mente que este ambiente é crítico, todos os desenvolvedores, arquitetos, sysadmins, devops etc vão armazenar os códigos e documentações no GitLab.

Você tem a obrigação de ter no mínimo um backup íntegro do Gitlab, e dependendo da empresa é interessante colocar o GitLab em HA, mas para a maioria dos casos um backup bem feito é mais que suficiente.

Tem ainda um porém, se um dia acontecer um problema, e merdas acontecem, você vai preferir o Kid Bengala te fungando no cangote, do que falar para os times que não tem backup do ambiente, neste caso se prepare, pois a mandioca vai vir sem vaselina. FAÇA BACKUP.

1. Backup dos arquivos de configuração, chaves de autenticação e certificados SSL.

# mkdir BACKUP-GITLAB
# tar cvzf /BACKUP-GITLAB/gitlab.tar.gz /etc/gitlab/


Os arquivos mais importantes são: gitlab.rb (configuração), gitlab-secrets.json (chaves de acessos dos usuários), e os certificados ".crt" e ".key".

2. Backup do banco de dados, repositórios e anexos.

Por padrão os backups serão armazenados no diretório /var/opt/gitlab/backups, porém isto pode ser alterado editando o arquivo /etc/gitlab/gitlab.rb.

# gitlab-rake gitlab:backup:create
Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
done
Dumping repositories ...
* StreetFighter/Newgame ... [DONE]
* StreetFighter/Newgame.wiki ... [SKIPPED]
done
Dumping uploads ...
done
Dumping builds ...
done
Dumping artifacts ...
done
Dumping lfs objects ...
done
Creating backup archive: 1455574026_gitlab_backup.tar ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
done
Deleting old backups ... skipping


# ls /var/opt/gitlab/backups/
1455574026_gitlab_backup.tar

Cada backup é gerado com um número de identificação único, no caso 1455574026, este id vai ser utilizado no restore.

O Gitlab permite que você faça o upload automático dos backups para o S3 da Amazon, Rackspace CloudFiles, Google Storage entre outros, isto tem na documentação oficial do Gitlab.

3. Restore Full do Gitlab.

O restore só funciona com a mesma versão do Gitlab, se você fez backup da verão gitlab-ce-8.4.4, então o restore tem que ser na mesma versão gitlab-ce-8.4.4. Se você quiser fazer um upgrade, terá que restaurar o backup e depois o fazer upgrade.

Simularemos que perdemos tudo, então crie uma máquina zerada e instale apenas o Gitlab, siga os capítulos 2 e 3 deste tutorial.

Assumindo que você tenha um servidor do Gitlab instalado e funcional, vamos restaurar a pasta /etc/gitlab.

# tar xvzf gitlab.tar.gz -C /
etc/gitlab/
etc/gitlab/ssl/
etc/gitlab/ssl/gitlab.devopslab.com.br.key
etc/gitlab/ssl/gitlab.devopslab.com.br.crt
etc/gitlab/gitlab.rb
etc/gitlab/gitlab-secrets.json


Restauração da base de dados.

Pare os processos que utilizam o banco de dados.

# gitlab-ctl stop unicorn
# gitlab-ctl stop sidekiq
# gitlab-ctl status


Faça a correção da permissão do arquivo de backup.

# chown git. /var/opt/gitlab/backups/1455574026_gitlab_backup.tar

Este comando vai restaurar o banco.

# gitlab-rake gitlab:backup:restore BACKUP=1455574026
Unpacking backup ... done
Restoring database ...
Restoring PostgreSQL database gitlabhq_production ... SET
SET
DROP INDEX
CREATE INDEX
WARNING: no privileges could be revoked for "public"
REVOKE
WARNING: no privileges could be revoked for "public"
GRANT
[DONE]
done
Restoring repositories ...
* StreetFighter/Newgame ... [DONE]
Put GitLab hooks in repositories dirs [DONE]
Restoring uploads ... done
Restoring builds ... done
Restoring artifacts ... done
Restoring lfs objects ...done
This will rebuild an authorized_keys file.
You will lose any data stored in authorized_keys file.
Do you want to continue (yes/no)? yes
Deleting tmp directories ... done
done


Inicie o Gitlab:

# gitlab-ctl start
# gitlab-ctl status


Verificando a integridade do restore:

# gitlab-rake gitlab:check SANITIZE=true

Se tiver algum erro, o script vai pedir para corrigir já com a solução, no meu caso deu um erro de permissão.

# gitlab-rake gitlab:check SANITIZE=true
Checking GitLab Shell ...
GitLab Shell version >= 2.6.10 ? ... OK (2.6.10)
Repo base directory exists? ... yes
Repo base directory is a symlink? ... no
Repo base owned by git:git? ... yes
Repo base access is drwxrws---? ... yes
hooks directories in repos are links: ... 11/3 ... ok
Running /opt/gitlab/embedded/service/gitlab-shell/bin/check
Check GitLab API access: OK
Check directories and files:
/var/opt/gitlab/git-data/repositories: OK
/var/opt/gitlab/.ssh/authorized_keys: OK
Test redis-cli executable: redis-cli 2.8.21
Send ping to redis server: PONG
gitlab-shell self-check successful
Checking GitLab Shell ... Finished
Checking Sidekiq ...
Running? ... yes
Number of Sidekiq processes ... 1
Checking Sidekiq ... Finished
Checking Reply by email ...
Reply by email is disabled in config/gitlab.yml
Checking Reply by email ... Finished
Checking LDAP ...
LDAP is disabled in config/gitlab.yml
Checking LDAP ... Finished
Checking GitLab ...
Git configured with autocrlf=input? ... yes
Database config exists? ... yes
Database is SQLite ... no
All migrations up? ... yes
Database contains orphaned GroupMembers? ... no
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Uploads directory setup correctly? ... skipped (no tmp uploads folder yet)
Init script exists? ... skipped (omnibus-gitlab has no init script)
Init script up-to-date? ... skipped (omnibus-gitlab has no init script)
projects have namespace: ...
11/3 ... yes
Redis version >= 2.8.0? ... yes
Ruby version >= 2.1.0 ? ... yes (2.1.8)
Your git bin path is "/opt/gitlab/embedded/bin/git"
Git version >= 1.7.10 ? ... yes (2.6.2)
Active users: 12
Checking GitLab ... Finished


Reconfigure o gitlab mais uma vez:

# gitlab-ctl reconfigure

Backup restaurado com sucesso, basta se logar na url do Gitlab e verificar os projetos, usuários, arquivos, chaves de autenticação e etc, backup 100%. Este projeto Gitlab é muito bom, todos os scripts funcionam corretamente, sem erros, tudo redondinho, boa documentação.

Tudo que foi abordado neste tutorial pode ser encontrado neste endereços:
Espero ter contribuído um pouco, até a próxima.

Página anterior    

Páginas do artigo
   1. Introdução ao Git e Gitlab
   2. Instalação do GitLab
   3. Integração do LDAP
   4. Utilizando o Git
   5. Backup do Gitlab
Outros artigos deste autor

Discos Virtuais na Amazon WS - Como expandir disco EBS em servidores virtuais Amazon WS

OUTGUESS: Oculte mensagens em fotos

Vsftp - Instalação de um servidor FTP focado em segurança

KNOCK + SSH

Instalação do Varnish + Apache + Virtual Hosts

Leitura recomendada

Servidor web nginx com PHP-FPM e memcached

Mini-manual do Fluxbox no Zenwalk

Configurando o CACIC (parte 1) - Atualizado

Conkyzando e atalhando o Lubuntu 12.10

Umask para leigos

  
Comentários
[1] Comentário enviado por fabio em 24/02/2016 - 10:10h

Belo artigo, parabéns!

[2] Comentário enviado por azk em 27/02/2016 - 06:12h

excelente artigo!
o git é uma ferramenta incrivelmente poderosa...

[3] Comentário enviado por removido em 03/03/2016 - 15:39h

Parabéns pelo artigo.
____________________________________________________
Manjaro Geek: http://www.manjaro-geek.org/
Fórum: http://forum.manjaro-geek.org/index.php
Freenode: #manjaro-geek

[4] Comentário enviado por lksmodos em 23/03/2016 - 15:43h

Parabéns artigo muito legal.

[5] Comentário enviado por quartodazona em 06/06/2017 - 13:36h

Excelente artigo meu amigo. Tenho pensado seriamente em integrar ao AD da empresa onde trabalho, principalmente ao ler seu artigo, porém gostaria de saber se existe alguma forma de desabilitar o acesso ao registro que fica na tela de inicio.
Obrigado.

[6] Comentário enviado por cROMADO em 06/06/2017 - 15:37h


[5] Comentário enviado por quartodazona em 06/06/2017 - 13:36h

Excelente artigo meu amigo. Tenho pensado seriamente em integrar ao AD da empresa onde trabalho, principalmente ao ler seu artigo, porém gostaria de saber se existe alguma forma de desabilitar o acesso ao registro que fica na tela de inicio.
Obrigado.


Quando você integrar o Gitlab com AD e Ldap, aquela opção de cadastro vai ficar bloqueada.
Se não for exatamente isto, deve faltar alguma opção ou coisa do tipo, mas fique tranquilo que é plenamente possível integrar o Gitlab com autenticação centralizada e bloquear o cadastro de novos usuários.

[7] Comentário enviado por quartodazona em 06/06/2017 - 20:10h


[6] Comentário enviado por cROMADO em 06/06/2017 - 15:37h


[5] Comentário enviado por quartodazona em 06/06/2017 - 13:36h

Excelente artigo meu amigo. Tenho pensado seriamente em integrar ao AD da empresa onde trabalho, principalmente ao ler seu artigo, porém gostaria de saber se existe alguma forma de desabilitar o acesso ao registro que fica na tela de inicio.
Obrigado.


Quando você integrar o Gitlab com AD e Ldap, aquela opção de cadastro vai ficar bloqueada.
Se não for exatamente isto, deve faltar alguma opção ou coisa do tipo, mas fique tranquilo que é plenamente possível integrar o Gitlab com autenticação centralizada e bloquear o cadastro de novos usuários.

Mas estou com dificuldade em integrar no AD, está dando que minhas credenciais não funcionam.

Minha configuração:

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: 'winserver.empresa.complemento'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'CN=meu_usuario_admin_do_ad,CN=Users,DC=empresa,DC=complemento'
password: 'minha_senha'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'OU=PASTA1,OU=PASTA2_DENTRO_DA_PASTA1,OU=PASTA3_DENTRO_DE_PASTA2,DC=empresa,DC=complemento'
# user_filter: ''
attributes:
username: ['uid', 'userid', 'sAMAccountName']
email: ['mail', 'email', 'userPrincipalName']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
EOS

Já tentei colocar o ip do servidor e o escambau. Tive de colocar estes 3 níveis de pasta para identificar meu usuário no AD porque é assim que está configurado no AD, com três níveis de diretórios até chegar no que contém os usuários.

Você consegue me ajudar?

Obrigado.

[8] Comentário enviado por quartodazona em 08/06/2017 - 17:27h


Você consegue me ajudar?

Obrigado.


Já consegui resolver e até escrevi um post sobre isso.

https://mastigado.wordpress.com/2017/06/08/integrando-o-gitlab-no-active-directory-ldap/

Muito obrigado pela atenção.


[9] Comentário enviado por ederwyk em 19/01/2018 - 17:31h

?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts