![](/img/trans.png)
[英]How to clone git repository using ansible under microsoft windows
[英]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.