如何使用Ansible拉子树

时间:2019-03-10 13:58:53

标签: git ansible

我正在写一个有趣的剧本来自动化git的东西。

我有这样的文件夹结构:

deploy
├── prj-1
├── prj-2
├── main-project

在main-project中,我有prj-1和prj-2作为git子树,用于在服务器上进行部署。所以看起来像这样:

main-project
├── src
   ├── prj-1
   ├── prj-2

我想写一个使用git pull更新主项目中所有子树的剧本。这是我到目前为止所写内容的简化版本:

 - name: update subtree
   git:
    repo: "git@bitbucket.org:X/prj-1.git"
    dest: "/home/ubuntu/main-project/src/prj-1"
    update: yes
    version: dev

这个带有一些调整的示例脚本对于部署内的项目来说效果很好,但是当我使用它来更新子树时,会产生此错误:

"fatal: destination path XXX already exists and is not an empty directory

据我所知,ansible git模块应该首先克隆项目,如果项目已经存在,请对其进行更新(这是我所需要的)。

那么更新子树的最佳方法是什么?

P.s:我不想更改项目结构。我们有不同的存储库,但要进行部署,我们使用main-project,其中包含内部的所有其他项目。

0 个答案:

没有答案