Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usando Ansible para deploy, problema na etapa de checkout

Eu tenho um projeto utilizando ansible para realizar o deploy de uma aplicação Django com PostgreSQL e Ningix utilizando docker, eu estou trabalhando com o conceito de roles para melhor organizar as estapas, o arquivo main.yaml com as etapas está assim configurado:

main.yaml: ```

  • hosts: all remote_user: root become: yes roles:

    Instalando Gunicorn

    • gunicorn_install

    Instalando o nginx

    • nginx_install

    Configurando o servidor para acesso remoto

    • configure_server

    Clonar o projeto

    • checkout_project

    =====================

    Instalação com Docker

    =====================

    Instalando o docker

    • docker_install

    Instalando o docker swarm

    • docker_swarm_install

    Fazendo o deploy da aplicação com docker-compose

    • deploy_with_docker

Atualmente somos em três desenvolvedores, e preciso que todos possam disparar o processo de atualização da máquina, ou seja o deploy da aplicação.

Em duas máquinas funcionam corretamente, entretanto numa terceira máquina quando chega no checkout "trava" o processo e não sai dele.

O arquivo de hosts está assim:

[all] ...

[all:vars] project_deploy_name="NOME_DO_PROJETO" ansible_user=root app_name=app app_user=app app_debug=True gunicorn_app_name=app github_owner="DONO_REPOSITORIO" github_repo="{{ project_deploy_name }}" github_token="TOKEN_DO_GITHUB" ssh_key_path="~/.ssh/ssh_deploy_key"



Já a role do checkout está assim configurada:

  • name: checkout project git: repo: "{{ project_repo }}" dest: "{{ project_path }}" key_file: "{{ ssh_key_path }}" accept_hostkey: true

1 resposta
solução!

Oi Afrânio, tudo bem?

Vou te dar uma ideia de soluções que você pode tentar como é algo pessoal do seu trabalho e não tenho muitos detalhes sobre.

  • Primeiro, veja se a máquina onde tá travando consegue se conectar ao repositório Git usando a chave SSH que você especificou (ssh_key_path). Tenta fazer a conexão SSH manualmente nessa máquina para ter certeza de que está tudo certo com as permissões e autenticação.
  • Confirma que a chave SSH está no lugar certo e com as permissões corretas.

Checa as configurações de variáveis e diretórios:

  • Garanta que todas as variáveis necessárias (como project_repo e project_path) estão definidas corretamente na máquina problemática.
  • Veja se o diretório de destino (project_path) existe e se você tem permissão para escrever nele.
  • Rode o playbook com o modo de depuração ativado para ver mais detalhes sobre onde o processo está parando.
  • Olhe os logs com cuidado para identificar qualquer mensagem de erro ou o ponto exato onde o processo tá travando.

Ambiente e Dependências:

  • Veja se todas as dependências (como Git) estão instaladas e configuradas corretamente na terceira máquina.
  • Observe se há alguma diferença na configuração de rede ou firewall que possa estar afetando a conectividade.
  • Revise as configurações do Ansible para garantir que não há nada ali que possa estar causando o travamento, como configurações de timeout ou reintentos.

Teste a role de modo isolado:

  • Tenta rodar a role checkout_project sozinha na terceira máquina para ver se o problema acontece mesmo fora do contexto do playbook completo. Crie um playbook de teste simples que execute apenas essa role.

  • Se a chave SSH está sendo compartilhada entre os desenvolvedores, confira se todos têm acesso adequado e se a chave não está sendo bloqueada por algum motivo de segurança.

Espero que te ajude e lembre você pode postar suas dúvidas no Discord da Alura também.

Um abraço e bons estudos.