Mostrando postagens com marcador Gitlab. Mostrar todas as postagens
Mostrando postagens com marcador Gitlab. Mostrar todas as postagens

quinta-feira, 13 de maio de 2021

Criando chave SSH dentro do Gitlab Runner para automação do Deploy - CI/CD

      Nesse post eu mostro como criar uma chave SSH no Gitlab Runner para usá-la no Servidor de Deploy como host conhecido, permitindo o deploy sem a necessidade de login e senha, permitindo a automação do processo.


      Aqui assumimos que já se tem o Gitlab Runner configurado e rodando  na máquina desejada.


     Entramos no terminal do container:


$ docker exec - it gitlab-runner bash


     Mudamos para o usuário gitlab-runner


$ su gitlab-runner


     Executamos o comando que cria a chave e seguimos os passos seguintes apenas dando enter para que fique com as configurações padrão.


$ ssh-keygen

     

     Agora que a chave foi criada. Vamos copiá-la para configurá-la na máquina de deploy.


$ cd  /home/gitlab-runner/.ssh

cat id_rsa.pub


      Copiamos o conteúdo e vamos para o servidor de deploy. Nele vamos procurar o arquivo authorized_keys onde devemos colocar o conteúdo copiado. Esse arquivo fica no diretório raiz do usuário na pasta .ssh/, pode ser que já tenham outras chaves nele ou que seja ncessário criar do zero esse arquivo. 


     Ao colar lá a chave ssh pública, volte no container do Gitlab Runner e faça o primeiro acesso para testar. Lembre-se de estar com o usuário gitlab-runner.


$ docker exec - it gitlab-runner bash

$ su gitlab-runner

$ ssh usuario@ip_da_maquina_deploy


     Como é a primeira vez, aceite a conexão ssh. Pronto, agora o processo de deploy é pra funcionar normalmente.

terça-feira, 11 de maio de 2021

Erro ao Criar Runner Gitlab no Docker Toolbox - Error response from daemon: invalid mode: \MinGW\msys\1.0\etc\gitlab-runner.

      Nesse post eu mostro como resolver um problema de criar um Runner do Gitlab para quem usa o Docker Toolbox. Sabe o que é o Docker Toolbox? Um projeto (que até foi descontinuado, porém eu uso devido a problemas que tive com o Docker rodando direto na minha máquia e outras coisas que uso) que instala as ferramentas Docker (Docker Engine, Docker Machine, etc)  dentro de uma "caixa" que abstrai as características da sua máquina e roda o Docker independentemente delas. Como tudo no mundo, isso tem vantagens e desvantagens. Como o Docker Toolbox roda dentro dessa "caixa" algumas coisas funcionam um pouco diferentes. Os volumes são uma delas.

     Após baixar a imagem do Runner com o comando:


$ docker pull gitlab/gitlab-runner:latest


     Quando vamos executar o comando que sobe  o Runner criando os volumes:


$   docker run -d --name gitlab-runner --restart always -v /Users/Shared/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest


     Recebemos o seguinte erro:


c:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: invalid mode: \MinGW\msys\1.0\etc\gitlab-runner. 

See 'c:\Program Files\Docker Toolbox\docker.exe run --help'.


     E procurando a solução, encontrei e foi bem simples, basta adicionar uma barra "/" a mais no início dos caminhos do volume, ficando assim:


$ docker run -d --name gitlab-runner --restart always -v //Users/Shared/gitlab-runner/config://etc/gitlab-runner -v //var/run/docker.sock://var/run/docker.sock gitlab/gitlab-runner:latest 


     Pronto. Agora funciona tranquilo.


https://stackoverflow.com/questions/50540721/docker-toolbox-error-response-from-daemon-invalid-mode-root-docker

sexta-feira, 27 de março de 2020

Multiplas SSHs Key para Repositórios Git

As vezes precisamos de mais de uma chave SSH para podermos acessar repositórios Git com usuários diferentes, como por exemplo seu usuário pessoal e o usuário do trabalho. 

       Se os projetos estiverem no mesmo repositório a configuração é um pouco diferente; se forem em locais difetentes: GitHub, GitLab, BitBucket, etc,  é mais simples.

       Vamos começar. A primeira parte é igual, não importa se os projetos estão em um mesmo repositório ou não, que é a geração da chave.

Estamos assumindo que você já possui uma chave configurada para um usuário e quer criar a segunda chave SSH. Então, vamos começar executando o git-bash, um terminal Linux para o Windows que também faz parte da instalação do Git. Após aberto o git-bash, digite:

ssh-keygen -t rsa -b 4096 -C "seu-email-outro-usuario@aqui.com"

Você será indagado sobre onde salvar a chave, sendo que não podemos criar a chave SSH no caminho e nome default, pois já existe uma chave SSH lá. Mude o caminho ou o nome do arquivo, por exemplo, acrescentando .ssh/id_rsa_trabalho no final do nome da chave. Continue a geração, entrando com a senha e confirmando:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Caso não queira informar uma senha, pode apenas confirmar sem digitar nada (é recomendado criar uma senha, claro!). Então o prompt lhe informa que a sua chave privada e a sua chave publica estão no caminho indicado previamente, que se for o default é: C:\Users\seu-usuario\.ssh.

Copie e adicione sua chave pública à sua conta no repositório, o comando abaixo copia sua chave para a memória e deixa pronto para colar no lá:

clip < ~/.ssh/id_rsa_trabalho.pub

Nesse momento temos a nossa segunda chave SSH, precisamos configurar quando usar cada uma. Para isso, dentro do diretório do C:\Users\seu-usuario\.ssh que é onde ficam as chaves por padrão, crie um arquivo chamado config. Nesse arquivo vamos configurar o acesso a cada repositório por uma chave.

      Segue o exemplo de um arquivo para acessar o GitHub e o Bitbucket com usuários diferentes, e o bitbucket sendo acessado através da nossa nova chave:

Host bitbucket.org
    HostName bitbucket.org
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_trabalho

Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa


Pronto! Se você queria acessar projetos em repositórios diferentes com chaves diferentes sua máquina já está configurada, basta clonar normalmente seus projetos.

     Agora se você quer acessar com duas chaves no mesmo repositório, precisamos do pulo do gato. Já viu que quando vai clonar um projeto seu a URL é mais ou menos assim:

git@github.com:GbDanielO/p-calendar-ptbr.git

      Veja que vem o nome do repositório, como no destaque, depois o nome do projeto. Vamos usar isso pra diferenciar qual chave usar, mas ao invés de separar por ":" vamos separar por "traço". Vamos imaginar que a nossa url fosse: git@github.com:trabalho/p-calendar-ptbr.git. Você precisa fazer dessa forma:


Host github.com-trabalho
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_trabalho

Host github.com
    HostName github.com
    PreferredAuthentications publickey

    IdentityFile ~/.ssh/id_rsa

       Note que o HostName é igual para as duas configurações, o que muda é o Host, que identifica qual chave usar. ATENÇÃO! Agora com essa mudança, sua forma de fazer o clone do projeto no repositório trabalho mudou. O outro acesso continua como antes.

       Ficará dessa forma:

git clone git@github.com-trabalho:trabalho/p-calendar-ptbr.git

       Pronto, no demais é tudo igual.




Fonte:
https://superuser.com/questions/366649/ssh-config-same-host-but-different-keys-and-usernames
https://backefront.com.br/diferentes-sshkey-mesmo-computador/
https://victortorres.net.br/2018/12/03/mais-de-uma-chave-ssh-no-git