ansible.builtin.git 模块 – 从 Git 检出部署软件(或文件)
注意
此模块是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,您也可以使用简短的模块名称 git
。但是,我们建议您使用 完全限定的集合名称 (FQCN) ansible.builtin.git
,以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合冲突。
摘要
管理git存储库的检出以部署文件或软件。
需求
以下需求在执行此模块的主机上是必需的。
git>=1.7.1(命令行工具)
参数
参数 |
注释 |
---|---|
将确保或不确保“ -o StrictHostKeyChecking=no”作为 ssh 选项存在。 请注意,这会禁用针对中间人攻击的保护。 使用 OpenSSH >= 7.5 的用户可能希望将 选项
|
|
从 OpenSSH 7.5 开始,可以使用“-o StrictHostKeyChecking=accept-new”,它更安全,并且只接受不存在或相同的密钥。如果为 选项
|
|
指定带有扩展名的存档文件路径。如果指定,则会创建包含源树树结构的指定格式的存档文件。允许的存档格式 [“zip”、“tar.gz”、“tar”、“tgz”]。 这将从本地目录克隆并执行 git archive,因为并非所有 git 服务器都支持 git archive。 |
|
指定要在存档中添加到每个文件路径的前缀。需要指定 |
|
如果为 选项
|
|
如果为 选项
|
|
创建一个浅克隆,其历史记录被截断为指定的修订次数。最小可能值为 |
|
要使用的 git 可执行文件的路径。如果未提供,则将使用解析二进制路径的常规机制。 |
|
如果为 选项
|
|
要与 GPG 签名提交的指纹进行比较的可信 GPG 指纹列表。 仅当 由于此功能依赖于 git 的 别名 别名 默认值: |
|
指定目标主机上可选的私钥文件路径,用于检出。 这确保 |
|
如果 选项
|
|
参考仓库(参见“git clone –reference …”。) |
|
添加要获取的额外 refspec。如果 version 设置为任何分支或标签都无法访问的 *SHA-1*,则可能需要此选项来指定包含 *SHA-1* 的 ref。使用与 |
|
远程名称。 默认值: |
|
git、SSH 或 HTTP(S) 协议的 git 仓库地址。 |
|
放置克隆仓库的路径。如果指定,则 Git 仓库可以与工作树分开。 |
|
仅克隆到指定修订版本顶端的历史记录。 选项
|
|
git 将在用作协议时传递给 ssh 的选项,它通过 对于较旧的版本,它会将 其他选项可以添加到此列表中,例如 例如值为“ -o StrictHostKeyChecking=no”(尽管此特定选项最好由 该模块确保始终存在 ‘BatchMode=yes’ 以避免提示。 |
|
如果 选项
|
|
在进行任何检出或任何其他存储库维护之前要设置的 umask。 |
|
如果 像 archive 这样的操作将在现有的(旧的)存储库上工作,并且可能不会响应对 version 或 remote 选项的更改。 选项
|
|
如果 选项
|
|
要检出的存储库版本。这可以是文字字符串 默认值: |
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在 check_mode 下运行并返回更改状态预测,而无需修改目标,如果不受支持,则将跳过操作。 |
|
支持:完全支持 |
在 diff 模式下,将返回有关已更改内容(或可能需要在 check_mode 下更改的内容)的详细信息 |
|
平台: posix |
可以对其进行操作的目标操作系统/系列 |
备注
注意
如果任务似乎挂起,首先验证远程主机是否在
known_hosts
中。SSH 将提示用户授权与远程主机的首次联系。为了避免此提示,一种解决方案是使用 accept_hostkey 选项。另一种解决方案是在调用 git 模块之前,使用以下命令将远程主机公钥添加到/etc/ssh/ssh_known_hosts
中:ssh-keyscan -H remote_host.com >> /etc/ssh/ssh_known_hosts。
示例
- name: Git checkout
ansible.builtin.git:
repo: 'https://foosball.example.org/path/to/repo.git'
dest: /srv/checkout
version: release-0.22
- name: Read-write git checkout from github
ansible.builtin.git:
repo: [email protected]:mylogin/hello.git
dest: /home/mylogin/hello
- name: Just ensuring the repo checkout exists
ansible.builtin.git:
repo: 'https://foosball.example.org/path/to/repo.git'
dest: /srv/checkout
update: no
- name: Just get information about the repository whether or not it has already been cloned locally
ansible.builtin.git:
repo: 'https://foosball.example.org/path/to/repo.git'
dest: /srv/checkout
clone: no
update: no
- name: Checkout a github repo and use refspec to fetch all pull requests
ansible.builtin.git:
repo: https://github.com/ansible/ansible-examples.git
dest: /src/ansible-examples
refspec: '+refs/pull/*:refs/heads/*'
- name: Create git archive from repo
ansible.builtin.git:
repo: https://github.com/ansible/ansible-examples.git
dest: /src/ansible-examples
archive: /tmp/ansible-examples.zip
- name: Clone a repo with separate git directory
ansible.builtin.git:
repo: https://github.com/ansible/ansible-examples.git
dest: /src/ansible-examples
separate_git_dir: /src/ansible-examples.git
- name: Example clone of a single branch
ansible.builtin.git:
repo: https://github.com/ansible/ansible-examples.git
dest: /src/ansible-examples
single_branch: yes
version: master
- name: Avoid hanging when http(s) password is missing
ansible.builtin.git:
repo: https://github.com/ansible/could-be-a-private-repo
dest: /src/from-private-repo
environment:
GIT_TERMINAL_PROMPT: 0 # reports "terminal prompts disabled" on missing password
# or GIT_ASKPASS: /bin/true # for git before version 2.3.0, reports "Authentication failed" on missing password
返回值
常用返回值已在 此处 记录,以下是此模块特有的字段
键 |
描述 |
---|---|
更新期间检索到的存储库的最后一次提交修订版本。 返回:成功 示例: |
|
存储库更新之前的提交修订版本,“null”表示新存储库。 返回:成功 示例: |
|
如果 .git 目录的路径已更改,则包含其原始路径。 返回:成功 示例: |
|
如果 .git 目录的路径已更改,则包含其新路径。 返回:成功 示例: |
|
包含 True 或 False,指示远程 URL 是否已更改。 返回:成功 示例: |
|
如果由于 git 版本过旧而导致请求的功能不可用,则会列出警告。 返回:错误 示例: |