Развернуть приложение из локального репозитория git

Развернуть приложение из локального репозитория git

Это двойной вопрос.

В сценариях, когда репозиторий git не является общедоступным, могу ли я выполнить развертывание с локальной машины (на которой также запущен Ansible) на удаленном хосте, используя локальную копию репозитория на моем жестком диске (или копию на главном сервере, например)?

Если ответ на предыдущий вопрос «да», используется ли для этой цели модуль git?

РЕДАКТИРОВАТЬ:

Что я уже попробовал:

Структура dir выглядит следующим образом:

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

В сборник входят:

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

Развертывание этого на Vagrant-ящике через SSH приводит к следующему:

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

решение1

gitМодуль Ansible использует собственный gitисполняемый файл для выполнения своих действий, поэтому вам нужно действовать так же, как и при ручных операциях.

  • Смонтируйте диск, содержащий репозиторий Git, на целевой машине.

    Это легко достижимо с помощью Vagrant, если вы сохраните репозиторий в каталоге, содержащем Vagrantfile(это может отличаться от вашего сценария — не совсем понимаю, что вы имеете в виду vagrant.yml).

    Vagrant по умолчанию монтирует этот каталог в /vagrantвиртуальной машине, поэтому для клонирования репозитория вам нужно будет использовать стандартный gitмодуль:

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

    Он клонирует репозиторий в /path/to/destination/repository.

  • Использовать Ansiblesynchronizeмодульдля отправки репозитория на целевую машину. Если единственной причиной клонирования является «развертывание приложения» без отправки обратно в исходный репозиторий, этого достаточно.

  • Наконец, вы можете предоставить общий доступ к репозиторию, используя любой из протоколов, поддерживаемых Git, например, SSH, HTTP, HTTPS, FTP, FTPS, rsync; или смонтировать каталог с помощью NFS (это эквивалентно первому методу).

Связанный контент