로컬 Git 저장소에서 애플리케이션 배포

로컬 Git 저장소에서 애플리케이션 배포

이것은 두 가지 질문입니다.

Git 리포지토리에 공개적으로 액세스할 수 없는 시나리오에서 내 하드 드라이브에 있는 리포지토리의 로컬 복사본(예: 마스터 서버의 복사본)을 사용하여 로컬 시스템(Ansible도 실행)에서 제거 호스트로 배포할 수 있나요? )?

이전 질문에 대한 대답이 '예'라면 git 모듈이 이 목적으로 사용됩니까?

편집하다:

내가 지금까지 시도한 것 :

디렉토리 구조는 다음과 같습니다.

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

플레이북에는 다음이 포함됩니다.

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

SSH를 통해 이를 vagrant box에 배포하면 다음과 같은 결과가 발생합니다.

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

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.

  • 앤서블 사용synchronize기준 치수저장소를 대상 머신에 푸시합니다. 복제의 유일한 이유가 원래 저장소로 푸시하지 않고 "애플리케이션 배포"라면 충분합니다.

  • 마지막으로 SSH, HTTP, HTTPS, FTP, FTPS, rsync와 같이 Git에서 지원하는 프로토콜 중 하나를 사용하여 리포지토리를 공유할 수 있습니다. 또는 NFS로 디렉토리를 마운트하십시오(이것은 첫 번째 방법과 동일합니다).

관련 정보