簡體   English   中英

如何使用ansible從本地git存儲庫克隆到虛擬機

[英]How to clone from a local git repository to a vm using ansible

我有一個本地git存儲庫,正在嘗試將其克隆到無業游民的計算機上。 我正在嘗試使用ansible的“ git”模塊執行此操作,我有以下任務,

- name: Clone repository
  git: repo=git://../.git dest=/home/vagrant/source accept_hostkey=True

運行此任務時,我收到錯誤消息,

failed: [webserver] => {"cmd": "/usr/bin/git ls-remote git://../.git -h refs/heads/HEAD", "failed": true, "rc": 128}
stderr: fatal: unable to connect to ..:
..[0: 42.185.229.96]: errno=Connection timed out

msg: fatal: unable to connect to ..:
..[0: 42.185.229.96]: errno=Connection timed out

FATAL: all hosts have already failed -- aborting

似乎正在嘗試在我的VM而不是本地計算機上找到存儲庫? 如何從本地存儲庫克隆?

git模塊完全在VM內部執行-您必須為其提供VM可以訪問的路徑。 與您的主機做一個無用的NFS共享/同步文件夾,或者通過http / ssh通過網絡將其公開給VM。 請注意,與Virtualbox(以及可能的其他提供程序)一起流浪的非NFS共享文件夾只是來回復制副本,而不是真正的“共享”(即,取決於存儲庫的大小,如果不是NFS,您可能會感到遺憾)。

git命令將從遠程計算機(在這種情況下為您的Vagrant VM)而非本地計算機上運行。

一種方法是通過SSH遠程端口轉發。 您可以將連接從遠程(Vagrant VM)上的端口轉發到本地計算機上的主機+端口。

您的本地計算機需要使git存儲庫可用。 可以通過sshd完成,但是我將使用相對模糊的git-daemon ,因為它更易於設置。

在您的Ansible庫存文件中,將以下選項添加到Vagrant VM主機中。 在連接期間,這會將請求從端口9418上的遠程計算機轉發到端口9418上的本地計算機(git-daemon)。

# inventory
webserver ansible_ssh_extra_args="-R 9418:localhost:9418"

# *OR* for a group of hosts
[webservers:vars]
ansible_ssh_extra_args="-R 9418:localhost:9418"

對於此示例,我將假設您本地計算機上的GIT_DIR位於/home/you/repos/your-git-repo/.git 在運行Ansible劇本之前,請在另一個終端上啟動以下命令(如果要查看輸出,請添加--verbose選項):

git daemon \
    --listen=127.0.0.1 \
    --export-all \
    --base-path=/home/you/repos \
    /home/you/repos/your-git-repo/.git

您的任務將如下所示:

- git: repo=git://localhost/your-git-repo dest=/home/vagrant/source

現在,當git連接到本地主機(相對於Vagrant VM)時,請求將轉發到在本地計算機上運行的git守護程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM