如何在 ansible 中部署时拉取

How to pull while deployment in ansible

我正在使用 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

这将克隆具有特定版本的存储库。

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

Ansible 是一种声明性工具,您可以在其中描述您希望 server/environment 的外观,而 Ansible 会尝试实现这一目标。它也被设计为 idempotent,这意味着重新 运行 你的剧本每次都应该重现相同的最终结果,只要下面没有任何改变。

git module 也归因于此,只是试图确保远程主机上有 repo 以及您选择要求的版本(或 branch/tag)。

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

如果您指定 tag/branch/commit 对 update 属性 的引用,那么它将简单地检查该版本并将其拉出。

这对我有用 shell 命令:

- hosts: myserver
  become: yes
  tasks:
  - name: pull changes
    shell: chdir=/path/whereis/myrepo git pull https://mygituser:mypassword@bitbucket.org/company/myrepo.git master

我必须使用用户名和密码指定远程 url,因为它挂起简单 "git pull"。