Назад | Перейти на главную страницу

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

Это двоякий вопрос.

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

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

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

Что я пробовал до сих пор:

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

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

playbook содержит:

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

Развертывание этого в бродячем боксе через 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.", 
  ...}

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

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

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

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

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

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

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

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