Esta es una pregunta doble.
En escenarios donde el repositorio git no es de acceso público, ¿puedo implementar desde una máquina local (que también ejecuta Ansible) en un host eliminado usando la copia local del repositorio en mi disco duro (o una copia en el servidor maestro, por ejemplo? )?
Si la respuesta a la pregunta anterior es sí, ¿se utiliza el módulo git para este fin?
EDITAR:
Lo que he probado hasta ahora:
La estructura del directorio es la siguiente:
repo/
|-.git/
|-deploy/
| |-inventory
| |-roles/
| | \-app/
| | \-main.yml
| \-vagrant.yml
\-src/
El libro de jugadas contiene:
- name: Clone local application
git: repo={{ inventory_dir }}/../
dest=/home/{{ application_name }}/code
Implementar esto en una caja vagabunda a través de SSH da como resultado:
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.",
...}
Respuesta1
El módulo Ansible git
utiliza git
un ejecutable nativo para realizar sus acciones, por lo que debe proceder como lo haría con las operaciones manuales.
Monte el disco que contiene el repositorio de Git en la máquina de destino.
Esto se puede lograr fácilmente con Vagrant, si mantiene el repositorio en el directorio que lo contiene
Vagrantfile
(esto puede ser diferente a su escenario; no estoy seguro de lo que quiere decir convagrant.yml
).Vagrant monta este directorio de forma predeterminada en
/vagrant
una máquina virtual, por lo que para clonar un repositorio usarías elgit
módulo estándar:- git: repo: /vagrant/path/to/source/repository dest: /path/to/destination
Clonará el repositorio a
/path/to/destination/repository
.Usar Ansible
synchronize
módulopara enviar el repositorio a la máquina de destino. Si el único motivo para la clonación es "implementar la aplicación" sin volver al repositorio original, es suficiente.Finalmente puedes compartir el repositorio usando cualquiera de los protocolos soportados por Git, como SSH, HTTP, HTTPS, FTP, FTPS, rsync; o montar el directorio con NFS (esto es equivalente al primer método).