Anwendung aus lokalem Git-Repository bereitstellen

Anwendung aus lokalem Git-Repository bereitstellen

Dies ist eine Frage mit zwei Aspekten.

Kann ich in Szenarien, in denen das Git-Repository nicht öffentlich zugänglich ist, von einem lokalen Computer (auf dem auch Ansible ausgeführt wird) auf einem Remote-Host bereitstellen, indem ich die lokale Kopie des Repositorys auf meiner Festplatte (oder beispielsweise eine Kopie auf dem Master-Server) verwende?

Wenn die Antwort auf die vorherige Frage „Ja“ lautet: Wird das Git-Modul für diesen Zweck verwendet?

BEARBEITEN:

Was ich bisher versucht habe:

Die Verzeichnisstruktur ist wie folgt:

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

Das Spielbuch enthält:

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

Das Bereitstellen auf einer Vagrant-Box über SSH führt zu:

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.", 
  ...}

Antwort1

Das Ansible- gitModul verwendet zur Ausführung seiner Aktionen native gitausführbare Dateien. Sie müssen daher wie bei manuellen Vorgängen vorgehen.

  • Mounten Sie die Festplatte mit dem Git-Repository auf dem Zielcomputer.

    Dies lässt sich mit Vagrant problemlos erreichen, wenn Sie das Repository in dem Verzeichnis aufbewahren, das enthält Vagrantfile(dies kann in Ihrem Szenario anders sein – ich bin nicht sicher, was Sie damit meinen vagrant.yml).

    Vagrant mountet dieses Verzeichnis standardmäßig in /vagrantder virtuellen Maschine. Um ein Repository zu klonen, verwenden Sie daher das Standardmodul git:

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

    Das Repository wird nach geklont /path/to/destination/repository.

  • Ansible verwendensynchronizeModulum das Repository auf den Zielcomputer zu übertragen. Wenn der einzige Grund für das Klonen darin besteht, die Anwendung bereitzustellen, ohne sie zurück in das ursprüngliche Repository zu übertragen, ist dies ausreichend.

  • Schließlich können Sie das Repository mit einem der von Git unterstützten Protokolle wie SSH, HTTP, HTTPS, FTP, FTPS, rsync freigeben oder das Verzeichnis mit NFS mounten (dies entspricht der ersten Methode).

verwandte Informationen