在ansible中部署时如何拉动

时间:2015-11-10 08:22:55

标签: git github ansible ansible-playbook

我使用Ansible进行配置管理,并使用以下任务克隆Git仓库:

# Example git checkout from Ansible Playbooks
- git: repo=git://foosball.example.org/path/to/repo.git
       dest=/srv/checkout
       version=release-0.22

这会克隆具有特定版本的仓库。

如果repo已经存在,它会在再次运行时执行git pull吗?或者它只是一直克隆回购?如果repo已经存在,如何在Ansible中执行git pull,如果repo存在,我们如何运行特定命令,如果第一次克隆repo,我们如何运行?

2 个答案:

答案 0 :(得分:13)

Ansible是一种声明性工具,您可以在其中描述您希望服务器/环境的外观以及Ansible尝试实现这一目标。它也被设计为idempotent,这意味着重新运行你的游戏应该每次重现相同的最终结果,只要下面没有任何变化。

git module也归于此,只是尝试确保远程主机上有repo以及您可选择要求的版本(或分支/标记)。

因此,当您在新环境中运行问题中的git任务时,它会将repo克隆到目标文件夹。在未来的运行中,回购已经存在,所以它只是做了一个git pull。

如果您为update属性指定了标记/分支/提交引用,那么它只会检查该版本并将其拉出来。

答案 1 :(得分:0)

这对我来说可以使用shell命令:

    else if (power < 0)
    {
        for (int i = 0; i > power; i--)
        {
            result = result*(1/(float) base);
        }
    }

我必须使用用户名和密码来指定远程URL,因为它会以简单的“ git pull”挂起。