ansible.builtin.git (v2.8.11) — module

Deploy software (or files) from git checkouts

| "added in version" 0.0.1 of ansible.builtin"

Authors: Ansible Core Team, Michael DeHaan

preview | supported by core

Install Ansible via pip

Install with pip install ansible==2.8.11

Description

Manage I(git) checkouts of repositories to deploy files or software.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Example git checkout from Ansible Playbooks
- git:
    repo: 'https://foosball.example.org/path/to/repo.git'
    dest: /srv/checkout
    version: release-0.22
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Example read-write git checkout from github
- git:
    repo: git@github.com:mylogin/hello.git
    dest: /home/mylogin/hello
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Example just ensuring the repo checkout exists
- git:
    repo: 'https://foosball.example.org/path/to/repo.git'
    dest: /srv/checkout
    update: no
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Example just get information about the repository whether or not it has
# already been cloned locally.
- git:
    repo: 'https://foosball.example.org/path/to/repo.git'
    dest: /srv/checkout
    clone: no
    update: no
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Example checkout a github repo and use refspec to fetch all pull requests
- git:
    repo: https://github.com/ansible/ansible-examples.git
    dest: /src/ansible-examples
    refspec: '+refs/pull/*:refs/heads/*'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Example Create git archive from repo
- git:
    repo: https://github.com/ansible/ansible-examples.git
    dest: /src/ansible-examples
    archive: /tmp/ansible-examples.zip
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Example clone a repo with separate git directory
- git:
    repo: https://github.com/ansible/ansible-examples.git
    dest: /src/ansible-examples
    separate_git_dir: /src/ansible-examples.git

Inputs

    
bare:
    default: 'no'
    description:
    - if C(yes), repository will be created as a bare repo, otherwise it will be a standard
      repo with a workspace.
    type: bool
    version_added: '1.4'
    version_added_collection: ansible.builtin

dest:
    description:
    - The path of where the repository should be checked out. This parameter is required,
      unless C(clone) is set to C(no).
    required: true

repo:
    aliases:
    - name
    description:
    - git, SSH, or HTTP(S) protocol address of the git repository.
    required: true

clone:
    default: 'yes'
    description:
    - If C(no), do not clone the repository even if it does not exist locally
    type: bool
    version_added: '1.9'
    version_added_collection: ansible.builtin

depth:
    description:
    - Create a shallow clone with a history truncated to the specified number or revisions.
      The minimum possible value is C(1), otherwise ignored. Needs I(git>=1.9.1) to work
      correctly.
    version_added: '1.2'
    version_added_collection: ansible.builtin

force:
    default: 'no'
    description:
    - If C(yes), any modified files in the working repository will be discarded.  Prior
      to 0.7, this was always 'yes' and could not be disabled.  Prior to 1.9, the default
      was `yes`
    type: bool
    version_added: '0.7'
    version_added_collection: ansible.builtin

umask:
    description:
    - The umask to set before doing any checkouts, or any other repository maintenance.
    version_added: '2.2'
    version_added_collection: ansible.builtin

remote:
    default: origin
    description:
    - Name of the remote.

update:
    default: 'yes'
    description:
    - If C(no), do not retrieve new revisions from the origin repository
    - Operations like archive will work on the existing (old) repository and might not
      respond to changes to the options version or remote.
    type: bool
    version_added: '1.2'
    version_added_collection: ansible.builtin

archive:
    description:
    - Specify archive file path with extension. If specified, creates an archive file
      of the specified format containing the tree structure for the source tree. Allowed
      archive formats ["zip", "tar.gz", "tar", "tgz"]
    - This will clone and perform git archive from local directory as not all git servers
      support git archive.
    version_added: '2.4'
    version_added_collection: ansible.builtin

refspec:
    description:
    - Add an additional refspec to be fetched. If version is set to a I(SHA-1) not reachable
      from any branch or tag, this option may be necessary to specify the ref containing
      the I(SHA-1). Uses the same syntax as the 'git fetch' command. An example value
      could be "refs/meta/config".
    version_added: '1.9'
    version_added_collection: ansible.builtin

version:
    default: HEAD
    description:
    - What version of the repository to check out.  This can be the literal string C(HEAD),
      a branch name, a tag name. It can also be a I(SHA-1) hash, in which case C(refspec)
      needs to be specified if the given revision is not already available.

key_file:
    description:
    - Specify an optional private key file path, on the target host, to use for the checkout.
    version_added: '1.5'
    version_added_collection: ansible.builtin

ssh_opts:
    description:
    - Creates a wrapper script and exports the path as GIT_SSH which git then automatically
      uses to override ssh arguments. An example value could be "-o StrictHostKeyChecking=no"
      (although this particular option is better set via C(accept_hostkey)).
    version_added: '1.5'
    version_added_collection: ansible.builtin

recursive:
    default: 'yes'
    description:
    - if C(no), repository will be cloned without the --recursive option, skipping sub-modules.
    type: bool
    version_added: '1.6'
    version_added_collection: ansible.builtin

reference:
    description:
    - Reference repository (see "git clone --reference ...")
    version_added: '1.4'
    version_added_collection: ansible.builtin

executable:
    description:
    - Path to git executable to use. If not supplied, the normal mechanism for resolving
      binary paths will be used.
    version_added: '1.4'
    version_added_collection: ansible.builtin

verify_commit:
    default: 'no'
    description:
    - if C(yes), when cloning or checking out a C(version) verify the signature of a GPG
      signed commit. This requires C(git) version>=2.1.0 to be installed. The commit MUST
      be signed and the public key MUST be present in the GPG keyring.
    type: bool
    version_added: '2.0'
    version_added_collection: ansible.builtin

accept_hostkey:
    default: 'no'
    description:
    - if C(yes), ensure that "-o StrictHostKeyChecking=no" is present as an ssh option.
    type: bool
    version_added: '1.5'
    version_added_collection: ansible.builtin

separate_git_dir:
    description:
    - The path to place the cloned repository. If specified, Git repository can be separated
      from working tree.
    version_added: '2.7'
    version_added_collection: ansible.builtin

track_submodules:
    default: 'no'
    description:
    - if C(yes), submodules will track the latest commit on their master branch (or other
      branch specified in .gitmodules).  If C(no), submodules will be kept at the revision
      specified by the main project. This is equivalent to specifying the --remote flag
      to git submodule update.
    type: bool
    version_added: '1.8'
    version_added_collection: ansible.builtin

Outputs

after:
  description: last commit revision of the repository retrieved during the update
  returned: success
  sample: 4c020102a9cd6fe908c9a4a326a38f972f63a903
  type: str
before:
  description: commit revision before the repository was updated, "null" for new repository
  returned: success
  sample: 67c04ebe40a003bda0efb34eacfb93b0cafdf628
  type: str
git_dir_before:
  description: Contains the original path of .git directory if it's changed
  returned: success
  sample: /path/to/old/git/dir
  type: str
git_dir_now:
  description: Contains the new path of .git directory if it's changed
  returned: success
  sample: /path/to/new/git/dir
  type: str
remote_url_changed:
  description: Contains True or False whether or not the remote URL was changed.
  returned: success
  sample: true
  type: bool
warnings:
  description: List of warnings if requested features were not available due to a
    too old git version.
  returned: error
  sample: Your git version is too old to fully support the depth argument. Falling
    back to full checkouts.
  type: str