Implementar la aplicación desde el repositorio git local

Implementar la aplicación desde el repositorio git local

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 gitutiliza gitun 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 con vagrant.yml).

    Vagrant monta este directorio de forma predeterminada en /vagrantuna máquina virtual, por lo que para clonar un repositorio usarías el gitmódulo estándar:

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

    Clonará el repositorio a /path/to/destination/repository.

  • Usar Ansiblesynchronizemó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).

información relacionada