Esta é uma questão dupla.
Em cenários onde o repositório git não é acessível publicamente, posso implantar de uma máquina local (que também executa Ansible) para um host de remoção usando a cópia local do repositório no meu disco rígido (ou uma cópia no servidor mestre, por exemplo )?
Se a resposta à pergunta anterior for sim, o módulo git é utilizado para esse fim?
EDITAR:
O que eu tentei até agora:
A estrutura dir é a seguinte:
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
Implantar 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.",
...}
Responder1
O módulo Ansible git
usa git
executável nativo para executar suas ações, então você precisa proceder como faria com operações manuais.
Monte o disco que contém o repositório Git na máquina de destino.
Isso é facilmente alcançável com o Vagrant, se você mantiver o repositório no diretório que contém
Vagrantfile
(isso pode ser diferente do seu cenário - não tenho certeza do que você quer dizer comvagrant.yml
).O Vagrant monta este diretório por padrão
/vagrant
na máquina virtual, então para clonar um repositório você usaria ogit
módulo padrão:- git: repo: /vagrant/path/to/source/repository dest: /path/to/destination
Ele clonará o repositório para
/path/to/destination/repository
.Usar Ansible
synchronize
módulopara enviar o repositório para a máquina de destino. Se o único motivo para a clonagem for "implantar o aplicativo" sem retornar ao repositório original, isso será suficiente.Finalmente você pode compartilhar o repositório usando qualquer um dos protocolos suportados pelo Git, como SSH, HTTP, HTTPS, FTP, FTPS, rsync; ou monte o diretório com NFS (isso é equivalente ao primeiro método).