ansibleansible-2.x

How do I pass username and password while using Ansible Git module?


While doing clone, push or pull of a private git repository hosted internally (e.g. on a GitLab instance) with Ansible's Git module, how do I specify username and password to authenticate with the Git server?

I don't see any way to do this in the documentation.


Solution

  • You can use something like this:

    ---
    - hosts: all 
      gather_facts: no
      become: yes
      tasks:
        - name: install git package
          apt:
            name: git
    
        - name: Get updated files from git repository 
          git: 
            repo: "https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode | replace ('/', '%2f') }}@github.com/privrepo.git"
            dest: /tmp
    

    Note: {{ githubpassword | urlencode | replace ('/', '%2f') }} is used here to account for special characters. replace ('/', '%2f') is necessary because urlencode does not convert /.

    Then execute the following playbook:

    ansible-playbook -i hosts github.yml -e "githubuser=arbabname" -e "githubpassword=xxxxxxx"
    

    Note: Make sure you put the credentials in ansible vaults or pass it secure way