Implantar aplicativo do repositório git local

3

Esta é uma pergunta dupla.

Em cenários em que o repositório git não é publicamente acessível, posso implantar a partir de uma máquina local (que também executa Ansible) para remover um host usando a cópia local do repositório em meu disco rígido (ou uma cópia no servidor principal , por exemplo)?

Se a resposta para a pergunta anterior for sim, o módulo git é usado para essa finalidade?

EDITAR:

O que eu tentei até agora:

A estrutura dir da seguinte forma:

repo/
|-.git/
|-deploy/
| |-inventory
| |-roles/
| | \-app/
| |   \-main.yml
| \-vagrant.yml
\-src/

o manual contém:

- name: Clone local application
  git: repo={{ inventory_dir }}/../
       dest=/home/{{ application_name }}/code

Implementar isso em uma caixa vagrant via SSH resulta em:

fatal: [vagrant]: FAILED! => {
  "changed": false, 
  "cmd": "/usr/bin/git clone --origin origin path/to/repo", 
  "failed": true, 
  "msg": "Cloning into '/home/app/code'...\nfatal: 
  'path/to/repo' does not appear to be a git repository\nfatal: 
  Could not read from remote repository.\n\nPlease make sure you 
  have the correct access rights\nand the repository exists.", 
  ...}
    
por hayavuk 21.01.2017 / 13:19

1 resposta

2

O módulo Ansible git usa o executável nativo git para executar suas ações, portanto, você precisa continuar como faria com as operações manuais.

  • Monte o disco que contém o repositório Git na máquina de destino.

    Isto é facilmente conseguido com o Vagrant, se você mantiver o repositório sob o diretório contendo Vagrantfile (isso pode ser diferente do seu cenário - não tenho certeza do que você quer dizer com vagrant.yml ).

    O Vagrant monta esse diretório por padrão em /vagrant na máquina virtual, portanto, para clonar um repositório você usaria o módulo git padrão:

    - git:
        repo: /vagrant/path/to/source/repository
        dest: /path/to/destination
    

    Ele irá clonar o repositório para /path/to/destination/repository .

  • Use synchronize module responsável para enviar o repositório para a máquina de destino. Se a única razão para clonagem é "implantar aplicativo" sem voltar ao repositório original, é suficiente.

  • Finalmente, você pode compartilhar o repositório usando um dos protocolos suportados pelo Git, como SSH, HTTP, HTTPS, FTP, FTPS, rsync; ou monte o diretório com o NFS (isso é equivalente ao primeiro método).

por 21.01.2017 / 13:29